2 분 소요

📌시각화 도구 Kibana 튜토리얼

  • Kibana를 사용한 시각화 준비
  • Kibana의 다양한 메뉴와 쿼리 및 설정 방법
  • Kibana 원하는 그래프 그리기
  • Kibana 대시보드 꾸미기

📌 Kibana란?

키바나를 사용하는 이유는 시각화를 통해 유저에게 직관적인 데이터의 상태 정보를 제공하기 위함이다.

키바나(Kibana)는 브라우저 인터페이스를 이용, 많은 데이터를 쉽게 검색, 시각화, 탐색 할 수 있는 오픈소스 분석 및 시각화 도구다. 또한 키바나는 엘라스틱서치(Elasticsearch), 로그스태시(Logstash), 비츠(Beats)와 함께 엘라스틱스택의 핵심 구성요소다.

✅ 첨언

  • Kibana는 Elasticsearch와 함께 작동하도록 설계된 시각화 플랫폼
    • Kibana와 Elasitcsearch의 버전은 반드시 동일해야함
  • Kibana를 사용하여 Elasticsearch 색인에 저장된 데이터를 검색 및 조회
  • 고급 데이터 분석을 쉽게 수행하고 다양한 차트, 엑셀 및 맵(지도)에서 데이터 시각화
  • 실시간 Elasticsearch 쿼리의 변경 사항을 표시하는 대시보드 존재

✅ 키바나 메인 페이지 접근

http://localhost:5601/ # 로컬 접근
https://yourdomain.com:5601/ # 도메인 접근
  • Kibana는 포트 5601을 통해 엑세스하는 웹 응용 프로그램
  • Kibana에 액세스하면 기본적으로 검색 페이지 로드
    • 시간 필터는 지난 15분으로 설정, 검색 쿼리는 완전 일치로 설정

✅ 키바나를 통해 서버 상태 확인

http://localhost:5601/status
  • 상태 페이지는 서버의 자원 사용에 대한 정보를 표시
  • 기본적으로 설치가 되어있는 플러그인 나열

✅ 키바나와 엘라스틱서치 연결

Management > Kibana > Index Patterns

  • 기본적으로 Kibana는 localhost에서 실행중인 Elasticsearch 인스턴스에 연결한다.
  • 또한, KibanaLogstash가 Elasticsearch에 입력하는 데이터가 있다고 추측한다. (logstash-*)
  • 설정이 안되있는 경우, 인덱스 중 하나 이상의 이름과 일치하는 색인 패턴을 정의하라는 메시지를 표시한다.
  • 관리 탭에서 언제든지 Index Patterns(인덱스 패턴)을 추가해 사용할 수 있다.

✔ Kibana Index Patterns

✅ Kibana Index Patterns과 와일드카드

Kibana에 등록하는 Index Patternswildcard(*)로 사용할 수 있다. 이유한 가지 패턴으로 관리하다 보면 과부하가 발생할 수 있기 때문에 과부하를 피하기 위해 일/월 단위로 나누어 index를 생성한다.

만약 index를 나누어 생성하는데 wildcard로 되어있지 않으면 매번 index pattern을 등록해야 하기 때문에 kibana에서는 편의를 위해 wildcard(*)를 제공한다. 👍

📌 Kibana 튜토리얼 준비하기

들어가기에 앞서 Kibana를 사용하기 위해서는 Elasticsearch에 대한 연결을 설정했는지 먼저 확인 후 진행해야 합니다. 또한 이번 장에서 진행할 Kibana 실습은 아래 사진과 같습니다.

✔ Elasticsearch에 샘플 데이터 세트 로드

데이터 매핑을 위해 해당 사이트를 참고해주세요 😎

✅ shakespeare.json 데이터

{
    "line_id": INT,
    "play_name": "String",
    "speech_number": INT,
    "line_number": "String",
    "speaker": "String",
    "text_entry": "String",
}
  • 윌리엄 셰익스피어의 전체 작품은 적절하게 필드로 파싱

✅ logs.jsonl 데이터

{
    "memory": INT,
    "geo.coordinates": "geo_point",
    "@timestamp": "date"
}
  • 임의로 생성 된 로그 파일 세트

✅ accounts.json 데이터

{
    "account_number": INT,
    "balance": INT,
    "firstname": "String",
    "lastname": "String",
    "age": INT,
    "gender": "M or F",
    "address": "String",
    "employer": "String",
    "email": "String",
    "city": "String",
    "state": "S
}
  • 무작위로 생성 된 데이터로 구성된 가상 계좌 집합

데이터를 로드하기 전에는 매핑을 먼저 수행해야 한다.

✔ 매핑?

인덱스의 문서를 논리적 그룹으로 나누고 필드의 검색 가능성, 토큰화되었는지, 별도의 단어로 분리되는지와 같은 필드의 특성을 지정하는것을 의미한다.

✅ shakespeare 데이터 매핑

PUT /shakespeare
{
  "mappings" : {
    "_default_" : {
      "properties" : {
        "speaker" : {"type": "keyword" },
        "play_name" : {"type": "keyword" },
        "line_id" : { "type" : "integer" },
        "speech_number" : { "type" : "integer" }
      }
    }
  }
}

✅ logstash 데이터 매핑

PUT /logstash-2015.05.18
#18~20까지 세개의 인덱스 구성 필요
{
  "mappings": {
    "log": {
      "properties": {
        "geo": {
          "properties": {
            "coordinates": {"type": "geo_popint"}
          }
        }
      }
    }
  }
}

위 데이터에서 geo type은 위도, 경도의 데이터 타입을 결정할 때 사용이된다. 만약 위도, 경도의 데이터 로드 하는 경우에 데이터 타입을 geo type으로 지정해주지 않는다면 float형 type이 데이터 타입으로 매핑되는 경우가 발생할 수 있다.

✅ 윈도우용 샘플 데이터 로드

• Invoke-RestMethod "http://localhost:9200/bank/account/_bulk?pretty" -Method Post -ContentType 'application/x-ndjson' -InFile "accounts.json"
• Invoke-RestMethod "http://localhost:9200/shakespeare/doc/_bulk?pretty" -Method Post -
ContentType 'application/x-ndjson' -InFile "shakespeare_6.0.json"
• Invoke-RestMethod "http://localhost:9200/_bulk?pretty" -Method Post -ContentType 'application/xndjson' -InFile "logs.jsonl"

데이터의 경우 해당 사이트를 참고 하시면 됩니다. 😎

  • 벌크 데이터를 사용하여 Elasticsearch에 데이터 세트를 로드
  • power shell을 이용하여 데이터 세트를 밀어 넣으면 된다

참고 자료

댓글남기기