본문 바로가기
Data/ELK

[2021.03.23] 인턴 + 22 logstash & mysql 연동

by injekim97 2021. 3. 23.
반응형

[2021.03.23] 인턴 + 22 logstash & mysql 연동

 

 

stackoverflow.com/questions/66756620/how-can-you-solve-the-mysql-connection-error-with-logstash

 

How can you solve the mysql connection error with logstash?

How can you solve the mysql connection error with logstash? I tried all the information in Google. However, it continues to fail, leaving questions in the stack overflow. Please help me. file name :

stackoverflow.com

-> 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이라고 테이블명을 사용했다.

 

 

---------------------------------------------------------------------------------------------------------

mysql-connector-java-8.0.23.zip
4.59MB

하면서 느낀점

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;

 

반응형

댓글