Dashboard 완벽 마스터

Dashboard의 핵심 개념과 실전 활용법

Python중급
6시간
3개 항목
학습 진행률0 / 3 (0%)

학습 항목

1. JavaScript
중급
Kibana|기초부터|심화까지|완벽|가이드
퀴즈튜토리얼
2. Python
초급
Grafana|기초부터|심화까지|완벽|가이드
퀴즈튜토리얼
3. TypeScript
초급
Kibana 핵심 개념 완벽 정리
퀴즈튜토리얼
1 / 3

이미지 로딩 중...

Kibana 기초부터 심화까지 완벽 가이드 - 슬라이드 1/13

Kibana 기초부터 심화까지 완벽 가이드

Elasticsearch 데이터를 시각화하고 분석하는 Kibana의 핵심 기능을 다룹니다. 검색 쿼리부터 대시보드 구성, 시각화 생성까지 실무에서 바로 활용할 수 있는 내용으로 구성되어 있습니다.


카테고리:JavaScript
언어:JavaScript
난이도:intermediate
메인 태그:#Kibana
서브 태그:
#Elasticsearch#DataVisualization#Dashboard#KQL

들어가며

이 글에서는 Kibana 기초부터 심화까지 완벽 가이드에 대해 상세히 알아보겠습니다. 총 12가지 주요 개념을 다루며, 각각의 개념에 대한 설명과 실제 코드 예제를 함께 제공합니다.

목차

  1. Kibana_기본_검색_KQL
  2. 인덱스_패턴_생성
  3. 시각화_생성_Line_Chart
  4. 대시보드_구성_및_저장
  5. Aggregation_활용_통계_분석
  6. Terms_Aggregation_상위_N개_추출
  7. 날짜_히스토그램_시간대별_분석
  8. 필터_기능_특정_조건_데이터만
  9. Saved_Search_검색_결과_저장
  10. Scripted_Field_커스텀_필드_생성
  11. TSVB_고급_시계열_시각화
  12. Canvas_프레젠테이션_제작

1. Kibana_기본_검색_KQL

개요

Kibana Query Language(KQL)를 사용하여 Elasticsearch 데이터를 검색하는 기본 문법입니다. 필드명과 값을 이용한 간단한 검색이 가능합니다.

코드 예제

// Discover 탭에서 사용하는 KQL 검색 예제
response: 200 and method: "GET"

// 범위 검색
status_code >= 400 and status_code < 500

// 와일드카드 검색
user.name: john*

설명

KQL은 간단한 문법으로 로그 데이터를 필터링할 수 있습니다. and, or 연산자와 비교 연산자를 조합하여 원하는 데이터만 추출합니다.


2. 인덱스_패턴_생성

개요

Elasticsearch 인덱스의 데이터를 Kibana에서 사용하려면 먼저 인덱스 패턴을 생성해야 합니다. 시간 기반 필드를 설정하여 시계열 분석이 가능합니다.

코드 예제

// Management > Index Patterns 설정 예시
{
  "indexPattern": "logs-*",
  "timeFieldName": "@timestamp",
  "fields": {
    "status": "keyword",
    "response_time": "long",
    "user_id": "keyword"
  }
}

설명

인덱스 패턴은 와일드카드(*)를 사용하여 여러 인덱스를 한번에 매핑할 수 있습니다. @timestamp 필드를 지정하면 시간 기반 필터링이 가능해집니다.


3. 시각화_생성_Line_Chart

개요

시계열 데이터를 라인 차트로 시각화하여 시간에 따른 추세를 분석합니다. Metrics와 Buckets를 설정하여 원하는 형태의 차트를 만들 수 있습니다.

코드 예제

// Visualize > Line Chart 설정
{
  "metrics": {
    "y-axis": {
      "aggregation": "count"
    }
  },
  "buckets": {
    "x-axis": {
      "aggregation": "date_histogram",
      "field": "@timestamp",
      "interval": "1h"
    }
  }
}

설명

Y축에는 문서 수(count)나 평균값(avg)을 설정하고, X축에는 시간 간격(interval)을 지정하여 시계열 그래프를 생성합니다.


4. 대시보드_구성_및_저장

개요

여러 개의 시각화 패널을 하나의 대시보드에 배치하여 종합적인 모니터링 화면을 구성합니다. 필터와 시간 범위를 공유하여 일관된 분석이 가능합니다.

코드 예제

// Dashboard 설정 JSON 예시
{
  "title": "Application Monitoring",
  "panels": [
    {
      "type": "visualization",
      "id": "response-time-chart",
      "size": { "width": 6, "height": 3 }
    },
    {
      "type": "visualization",
      "id": "error-rate-gauge",
      "size": { "width": 6, "height": 3 }
    }
  ]
}

설명

대시보드는 여러 시각화를 조합하여 한 화면에서 다양한 지표를 모니터링할 수 있게 합니다. 패널 크기와 위치를 조정하여 레이아웃을 커스터마이징합니다.


5. Aggregation_활용_통계_분석

개요

Elasticsearch의 Aggregation 기능을 활용하여 데이터의 평균, 최대값, 최소값 등 통계 정보를 추출합니다. Metric Aggregation과 Bucket Aggregation을 조합할 수 있습니다.

코드 예제

// Metric Aggregation 예시
{
  "aggs": {
    "avg_response": {
      "avg": { "field": "response_time" }
    },
    "max_response": {
      "max": { "field": "response_time" }
    }
  }
}

설명

avg, max, min, sum 등의 metric aggregation으로 필드의 통계값을 계산합니다. 여러 aggregation을 동시에 사용하여 다양한 지표를 한번에 얻을 수 있습니다.


6. Terms_Aggregation_상위_N개_추출

개요

특정 필드의 값들 중 가장 많이 등장하는 상위 항목들을 추출합니다. 에러 로그 분석이나 인기 검색어 분석에 유용합니다.

코드 예제

// 상위 10개 URL 추출
{
  "aggs": {
    "top_urls": {
      "terms": {
        "field": "url.keyword",
        "size": 10,
        "order": { "_count": "desc" }
      }
    }
  }
}

설명

terms aggregation은 필드 값별로 그룹핑하여 문서 수를 집계합니다. size로 상위 몇 개를 가져올지, order로 정렬 기준을 지정할 수 있습니다.


7. 날짜_히스토그램_시간대별_분석

개요

시간 단위로 데이터를 그룹화하여 시간대별 패턴을 분석합니다. 트래픽 변화나 에러 발생 추이를 파악할 때 사용합니다.

코드 예제

// 1시간 단위로 요청 수 집계
{
  "aggs": {
    "requests_over_time": {
      "date_histogram": {
        "field": "@timestamp",
        "calendar_interval": "1h",
        "time_zone": "Asia/Seoul"
      }
    }
  }
}

설명

date_histogram으로 시간 단위(1h, 1d 등)를 지정하여 시계열 데이터를 집계합니다. time_zone 설정으로 원하는 시간대 기준으로 분석할 수 있습니다.


8. 필터_기능_특정_조건_데이터만

개요

Kibana의 필터 기능을 사용하여 대시보드나 시각화에서 특정 조건의 데이터만 표시합니다. 동적으로 필터를 추가/제거하며 데이터를 탐색할 수 있습니다.

코드 예제

// Filter DSL 예시
{
  "query": {
    "bool": {
      "must": [
        { "match": { "status": "error" } },
        { "range": {
          "@timestamp": {
            "gte": "now-1h"
          }
        }}
      ]
    }
  }
}

설명

bool query의 must 절로 여러 조건을 AND로 결합합니다. 최근 1시간 동안 발생한 에러만 필터링하는 예시입니다.


9. Saved_Search_검색_결과_저장

개요

자주 사용하는 검색 조건과 컬럼 설정을 저장하여 재사용할 수 있습니다. Discover 탭에서 설정한 필터, 쿼리, 표시 필드를 저장합니다.

코드 예제

// Saved Search 설정 예시
{
  "title": "Error Logs",
  "columns": [
    "@timestamp",
    "level",
    "message",
    "user_id"
  ],
  "query": "level: error",
  "filters": [
    { "term": { "app.keyword": "backend" } }
  ]
}

설명

검색 결과를 저장하면 나중에 빠르게 동일한 조건으로 데이터를 조회할 수 있습니다. 저장된 검색은 대시보드에도 추가 가능합니다.


10. Scripted_Field_커스텀_필드_생성

개요

기존 필드들을 조합하여 새로운 계산 필드를 생성합니다. Painless 스크립트를 사용하여 런타임에 값을 계산합니다.

코드 예제

// 응답 시간을 초 단위로 변환하는 스크립트
{
  "script": {
    "source": "doc['response_time'].value / 1000",
    "lang": "painless"
  },
  "type": "number",
  "format": "0.00"
}

설명

Scripted Field는 인덱스에 없는 새로운 필드를 동적으로 생성합니다. 밀리초를 초로 변환하거나 여러 필드를 조합한 계산이 가능합니다.


11. TSVB_고급_시계열_시각화

개요

Time Series Visual Builder(TSVB)를 사용하여 복잡한 시계열 데이터를 시각화합니다. 여러 metrics를 하나의 차트에 표시하고 수식으로 계산할 수 있습니다.

코드 예제

// TSVB 설정 예시
{
  "type": "timeseries",
  "series": [{
    "metrics": [{
      "type": "avg",
      "field": "response_time"
    }],
    "split_mode": "terms",
    "terms_field": "service.keyword"
  }],
  "interval": "auto"
}

설명

TSVB는 서비스별로 평균 응답시간을 나눠서 보여주는 등 복잡한 시각화가 가능합니다. Pipeline Aggregation으로 이동평균 같은 고급 계산도 지원합니다.


12. Canvas_프레젠테이션_제작

개요

Canvas를 사용하여 인포그래픽 스타일의 프레젠테이션을 만듭니다. 데이터와 디자인 요소를 자유롭게 배치하여 보고서나 대시보드를 제작합니다.

코드 예제

// Canvas Expression 예시
{
  "expression": `
    filters
    | elasticsearch index="logs-*"
      query="status:200"
    | math "count"
    | metric "성공 요청"
      metricFont={font size=48 color="#00BFB3"}
  `
}

설명

Canvas는 표현식(Expression) 언어로 데이터를 가져와 시각화합니다. 텍스트, 이미지, 차트를 자유롭게 배치하여 맞춤형 리포트를 만들 수 있습니다.


마치며

이번 글에서는 Kibana 기초부터 심화까지 완벽 가이드에 대해 알아보았습니다. 총 12가지 개념을 다루었으며, 각각의 사용법과 예제를 살펴보았습니다.

관련 태그

#Kibana #Elasticsearch #DataVisualization #Dashboard #KQL

#Kibana#Elasticsearch#DataVisualization#Dashboard#KQL#JavaScript