Elasticsearch 완벽 마스터
Elasticsearch의 핵심 개념과 실전 활용법
학습 항목
이미지 로딩 중...
Kibana 기초부터 심화까지 완벽 가이드
Elasticsearch 데이터를 시각화하고 분석하는 Kibana의 핵심 기능을 다룹니다. 검색 쿼리부터 대시보드 구성, 시각화 생성까지 실무에서 바로 활용할 수 있는 내용으로 구성되어 있습니다.
들어가며
이 글에서는 Kibana 기초부터 심화까지 완벽 가이드에 대해 상세히 알아보겠습니다. 총 12가지 주요 개념을 다루며, 각각의 개념에 대한 설명과 실제 코드 예제를 함께 제공합니다.
목차
- Kibana_기본_검색_KQL
- 인덱스_패턴_생성
- 시각화_생성_Line_Chart
- 대시보드_구성_및_저장
- Aggregation_활용_통계_분석
- Terms_Aggregation_상위_N개_추출
- 날짜_히스토그램_시간대별_분석
- 필터_기능_특정_조건_데이터만
- Saved_Search_검색_결과_저장
- Scripted_Field_커스텀_필드_생성
- TSVB_고급_시계열_시각화
- 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