ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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로 구현하면 편하고 빠르기 때문에 사용하는 것으로 보인다.


    참고 사이트

    댓글

Designed by Tistory.