[Elasticsearch] jdbc 연결하기

Category: Elasticsearch | January 12, 2016

엘라스틱 서치가 2.0으로 넘어오면서 jdbc연결을 도와주던 river라는 플러그인은 제거 되었다.
공홈에서는 logstash 의 jdbc 플러그인을 이용하여 사용하는 것을 추천하고 있다.

엘라스틱서치에 쌓이는 과정

logstash 실행 -> logstash jdbc연결 -> 쿼리날림 -> 로그발생 -> 엘라스틱서치에 기록

1. logstash 설치

( 2016.01.12일 현재 최신버전임)

$ wget https://download.elastic.co/logstash/logstash/logstash-2.1.1.tar.gz
$ tar xvzf logstash/logstash-2.1.1.tar.gz
$ cd logstash-2.1.1
$ vim logstash.conf
input {
        stdin {}
}
output {
        elasticsearch {
                hosts => ["localhost:9200"]
        }
        stdout {
                codec => rubydebug
        }
}
$ bin/logstash -f logstash-simple.conf --configtest

이상 없으면 2번 으로 고고~

2. logstash jdbc 연결

jdbc에 사용할 jar파일을 따로 제공하지 않기 때문에 별도로 구해야 한다.
여기서는 river github에서 구하였다.

$ bin/plugin list jdbc  // jdbc 확인
$ bin/plugin install logstash-input-jdbc
$ wget http://xbib.org/repository/org/xbib/elasticsearch/importer/elasticsearch-jdbc/2.1.1.2/elasticsearch-jdbc-2.1.1.2-dist.zip

$ sudo apt-get install unzip
$ cp elasticsearch-jdbc-2.1.1.2/lib/mysql-connector-java-5.1.33.jar lib/
$ ls -al lib/*.jar  // 파일이 있는지 확인

3. logstash conf 파일 생성

$ vim logstash-jdbc.conf  // jdbc용 conf파일 생성
input {
        jdbc {
                jdbc_driver_library => "lib/mysql-connector-java-5.1.33.jar"
                jdbc_driver_class => "com.mysql.jdbc.Driver"
                jdbc_connection_string => "jdbc:mysql://localhost:3306/[db-name]"
                jdbc_user => "[db-user]"
                jdbc_password => "[password]"
                statement => "SELECT * FROM [tbl-name]"
                schedule => "* * * * *"
        }
}

output {
        elasticsearch {
                hosts => ["localhost:9200"]
        }
        stdout {
                codec => rubydebug
        }
}

4. 테스트

$ bin/logstash -f logstash-jdbc.conf --configtest
$ bin/logstash -f logstash-jdbc.conf