안녕하세요 😉
유유자적한 개발자 유로띠 입니다 😀
ELK Stack
5번째 시간
이전 포스팅에서
Kibana를 시각화하기 위해
ELK를 설치하고
Logstash를 설정하며
준비를 하였습니다
#1 - [프로그래밍/ELK] - Elasticsearch 설치 및 외부 허용 설정하기
#2 - [프로그래밍/ELK] - [ELK] KIBANA 설치하기
#3 - [프로그래밍/ELK] - [ELK] Logstash 설치하기
#4 - [ELK] Logstash 사용하기 📌시각화를 위한 설정 📌JDBC 상세 설정
드디어 ❗❗
데이터를
👁🗨눈으로 볼 시간입니다 😄
하지만 ❗❗
그전에
kibana에서 데이터를 시각화하기 위해서는
몇 가지 설정을 해야 합니다 🧐
따라서
이번 포스팅에서는
✅ 시각화를 위한 Logstash 사전 설정
✅ Index 확인하기
✅ Index Patterns 등록하기
✅ Kibana Discover
에 대해서 알아보겠습니다
👏👏👏👏
🎉 Kibana 시각화 데이터를 만들자
📢 Kibana 시각화를 위한 Logstash 사전 설정
이전 포스팅인
[ELK] Logstash 사용하기 📌시각화를 위한 설정 📌JDBC 상세 설정
에서
우리는 Logstash를 이용하여
시각화에 필요한 데이터를
Elasticsearch로 전송하는 파일을 만들었습니다 😄
kibana에서 데이터를 시각화하기 위해서는
데이터가 Elasticsearch index에 저장되어 있어야 합니다 👌
✅ inspector.conf
input {
jdbc {
jdbc_validate_connection => true
jdbc_driver_library => "/usr/share/logstash/tools/mysql-connector-java-5.1.38.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://test-database-1.rds.amazonaws.com:3306/<DBname>"
jdbc_user => "username"
jdbc_password => "password"
use_column_value => true
tracking_column => idx
last_run_metadata_path => "/usr/share/logstash/inspector-index.dat"
statement => "select * from INSPECTOR where idx > :sql_last_value order by idx ASC"
schedule => "0 */2 * * *"
}
}
filter {
date {
match => ["setdt","yyyyMMdd'T'HHmmss"]
timezone => "Asia/Seoul"
target => "setdt"
}
mutate {
remove_field => ["@timestamp","@version","host","message"]
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "inspector"
}
stdout {}
}
output - elasticsearch - index 부분이 kibana에서 필요한 Elasticsearch index입니다
해당 index를 kibana에 등록하면 되지만 그전에 설정해야 하는 부분이 있어서 설명드리겠습니다 😁
💡 kibana Index Patterns의 wildcard(*)
kibana에 등록하는 Index Patterns은 wildcard(*)로 사용할 수 있습니다
이유는 한 가지 패턴으로 관리하다 보면 과부하가 발생할 수 있기 때문에 과부하를 피하기 위해 일/월 단위로 나누어 index를 생성합니다
만약 index를 나누어 생성하는데 wildcard로 되어있지 않으면 매번 index pattern을 등록해야 하기 때문에 kibana에서는 편의를 위해 wildcard(*)를 제공합니다 👍
그럼 wildcard(*)가 가능하니 Logstash configuration 파일을 수정해보도록 하겠습니다 😊
✅ inspector.conf
index 정보를 inspector-%{+YYYY.MM.dd} 수정하면 일별로 index를 생성할 수 있습니다
ex) inspector-2020.04.20 inspector-2020.04.21 inspector-2020.04.22
filter {
date {
match => ["setdt","yyyyMMdd'T'HHmmss"]
timezone => "Asia/Seoul"
target => "setdt"
}
mutate {
remove_field => ["@timestamp","@version","host","message"]
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "inspector-%{+YYYY.MM.dd}"
}
stdout {}
}
그러나 ❗❗
위에 처럼 설정하면 아마 inspector- 만 생성되실 겁니다 😭
이유는 바로 filter에서 @timestamp를 제거했기 때문이죠
해당 %{+YYYY.MM.dd} 부분은 @timestamp에서 연도, 월, 일을 추출해서 생성되기 때문입니다 👌
그래서 remove_field에서 @timestamp를 빼주셔야 합니다 😊
✅ inspector.conf
수정된 Logstash configuration 파일입니다
input {
jdbc {
jdbc_validate_connection => true
jdbc_driver_library => "/usr/share/logstash/tools/mysql-connector-java-5.1.38.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://test-database-1.rds.amazonaws.com:3306/<DBname>"
jdbc_user => "username"
jdbc_password => "password"
use_column_value => true
tracking_column => idx
last_run_metadata_path => "/usr/share/logstash/inspector-index.dat"
statement => "select * from INSPECTOR where idx > :sql_last_value order by idx ASC"
schedule => "*/10 * * * *"
}
}
filter {
date {
match => ["setdt","yyyyMMdd'T'HHmmss"]
timezone => "Asia/Seoul"
target => "setdt"
}
mutate {
remove_field => ["@version","host","message"]
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "inspector-%{+YYYY.MM.dd}"
}
stdout {}
}
Kibana 시각화하기 전에
Logstash configuration를 수정하였습니다 😃
이제 Logstash를 실행하고
Kibana에서 시각화를 하기 위한 단계로 넘어가도록 하겠습니다
👏👏👏👏
📍 Logstash 실행
/usr/share/logstash/bin/logstash -f /opt/elk/logstash/inspector.conf
📢 생성된 index 확인하기
이전 포스팅에서 설치한
Kibana로 접속해보도록 하겠습니다
📍 http://<localhost>:5601 접속
별도의 설정을 하지 않았으면 바로 접속하실 수 있습니다 😊
Logstash 통해 생성된
index에 대해서
Kibana에서 확인해보도록 하겠습니다
📍 Dev Tools 클릭
GET inpector-2020.04.20/_search로 작성 후 오른쪽의 ➤ 클릭하면 오른쪽에 데이터가 출력됩니다
💡 Mapping 정보 확인
GET inpector-2020.04.20/_mapping로 작성 후 오른쪽의 ➤ 클릭하면 오른쪽에 Mapping정보가 출력됩니다
RDBMS의 Schema처럼 Elasticsearch에서는 Mapping를 확인할 수 있습니다
📢 데이터 시각화를 위한 Kibana Index Patterns 등록
Logstash를 통해 Elasticsearch로 데이터를 보내면
자동으로 Mapping이 생성되어 kibana의 Index Patterns에 등록할 수 있습니다
그럼
Index Patterns에
등록해보도록 하겠습니다 👍
✅ Management ➜ Kibana ➜ Index Patterns ➜ Create index pattern 선택
🔵 Step 1
Index patterns에 생성된 index를 올바르게 입력하면 ✅ Success! 정보를 확인할 수 있습니다
💡 초록 네모칸을 보시면 앞서 설명한 wildcard 내용이 쓰여있습니다
You can use a * as a wildcard in your index pattern.
Next step을 선택하여 다음 단계를 진행하도록 하겠습니다 😊
🔵 Step 2
Time Filter field name를 클릭하여 Date를 설정합니다
여기서 선택된 Time Field를 기준으로 데이터가 정렬됩니다
저는 setdt를 선택하여 해당 Time을 기준으로 정렬해보도록 하겠습니다 😄
Create index pattern를 선택하여 Index Pattern을 등록합니다
🎉 드디어 inspector-*라는 index pattern을 생성하였습니다 🎉
📢 Kibana Discover
등록한 inspector-* index pattern을
kibana의 Discover를 통해 데이터를 확인해 보겠습니다 🔎
📢 마무리
이상
Elasticsearch 데이터에 대해서
Kibana 시각화 도구를 이용하여
데이터 시각화 👀
를 알아보았습니다
👏👏👏
'Programming > ELK' 카테고리의 다른 글
[ELK] Kibana 보안 연결을 위한 SSL를 적용 해보자 #6 (2) | 2020.04.30 |
---|---|
[ELK] Logstash 사용하기 📌시각화를 위한 설정 📌JDBC 상세 설정 #4 (3) | 2020.04.21 |
[ELK] Logstash 설치하기 #3 (4) | 2020.04.17 |
[ELK] KIBANA 설치하기 #2 (0) | 2020.04.16 |
Elasticsearch 설치 및 외부 허용 설정하기 #1 (2) | 2020.04.14 |