-
[ELK STACK] MySQL 데이터 ELK에 반영하기기타/ELK STACK 2021. 1. 19. 22:55
Mysql을 ELK에서 사용하기 위해서는 mysql-connector-java를 다운로드 받아야 한다.
이유 : ELK는 Java를 기반으로 구현되어있기 때문
1. mysql-connector-java 다운받기
dev.mysql.com/downloads/connector/j/
MySQL :: Download Connector/J
MySQL Connector/J 8.0 is highly recommended for use with MySQL Server 8.0, 5.7 and 5.6. Please upgrade to MySQL Connector/J 8.0.
dev.mysql.com
[Ubuntu 18.04 환경에서 다운로드 및 설치 명령어]
$ wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java_8.0.23-1ubuntu18.04_all.deb $ dpkg -i mysql-connector-java_8.0.23-1ubuntu18.04_all.deb
패키지를 설치하면
/usr/share/java 경로에 mysql-connector-java-8.0.23.jar 파일이 생성되어있음
2. logstash 설정 파일 작성
logstash란 ?
다양한 소스에서 동시에 데이터를 수집하고, 정규화해주는 파이프라인 기능의 오픈소스 데이터 수집 엔진mysql.conf 파일 작성 내용
input { jdbc { jdbc_validate_connection => true jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_driver_library => "/usr/share/logstash/tools/mysql-connector-java-8.0.23.jar" jdbc_connection_string => "jdbc:mysql://localhost(주소):포트/데이터베이스명" jdbc_user => "mysql db 아이디" jdbc_password => "mysql db 비밀번호" statement => "SELECT id, created_at, updated_at, deleted_at FROM table_name" schedule => "* * * * *" } } output { elasticsearch { hosts => ["localhost:9200"] index => "mysql" document_type => "typename" document_id => "%{id}" } stdout {codec => json} }
1. jdbc_driver_library 에는 위에서 설치한 mysql-connector-java의 jar 파일의 경로를 지정해주어야함
2. schedule 은 crontab 표기법으로 작성
=> '* * * * *' 의미 : 1분에 한번씩 쿼리를 실행하고, 데이터를 저장
3. document_id document_id => "%{id}" 는 mysql의 id 컬럼의 값을 elasticsearch의 id로 사용하겠다는 의미
=> elasticsearch에서 자동으로 id가 생성되지 않고, 데이터가 중복으로 저장되는 것을 방지
Mysql을 ELK에 보내는 것은 통계 쿼리문을 짜기보다 Kibana로 구현하면 편하고 빠르기 때문에 사용하는 것으로 보인다.
참고 사이트