개발공부/Elasticsearch

[EKL] logstash와 Mysql 연동하기

차나니 2024. 4. 24. 16:12

시스템환경

OS version : MacOS sonoma

logstash version : 7.17.3

mysql version: 8.2.0

logstash 설치하기

저는 local 환경에서 진행한 점 참고 부탁드리며, elasticsearch와 kibana가 설치가 안되어있다면 여기서 게시글을 보고 먼저 다운 받아주세요 !

먼저 logstash를 설치하기 위해 아래 사이트를 통해 알맞은 버전으로 다운로드 받아줍니다.

이후 tar.gz파일의 압축을 풀어줍니다.

 

Download Logstash Free | Get Started Now

Download Logstash or the complete Elastic Stack (formerly ELK stack) for free and start collecting, searching, and analyzing your data with Elastic in minutes....

www.elastic.co

 

MySQL Connector 파일 다운받기

아래의 경로를 통해 사용 중인 MySQL의 버전과 맞게 다운 받아주세요 !

 

MySQL :: Download Connector/J

MySQL Connector/J is the official JDBC driver for MySQL. MySQL Connector/J 8.0 and higher is compatible with all MySQL versions starting with MySQL 5.7. Additionally, MySQL Connector/J 8.0 and higher supports the new X DevAPI for development with MySQL Ser

dev.mysql.com

이후 .jar파일을 아래의 경로에 넣어줍니다 !

logstash-7.17.3/logstash-core/lib/jars

 

logstash.conf 파일 설정하기

logstash-7.17.3/config

 

상단의 경로로 이동했을 때 logstash.conf 파일이 안보이더라구요...? 그래서 해당 파일을 하나 생성한 뒤 아래와 같이 설정해주었습니다.

 

input {
   jdbc {
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_driver_library => "/Users/ichanhan/Desktop/coding/tools/logstash-7.17.3/logstash-core/lib/jars/mysql-connector-j-8.2.0.jar"
    jdbc_connection_string => "jdbc:mysql://localhost:3306/TheJapen?serverTimezone=Asia/Seoul"
    jdbc_user => "DBUSER"
    jdbc_password => "DBPASSWORD"
    statement => "SELECT * FROM word ORDER BY word_num"
    use_column_value => true
    record_last_run => true
    tracking_column => "word_num"
    clean_run => true
    schedule => "*/3 * * * *"
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "word"
    document_id => "%{word_num}"
  }
}

 

설정파일의 역할

설정 내용들의 역할 설명에 앞서 우선저는 filter를 사용하지 않은 점 참고 부탁드리겠습니다.

 

input : logstash에서 데이터를 수집하기 위한 정보를 등록합니다.  (sql이외에 csv 등 다양하게 이용할 수 있습니다.)

jdbc : logstash가 Mysql에 연결하기 위한 JDBC를 설정합니다.

jdbc_driver_class : 사용할 JDBC 드라이버 클래스를 정의합니다.

jdbc_driver_library : JDBC 드라이버 JAR 파일의 경로를 지정합니다.

jdbc_connection_string : JDBC를 통해 연결할 데이터베이스의 연결 문자열을 지정합니다.

jdbc_user와 jdbc_password : 데이터베이스에 연결할 때 사용할 사용자 이름과 비밀번호를 지정합니다.

statement : 실행할 SQL 쿼리를 지정합니다.

use_column_value : 컬럼 값을 사용하여 변경 사항을 추적할지 여부를 지정합니다.

record_last_run : 마지막 실행 시간을 기록할지 여부를 지정합니다.

tracking_column : 변경 사항을 추척할 컬럼을 지정합니다.

clean_run : logstash 시작 시 이전 실행 기록을 제거할지 여부를 지정합니다.

schedule : 실행 스케줄을 cron 표현식으로 지정합니다. (설정해 놓은건 3분마다 한번씩 갱신)

jdbc_fetch_size : 각 쿼리에서 한 번에 가져올 행의 수를 지정합니다.

 

output : 수집한 데이터를 전달하기 위한 정보를 등록합니다.

elasticsearch : elasticsearch로 데이터를 전달하기 위해 정보를 등록합니다.

hosts : elasticsearch 클러스터의 호스트를 지정합니다.

index : elasticsearch에 색인될 인덱스 이름을 지정합니다.

document_id : elasticsearch에 저장될 문서의 ID를 지정합니다.

 

logstash 실행하기

logstash폴더로 접속한 뒤 아래 명령어를 통해 실행할 수 있습니다 !!

./bin/logstash -f config/logstash.conf