솔솔

[ELK] MySQL의 데이터를 ELK 스택으로 가져와서 시각화하기 본문

나의보물들/ELK

[ELK] MySQL의 데이터를 ELK 스택으로 가져와서 시각화하기

솔솔하네 2024. 7. 28. 22:15
반응형
설치환경
MacBook Pro 14
Apple M1 Pro

설치목록
UTM (Virtual machines for Mac)
Ubuntu 22.04.4 LTS
Elasticsearch
Logstash
Kibana
MySQL Database
mysql-connect-java-8.0.18.jar

🍀 MySQL JDBC 드라이버 다운로드 받기


Logstash는 Java로 만들어진 애플리케이션으로 MySQL 데이터베이스와 통신하기 위해 JDBC(Java Database Connectivity) 드라이버를 필요로 하기 때문에 다운로드 받음.

 

1. JDBC 다운로드

# JDBC 다운로드
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.18.zip

# zip 형식의 압축 파일을 해제 패키지 다운로드
sudo apt install unzip

# JDBC 압축 파일 헤제
unzip mysql-connector-java-8.0.18.zip

 

2. JDBC를 Logstash의 jar폴더로 이동

sudo cp mysql-connector-java-8.0.18/mysql-connector-java-8.0.18.jar /usr/share/logstash/logstash-core/lib/jars/

 

 

🍀 MySQL에 데이터 넣기


 

작업 할 데이터 파일을 연결할 MySQL에 데이터를 Import시켜 놓기

(저는 캐글의 타이타닉 데이터 .csv파일을 받아서 Import 했습니다.)

 

 

🍀 Logstash 설정 파일 작성 및 프로그램 재가동


1. "/etc/logstash/conf.d/"폴더 아래에 .conf 파일 작성하기

input {
 jdbc {
  # JDBC jar파일 위치
  jdbc_driver_library => "/usr/share/logstash/logstash-core/lib/jars/mysql-connector-java-8.0.18.jar"
  jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
  jdbc_connection_string => "jdbc:mysql://localhost:3306/your_database"
  jdbc_user => "your_username"
  jdbc_password => "your_password"
  statement => "select * from {테이블 명}"
 }
}

output {

# 콘솔창에 어떤 데이터들로 필터링 되었는지 확인
stdout {
  codec => rubydebug
}

 elasticsearch {
   hosts => ["http://localhost:9200"]
   # Elasticsearch 에서 "titanic" 라는 이름으로 인덱싱 
   index => "titanic"
 }
}

 

2. elasticsearch & logstash 재가동

# 재가동
sudo systemctl restart elasticsearch
sudo systemctl restart logstash
# 가동 확인
sudo systemctl status elasticsearch
sudo systemctl status logstash

 

3. elasticsearch-head에 인덱스 생성 확인 

4. Kibana에 접속해서 인덱스 생성 확인

 

 

🍀 Kibana로 시각화 하기


1. Kibana 켜기

# 키바나 연결
sudo systemctl start kibana

# 키바나 연결 상태 확인
sudo systemctl status kibana

 

2.  Kibana의 Visualize Library에서 MySQL 연결해서 생성한 인덱스로 시각화 하기

 

💭 마이 띵킹 💭

예전에 데이터를 시각화를 해본 경험이 있는데 이 때는 정말 많은 작업이 필요했다. 원하는 데이터를 쿼리로 작성하고 JSON 형식으로 프론트엔드로 보내 차트 라이브러리를 사용해 차트를 생성하는 과정이 생각보다 복잡했다. 데이터가 많아질수록 쿼리 작성도 힘들었고 그 데이터를 가공해 시각화하는 데 많은 시간이 걸렸다.
하지만 ELK 스택을 알게 된 후 데이터 시각화 작업이 얼마나 편리해질 수 있는지 깨달았다. ELK 스택을 구축하면 쿼리 작성 없이도 Kibana를 통해 원하는 데이터를 시각화할 수 있다. Kibana의 UI는 직관적이어서 몇 번의 클릭만으로도 복잡한 차트를 쉽게 만들 수 있었다. 차트 하나 만드는 데 걸리는 시간이 굉장히 많이 줄어들었다.
실시간 데이터 확인도 매우 용이했다. 데이터가 실시간으로 Elasticsearch에 인덱싱되고, Kibana를 통해 즉시 시각화할 수 있었다. 이 덕분에 데이터의 변화를 실시간으로 모니터링하고 분석할 수 있었다. 업무 효율성이 정말 많이 높아진 것 같다.
오늘은 ELK 스택의 편리함을 새삼 다시 느끼며, 앞으로 데이터 시각화 작업이 더욱 기대되었다. 이 도구를 통해 더 많은 데이터를 쉽게 분석하고, 유의미한 인사이트를 도출할 수 있을 것 같다.