뚜sh뚜sh

[Logstash] 로그스태시의 input으로 jdbc 플러그인 사용하기 본문

Elasticsearch

[Logstash] 로그스태시의 input으로 jdbc 플러그인 사용하기

뚜sh뚜sh 2024. 11. 14. 16:36

1. JDBC 플러그인 설치

내가 설치한 logstash-8.16.0은 jdbc 플러그인이 포함되어 있어서 따로 설치할 필요 없었다!

 

 

logstash에 jdbc 플러그인이 포함되어 있는지 확인하는 방법

- 아래 명령어를 실행했을 때 목록에 logstash-input-jdbc가 포함되어 있는지 확인하면 됨

/path/to/logstash/bin/logstash-plugin list

 

 

 

2. JDBC 드라이버 준비

jdbc 플러그인은 데이터베이스에 연결하기 위해 JDBC 드라이버가 필요했다

나는 MySQL에 연결할 예정이어서 MySQL JDBC 드라이버를 설치했다

 

 

 

3. 로그스태시 설정 파일(logstash.conf)

input {
  jdbc {
        jdbc_driver_library => "path/to/logstash-8.16.0/lib/mysql-connector-j-9.1.0/mysql-connector-j-9.1.0.jar"
        jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
        jdbc_connection_string => [jdbc_url]
        jdbc_user => [username]
        jdbc_password => [password]

        statement => "SELECT * FROM book WHERE CONVERT_TZ(updated_at, '+09:00', '+00:00') > :sql_last_value"
        schedule => "*/1 * * * *"

        # 증분 추적을 위한 설정
        use_column_value => true
        tracking_column => "updated_at"
        tracking_column_type => "timestamp"
        last_run_metadata_path => "/path/to/logstash-8.16.0/last_run_metadata" 
    }
}

output {
  stdout { 
      codec => "rubydebug"
  }
  elasticsearch {
      hosts => [[elasticsearch url]]
      index => [index name]
      document_id => "%{book_id}"
      user => [user]
      password => [password]
  }
}

- jdbc_driver_library: 데이터베이스에 접근하기 위해 필요한 JDBC 드라이버 파일의 경로

- jdbc_driver_class: 사용할 JDBC 드라이버의 클래스 이름

- jdbc_connection_string: 데이터베이스에 연결하기 위한 JDBC URL

- jdbc_user / jdbc_password: 데이터베이스에 접근하기 위한 사용자 이름과 비밀번호

- statement: 주기적으로 실행할 SQL 쿼리, 여기서 :sql_last_value는 마지막 실행 이후 변경된 데이터를 가져오는 데 사용

- schedule: 쿼리를 실행할 주기, 여기서 매 1분마다 쿼리를 실행

- last_run_metadata_path: Logstash가 마지막 실행 시간을 기록하는 파일 경로

 

 

 

4. logstash.yml

config.reload.automatic: true

설정 파일이 변경될 때 자동으로 리로드하도록 설정한다.

 

sudo systemctl restart logstash

logstash 서비스를 재시작하여 설정이 반영되도록 한다.

Comments