Post

ELK 스택이란?

2025-01-04-elk-01

출처 https://www.ninjaone.com/blog/what-is-elk-stack/

프로젝트 안정화 기간 동안 Kafka와 ELK 스택을 활용하여 5개 시스템의 로그를 중앙화하고, 모니터링 도구를 통해 오류나 특이사항을 실시간으로 파악하여 빠르게 대응할 수 있었습니다. 이번 포스팅에서는 이러한 역할을 수행하는 ELK 스택에 대해서 정리해보겠습니다.

ELK 스택이란?


ELK 스택은 Elasticsearch, Logstash, Kibana 의 세 가지 인기 있는 프로젝트로 구성된 스택을 의미하는 약어입니다. ELK 스택은 사용자에게 모든 시스템과 애플리케이션에서 로그를 집계하고 이를 분석하여 애플리케이션과 인프라 모니터링 시각화를 생성하고, 빠르게 문제를 해결하며 보안 분석할 수 있는 능력을 제공합니다. - aws

위에 aws에서 설명한대로 ELK 는 Elasticsearch, Logstash, Kibana 의 약어로 이 3개의 도구를 사용하여 로그를 집계 및 분석하여 모니터링 시각화 할 수 있도록 도와주는 스택입니다. 추가로 여기에 beats라는 도구까지 포함해서 주로 사용됩니다.

각 도구들에 대해 설명하기 전에 ELK 스택에 구성도를 살펴보겠습니다.

2025-01-04-elk-02

출처 https://accordions.co.kr/accordion_tip/accordion-elk/

ELK 스택은 로그를 수집, 처리, 저장, 시각화하기 위해 위 ELK 구성도에 나와있는대로 4가지 도구가 유기적으로 연결되어 동작합니다.

  • Beats: 로그와 데이터를 수집하여 Logstash로 전달
  • Logstash: Beats에서 전달받은 데이터를 변환하여 Elasticsearch로 전달
  • Elasticsearch: 데이터를 저장하고 검색/분석 기능 제공
  • Kibana: Elasticsearch에 저장된 데이터를 시각화 및 분석

ELK 스택 도구 설명


Beats

데이터를 수집하여 Logstash 또는 Elasticsearch 로 전송하는 데이터 발송자 역할을 합니다

2025-01-04-elk-03

출처 https://dzone.com/refcardz/monitoring-and-the-elk-stack

  • 이러한 Beats에는 여러 종류가 있습니다.
    • Filebeat: 파일로 부터 로그 및 기타 데이터 수집 전용
    • Metricbeat: 시스템 및 애플리케이션 성능 메트릭 수집
    • Packetbeat: 네트워크 트래픽 데이터 수집
    • Winlogbeat: Windows 이벤트 로그 수집
    • Heartbeat: 서비스 가용성 모니터링

filebeat.yml

아래는 이해를 돕기 위한 filebeat의 설정 파일입니다. input 과 output을 설정하는데 input에서는 log를 수집하기 위한 파일 경로를 output에서는 logstash hosts를 설정하는 것을 볼 수 있습니다.

1
2
3
4
5
6
7
8
9
 # 로그 입력 경로 설정
filebeat.inputs:
  - type: log
    paths:
      - /var/log/*.log

# Logstash 출력 설정 (선택적 사용)
output.logstash:
  hosts: ["localhost:5044"]

Logstash

데이터 처리 및 변환 도구로, Beats로 부터 데이터를 전달 받아 원하는 형태로 가공한 후 Elasticsearch에 전달합니다.

2025-01-04-elk-04

출처 https://www.xplg.com/what-is-logstash/

Logstash는 3가지 구성요소로 이루어져 있습니다.

  • Input
    • 데이터를 수집
    • 예: beats, Http, kafka, 데이터베이스
  • Filter (옵션)
    • 데이터를 변환하거나 필터링
    • 예: 필드 추가/삭제, 정규표현식을 사용한 데이터 가공
  • Output
    • 데이터를 최종적으로 전달할 대상 정의
    • 예: elasticsearch, 파일, 데이터베이스 등

아래는 이해를 돕기위한 Logstash 설정 파일인 logstash.conf 파일 입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
input {
  beats {
    port => 5044
  }
}

filter {
  # Apache 로그 데이터 파싱
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }

  # 날짜 파싱 및 표준화
  date {
    match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
    target => "@timestamp"
  }
}

output {
  # Elasticsearch로 전송
  elasticsearch {
    hosts => ["http://elasticsearch-0.elasticsearch-svc:9200"]
    index => "apache-logs-%{+YYYY.MM.dd}"
  }

  # 2. 특정 태그가 포함된 데이터만 별도 파일로 저장
  if "error" in [tags] {
    file {
      path => "/var/log/logstash/errors.log"
      codec => line { format => "%{message}" }
    }
  }
}

Elasticsearch

분산형 검색 및 분석 엔진으로, 데이터 저장소의 핵심 역할을 합니다.

2025-01-04-elk-05

출처 https://www.elastic.co/kr/elasticsearch

특징

  • JSON 기반 저장: 데이터를 키-값 쌍 형태로 JSON 형식으로 저장
  • 스케일링: 클러스터링을 통해 확장 가능
  • 빠른 쿼리: 데이터 색인을 기반으로 고속 검색 및 집계 지원
  • 다양한 API 지원: Restful API를 사용하여 유연한 데이터 접근

Kibana

Elasticsearch에 저장된 데이터를 시각화하고 분석할 수 있는 도구입니다.

2025-01-04-elk-06

데이터 검색 - 출처 https://logz.io/blog/kibana-tutorial-2/#kibanaaggregations

2025-01-04-elk-07

데이터 시각화 - 출처 https://www.elastic.co/kr/kibana

특징

  • 데이터 시각화: 차트, 그래프, 맵 등 생성
  • Discover: 저장된 데이터 탐색
  • Alerting: 특정 조건이 충족되면 경고 알림 전송
  • Logs: 실시간 로그 데이터 확인

마치며


이번 포스팅에서는 ELK 스택의 구성 요소와 각 도구의 역할에 대해 살펴보았습니다. 운영 단계에서 로그 관리를 효율적으로 수행하고, 시스템 모니터링과 에러 대응 속도를 크게 향상시키기 위해 ELK 스택 도입은 필수인것 같습니다. 읽어 주셔서 감사합니다 ㅎㅎ

Reference


This post is licensed under CC BY 4.0 by the author.