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
8. Visualize 생성
- 아래와 같이 Visualize를 생성 시켜줍니다.
9. 데이터 입력 및 비교
- 기존에 Zabbix API를 활용한 Host 등록에서 다뤘던 스크립트를 이용해 Host를 몇 개 추가해보겠습니다.
- Host 등록 확인
- 데이터 변화를 체크 해봅니다.
- 아래와 같이 Host 등록에 따른 데이터 변화를 실시간으로 확인이 가능합니다.
다음 포스팅에서는 Filebeat - Logstash를 연동하여 로그 파일 데이터를 수집하는 방법에 대해서 알아보겠습니다.
728x90
반응형
'ELK' 카테고리의 다른 글
ELK-03 (Filebeat를 연동한 로그 모니터링) (0) | 2020.12.22 |
---|---|
Elasticsearch + Kibana - 3 (형태소 분석기 추가) (0) | 2020.12.11 |
ELK - 01 (CSV 파일 입력 및 데이터 시각화) (0) | 2020.12.10 |
Elasticsearch + Kibana - 2 (Elasticsearch 데이터 입력 및 활용) (0) | 2020.12.10 |
Elasticsearch + Kibana - 1 (Kibana 설치 및 기본 설정) (0) | 2020.12.07 |