[ELK] KIBANA를 이용하여 데이터를 👁‍🗨시각화 해보자 #5
반응형

안녕하세요 😉

유유자적한 개발자 유로띠 입니다 😀

 

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 시각화 도구를 이용하여

데이터 시각화 👀

를 알아보았습니다

👏👏👏

반응형