ELK
Elasticsearch, Logstash, Kibana의 약자
로그 데이터 처리 및 시각화를 위한 오픈소스 도구들의 스택
이 세 도구들은 각각의 역할을 수행하며 함께 강력한 데이터 검색, 분석 및 시각화 환경을 제공함
ELK의 구성 요소
Elasticsearch
분산형 검색 및 분석 엔진
특징
- JSON 형식으로 데이터를 저장함
- Apache Lucene 기반으로 구축되었으며, 고성능 검색과 분석 기능을 제공
- 대규모 데이터를 분산 환경에서 처리할 수 있어 확장성이 뛰어남
주요 기능
-
분산 처리
- 데이터를 샤드 단위로 나눠 저장하고, 복제본을 생성해 고가용성, 안정성 보장
-
검색 기능
- Full-Text Search와 Structured Search를 지원
- Boolean, Fuzzy, Range, Wildcard 등 다양한 검색 쿼리를 작성할 수 있음
-
데이터 분석
- Aggregation(집계) 기능을 통해 데이터를 요약하고 분석함
-
RESTful API
- HTTP RESTful API를 통해 데이터를 저장, 검색, 관리할 수 있음
사용 사례
- 로그 데이터 저장 및 분석
- 전자 상거래의 제품 검색 기능
- 실시간 데이터 분석
Logstash
데이터 수집 및 처리 도구
특징
- 다양한 소스(파일, 데이터베이스, 클라우드 서비스 등)에서 데이터를 수집하고 이를 Elasticsearch에 적합한 형식으로 변환해 전송함
- 플러그인 기반의 아키텍처로 유연한 데이터 처리 및 변환이 가능함
- 필터링, 변환, 형식화 등의 데이터 처리 작업을 수행할 수 있음
주요 기능
-
입력 플러그인(Input Plugins)
- 다양한 소스에서 데이터를 수집함
- 파일, 데이터베이스, Kafka, Beats, HTTP ...
-
필터
- 데이터를 변환하거나, 특정 조건에 따라 데이터를 필터링함
- Grok(패턴 매칭), Mutate(데이터 수정), Date(시간 변환) ...
-
출력 플러그인(Output Plugins)
- 데이터를 Elasticsearch, 파일, 데이터베이스 등으로 전달
-
파이프라인
- 입력->필터->출력의 데이터 처리 과정을 정의한 워크플로우
사용 사례
- 로그 데이터의 정규화 및 변환
- 실시간 데이터 스트림 처리
- 데이터 전처리 작업(필터링, 변환 등)
Kibana
데이터 시각화 및 대시보드 도구
특징
- Elasticsearch에 저장된 데이터를 시각화하거나 검색 쿼리를 실행해 결과를 대화형 차트, 그래프, 지도 등으로 표현할 수 있음
- 사용자 친화적인 UI 제공
주요 기능
-
대시보드
- 실시간 데이터를 시각화하는 사용자 정의 대시보드를 생성할 수 있음
- 다양한 위젯(그래프, 차트, 테이블 등)을 조합해 대시보드를 구성함
-
Discover
- Elasticsearch 데이터를 검색하고 탐색할 수 있는 기능을 제공함
- 필터링 및 쿼리 실행이 가능
-
Visualize
- 데이터 기반으로 차트, 그래프 등을 생성하여 시각화함
-
Alerting, Monitoring
- 특정 조건에 따라 경보를 설정하고, 클러스터 상태를 모니터링할 수 있음
-
Canvas, Maps
- Canvas: 사용자 지정 보고서를 만들 수 있음
- Maps: 지도 기반 데이터를 시각화함
사용 사례
- 시스템 상태 대시보드 생성
- 로그 및 메트릭 데이터 시각화
- 비즈니스 데이터 분석 및 보고서 작성
ELK의 주요 용도
-
로그 관리
- 애플리케이션, 서버, 네트워크 장치의 로그 데이털르 실시간 수집, 분석
- 로그 데이터에서 문제를 빠르게 발견하고 해결하는데 도움
-
모니터링 및 분석
- 시스템 성능 및 애플리케이션 동작에 대한 모니터링
- 메트릭 및 로그 데이터를 통합해 문제 해결과 최적화에 활용
-
보안 및 규정 준수
- 침입 탐지 및 감사 로그 분석
- 보안 이벤트를 모니터링, 이상 탐지 지원
ELK의 데이터 흐름
-
데이터 수집(Logstash)
- 다양한 소스에서 데이터를 수집하고 필요에 따라 변환 및 필터링하여 Elasticsearch에 전달
-
데이터 저장 및 검색(Elasticsearch)
- 데이터를 저장하며, 빠른 검색 및 집계 쿼리 지원
-
데이터 시각화(Kibana)
- Elasticsearch에 저장된 데이터를 쿼리하고 시각화해 대시보드를 만듦
장점과 한계
장점
- 오픈소스: 무료 사용, 커스터마이징 가능
- 확장성: 대규모 데이터를 처리할 수 있음
- 다양한 데이터 지원
- 강력한 시각화 도구
한계
- 설정이 복잡함
- 리소스 요구량: 대규모 데이터 처리 시 많은 하드웨어 리소스를 필요로 함
- 실시간 처리: 실시간 메트릭 처리에는 Prometheus 같은 도구가 더 적합할 수 있음
타 서비스와의 비교
-
비용
- ELK는 오픈소스라 비용 효율적
- 상용 솔루션(Splunk, Datadog)은 비용이 발생하지만 기술 지원과 고급 기능을 제공
-
확장성
- 대규모 데이터 처리에는 ELK나 Splunk가 적합할 수 있음
-
유지 관리
- ELK는 운영과 유지 관리가 필요한 반면, Datadog 같은 SaaS는 설정이 간단함
-
목적
- 로그 중심(ELK, Gaylog)
- 메트릭 중심(Prometheus + Grafana)
로그 기반 처리와 메트릭 기반 처리
데이터를 수집, 분석, 활용하는 방식에서 차이가 있음
로그 기반 처리
정의
- 로그: 시스템, 애플리케이션, 네트워크에서 발생하는 이벤트의 기록
- 로그는 정밀한 이벤트 세부 정보를 포함하며, 텍스트 기반(ex: JSON, Plain Text, XML)으로 저장됨
특징
-
구체적인 정보 제공
- 로그는 시스템에서 발생한 특정 이벤트, 오류 또는 요청의 세부 정보를 제공함
- ex) HTTP 요청 로그(응답 시간, 상태 코드, 요청 경로 등), 애플리케이션 에러 로그 등등
-
무제한 데이터
- 로그는 이벤트마다 생성되므로, 데이터 크기가 제한없이 증가할 수 있음
-
형식 다양성
- 애플리케이션마다 로그의 형식이 다르며, 텍스트 기반으로 저장됨
- 수집 및 분석 전엔 전처리(Parsing)나 변환이 필요함
장점
- 디버깅 및 문제 해결에 유용함: 시스템에서 발생한 세부 이벤트를 기록하기 때문에 문제 원인을 정확히 파악하는데 도움이 됨
- 세밀한 분석: 특정 API 요청의 동작이나 오류 발생 시점 확인 등 세밀한 분석이 가능
단점
- 리소스 소비: 로그 데이터는 크기가 크고 처리량이 많아질 수 있어 저장 및 처리 비용이 증가함
- 실시간 분석이 어려움: 많은 로그 데이터를 실시간 처리하려면 높은 처리 능력이 요구됨
사용 사례
- 애플리케이션 디버깅
- 보안 이벤트 분석
- 사용자 행동 추적
메트릭 기반 처리
정의
- 메트릭: 시스템이나 애플리케이션의 숫자로 표현되는 상태 정보
- CPU 사용률(%), 메모리 사용량(GB), HTTP 요청 응답 시간(ms)
특징
-
정량적인 데이터
- 숫자로 표현되며 time series 데이터로 저장됨
- ex) 초당 요청 수(QPS), 에러율(%), 네트워크 트래픽(MB/s) ...
-
샘플링
- 일정 시간 간격으로 측정된 데이터를 저장하며, 특정 이벤트보다는 상태 변화의 트렌드를 파악하는 데 중점이 있음
-
구조적 형식
- 메트릭은 간단하고 정형화된 데이터 형식을 가지며, 전처리 없이 바로 분석에 사용할 수 있음
단점
- 세부 정보 부족: 이벤트의 세부 정보를 포함하지 않기에 문제 발생 시 원인을 정확히 파악하기엔 어려움
- 이벤트 발생과의 연관성 부족: 이벤트 자체보다는 상태 변화를 관찰 가능
사용 사례
- 시스템 상태 모니터링: CPU, 메모리, 디스크 I/O, 네트워크 트래픽
- 서비스 성능 분석: HTTP 응답 시간, 성공/실패 비율
- 알림 및 경보: 특정 메트릭 임계값 초과 시 경보 발송
결론
로그와 메트릭은 상호보완적으로 사용된다.
로그: 문제가 발생했을 때 원인을 파악하기 위한 세부 정보를 제공
메트릭: 시스템 상태를 모니터링해 문제가 발생하기 전에 경고를 발송
- 메트릭 기반 모니터링 도구(prometheus)가 CPU 사용량 급증을 탐지하고 경보를 보냄
- 로그 기반 도구(ELK)가 해당 시간대에 실행된 프로세스를 분석해 CPU 사용량 급증 원인을 파악함