ELK

ELK - 02 (Zabbix DB 연동 및 데이터 시각화)

김모우 2020. 12. 11. 16:22
728x90
반응형

 

 

Logstash에 jdbc 플러그인을 이용하여 DB 데이터를 Elasticsearch에 Import한 후 Kibana로 시각화 해주는 작업을 진행해보겠습니다. DB는 Zabbix DB(Maria DB 10.0.38)을 사용하였습니다.

 

 

 

## 구성도 ##

 

 

 

 

1. Logstash에 jdbc 플러그인 설치

 

# /usr/share/logstash/bin/logstash-plugin list jdbc


- 위와 같은 경우 정상적으로 설치가 되어 있는 것이므로 스킵 해주세요
- 설치가 되어 있지 않을 경우 아래 명령어로 설치를 진행 해줍니다.

# /usr/share/logstash/bin/logstash-plugin install logstash-integration-jdbc

 

 

2. mysql-connector-java 설치

 

# wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.16/mysql-connector-java-8.0.16.jar
# mv mysql-connector-java-8.0.16.jar /usr/share/logstash/tools/

 

 

3. DB 설정

 

- Zabbix 서버 이동
- 기존 127.0.0.1 로 바인딩되어 외부에서 접근이 불가한 Mysql 설정 변경
- 외부 접근 가능한 계정 생성

# vim /etc/mysql/mariadb.conf.d/50-server.cnf
.
.
bind-address = 127.0.0.1 -> 0.0.0.0 으로 변경
.
.
:wq

# mysql -u root -p
: 암호 입력

- 현재 등록된 유저 확인
> use mysql;
> select * from user;

- 외부 접근 가능 유저 생성
> create user 'zabbix'@'%' identified by [password];
> grant all privileges on zabbix.* to 'zabbix'@'%';
> quit;

- ELK 서버 이동
# nc -z -v [zabbix 서버 IP] 3306


# mysql -h [zabbix 서버 IP] -u zabbix -p
: 암호 입력
- Zabbix DB 보이는지 확인

 

 

4. logstash.conf 파일 생성

 

# vim /etc/logstash/logstash_zabbix.conf
.
.
input { jdbc { jdbc_driver_library => "/usr/share/logstash/tools/mysql-connector-java-8.0.16.jar" jdbc_driver_class => "com.mysql.cj.jdbc.Driver" jdbc_connection_string => "jdbc:mysql://[서버 IP]:3306/zabbix" jdbc_user => "zabbix" jdbc_password => "[암호]" statement => "SELECT * FROM hosts" schedule => "/1 * * * *" } } output { elasticsearch { hosts => ["localhost:9200"] index => "zabbix" document_type => "zabbix_hosts" } stdout { codec => rubydebug } }
.
.
: wq


- 서버 IP 및 계정 정보는 본인 설정에 맞게 바꿔주세요

** mysql-connector-java 6.X 버전 이상일 경우!!!
- drvier_class: com.mysql.jdbc.Driver -> com.mysql.cj.jdbc.Driver 로 변경해주셔야 합니다.
- 저는 8.0 버전을 사용하여 아래와 같이 설정하였습니다.

 

 

5. logstash 실행

 

# /usr/share/logstash/bin/logstash -f /etc/logstash/logstash_zabbix.conf

* 오류 발생

- Character-set 관련 오류
- Timezone 관련 오류

* 해결 방법

- 관련 설정 확인

# mysql -u root -p
: 암호 입력
> status;
: 수정한 후에 글을 작성해 현재 변경되어 있는데 characterset 부분이 utf8mb4 형태로되어 있었습니다.


> select @@global.time_zone, @@session.time_zone;


- 위와 같이 TIME 존이 설정되어 있는데 KST로 변경해주겠습니다.

A. Character-set 변경

# sed -i 's/utf8mb4/utf8/g' /etc/mysql/mariadb.conf.d/50-*
- 전체 설정을 일괄 변경해줍니다.
- 확인해보니 아래와 같이 정상적으로 변환되었습니다.


B. Timezone 변경

- my.cnf 관련 설정 추가
# vim /etc/mysql/my.cnf
.
.
[mysqld]
default-time-zone='+9:00'
.
.
:wq


C. mysql service 재 시작

# service mysql restart

 

 

6. logstash 재 실행

 

- 백그라운드로 실행시켜줍니다.
# /usr/share/logstash/bin/logstash -f logstash_mysql.conf &



- 아래와 같이 데이터가 정상 import되는 것을 확인할 수 있습니다.

 

 

7. Index Pattern 등록

- 이전 포스트 참조 부탁드립니다.
- URL: https://usheep91.tistory.com/58?category=887212
 

Elasticsearch + Kibana - 2 (Elasticsearch 데이터 입력 및 활용)

Elasticsearh에 인덱스 생성 및 데이터 입력 추가적으로 Kibana Terms로 활용을 위한 Mapping 작업까지 진행해주도록 하겠습니다. 1. Elasticsearh 인덱스 생성 - 데이터 입력을 위한 인덱스를 먼저 생성해 줍

usheep91.tistory.com

 

 

8. Visualize 생성

 

- 아래와 같이 Visualize를 생성 시켜줍니다.

 

 

9. 데이터 입력 및 비교

 

- 기존에 Zabbix API를 활용한 Host 등록에서 다뤘던 스크립트를 이용해 Host를 몇 개 추가해보겠습니다.

- Host 등록 확인



- 데이터 변화를 체크 해봅니다.
- 아래와 같이 Host 등록에 따른 데이터 변화를 실시간으로 확인이 가능합니다.



 

다음 포스팅에서는 Filebeat - Logstash를 연동하여 로그 파일 데이터를 수집하는 방법에 대해서 알아보겠습니다.

728x90
반응형