[2021.03.23] 인턴 + 22 logstash & mysql 연동
stackoverflow.com/questions/66756620/how-can-you-solve-the-mysql-connection-error-with-logstash
-> logstash & mysql 연동할 때, 구글링을 많이했지만 해결하지 못하여 stackoverflow에 질문을 올렸다.
file name: mysql.conf
input {
jdbc {
clean_run => true
jdbc_driver_library => "C:\ElasticSearch\mysql-connector-java-8.0.23\mysql-connector-java-8.0.23.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://localhost:3306/jobschema"
jdbc_user => "root" (mysql ID)
jdbc_password => "1234" (mysql PASSWORD)
schedule => "* * * * *"
statement => "select jobid, jobname, executiontime, jobstatus from logstashplugin WHERE jobid > :sql_last_value"
use_column_value => true
tracking_column => "jobid"
}
}
output{
elasticsearch {
hosts => ["localhost:9200"]
index => "logstashmysql" (logstash에 저장 되는 인덱스 명)
}
stdout {
codec => rubydebug
}
}
-------------------------------------------------------------------------------------------
logstash 와 mysql를 연동하기 위해선, 위에서 작성한 것을 파일명.conf로 저장해야 한다.
vs code 에서 파일을 만든 후, logstash.bat과 같은 경로(C:\ElasticSearch\logstash-7.11.2\bin)에 넣어줬다.
파일명.conf(본인은 mysql.conf 로 설정)
★★★★★ conf 파일을 열어서 꼭 수정해야 할 것 ★★★★★
* jdbc_driver_library => "C:\ElasticSearch\mysql-connector-java-8.0.23\mysql-connector-java-8.0.23.jar"
-> mysql 에서 conncector-J 최신버전 설치 후, 압축 풀어서 해당 경로 지정
* jdbc_connection_string => "jdbc:mysql://localhost:3306/jobschema"
-> jobschema 자리가 database 에서 schema를 만들 때, 스키마명 이다. ("jdbc:mysql://localhost:3306/만들 스키마명")
* jdbc_user => "root" (mysql에서 설정한 ID)
* jdbc_password => "1234" (mysql에서 설정한 PASSWORD)
* statement => "select jobid, jobname, executiontime, jobstatus from logstashplugin WHERE jobid > :sql_last_value"
-> database에서, table를 만들 때, from이 데이터베이스 테이블명이랑 일치 해야한다. 여기선, logstashplugin이라고 테이블명을 사용했다.
---------------------------------------------------------------------------------------------------------
하면서 느낀점
logstash와 mysql를 연동하면서, 처음에 JDBC여서 자바 데이터베이스를 따로 설치 해야 하는 줄 알았다. 하지만, 설치를 안해도 되고, 그냥 mysql에서 제공해주는 connector-J를 받아서 logstash와 연동(파일명.conf를 만들어 호출) 해주면 되는 것이다.
-> 위의 에러 사진 3장은 파일명.conf(mysql.conf) 내용 중 jdbc_password => "1234" (mysql에서 설정한 PASSWORD)를 jdbc_pass => "1234"로 지정해서 발생 한 오류 메세지 들이다.
꼭, * jdbc_password => "1234" 로 지정 해주자. ( jdbc_pass => "1234"는 에러메세지 발생)
-> 또한, statement => "select jobid, jobname, executiontime, jobstatus from logstashplugin WHERE jobid > :sql_last_value"
-> database에서, table를 만들 때, from이 데이터베이스 테이블명이랑 일치하지 않아서 에러 메세지가 발생했다.
꼭 일치시켜주자.
-------------------------------------------------------------------------------------------------------------
자 파일명.conf(mysql.conf)를 제대로 수정 했으니, 이제 logstash와 mysql 연동을 실습 해보자.
0. elasticsearch, kibana (관리자 권한) cmd 각각 실행
-> elasticsearch은 해당 경로에서 elasticsearch.bat
-> kibana도 해당 경로에서 kibana.bat
1. 스키마 및 데이터 베이스 생성
-> mysql 명령프롬포트를 열어서, 스키마 및 데이터 베이스 생성 (밑에 DB TEST값 복붙 해서 사용)
2. logstash (관리자 권한) cmd 각각 실행(단, 앞에서 elasticsearch, kibana (관리자 권한) cmd 각각 실행되어 있어야 함)
-> logstash.bat이 있는 경로 즉, C:\ElasticSearch\logstash-7.11.2\bin 로 관리자 권한 cmd 경로 이동 후,
명령어 logstash -f mysql.conf (logstash와 mysql.conf 같은경로로 지정)
3. kibana 접속 후(localhost:5601)
-> 검색(search) 창에 -> index paatens -> create index pattern -> index => "logstashmysql" 로 저장되어있음. logstashmysql 로 똑같이 친 후 -> 자기가 원하는 sql명으로 적으면 됨.
-> step 2 에서 Time field: '@timestamp'로 지정 후, 만들면 다음 페이지로 넘어가진다.
* kibana discover 기능
-> 화살표 클릭시, 상세정보 보기 가능(table 형태와 , json 형태)
* char 표시(표)
discover -> Aggregation based -> Vertical bar
-> 형광펜으로 칠한 부분, select 후 update 클릭 하면 char(표) 그려짐
-----------------------------------------DB TEST 값 -------------------------------------
mysql> create schema jobschema;
Query OK, 1 row affected (0.01 sec)
mysql> create table jobschema.logstashplugin(
-> jobid integer,
-> jobname varchar(45),
-> executiontime integer,
-> jobstatus varchar(45)
-> );
Query OK, 0 rows affected (0.07 sec)
insert into jobschema.logstashplugin values (1,"job1",10,"Completed");
insert into jobschema.logstashplugin values (2,"job2",15,"Failed");
insert into jobschema.logstashplugin values (3,"job3",10,"Failed");
insert into jobschema.logstashplugin values (4,"job4",30,"Failed");
insert into jobschema.logstashplugin values (5,"job5",10,"Failed");
insert into jobschema.logstashplugin values (6,"job6",15,"Failed");
insert into jobschema.logstashplugin values (7,"job7",15,"Completed");
mysql> select * from jobschema.logstashplugin;
'Data > ELK' 카테고리의 다른 글
[2021.03.26] 인턴 +25 logstash filter 기능(사용법) (0) | 2021.03.26 |
---|---|
[2021.03.24] 인턴 + 23 파일 비트란?(설치 및 실습 포함) (0) | 2021.03.24 |
[2021.03.24] 인턴 + 23 CSV 데이터 -> kibana 사용(실습) (0) | 2021.03.24 |
[2021.03.23] 인턴 + 22 MySQL Workbench 설치 방법 및 csv파일을 DB에 저장하는 방법?(+Editplus, 공공데이터 csv 파일 다운 방법) (0) | 2021.03.23 |
[2021.03.22] 인턴 + 21 일래스틱서치(ELK) 설치 (0) | 2021.03.22 |
댓글