ELK STACK (ElasticSearch, Logstash, Kibana) 란?
1. ELK STACK 이란
사용자가 서버로부터 원하는 모든 유형의 데이터를 실시간으로 수집하고 검색, 분석하여 시각화 시키는 Elastic 기반의 오픈소스 서비스이다.
기존에 Elastic Search + LogStash + Kibana를 합쳐서 ELK STACK 이라는 이름으로 서비스를 제공한다.
5.0.0 ver 이후로 Beats가 추가 되었다.
초기 구성도 (ELK STACK)
로그 식별 → 로그 or 이벤트 데이터 수집, 분석 및 변환 → 변환된 로그 및 데이터 저장 → 시각화
+ Beats 구성도 (ElasticSearch STACK)
로그 식별 → 로그 or 이벤트 데이터 수집 → 로그 or 이벤트 데이터 분석 및 변환 → 변환된 로그 및 데이터 저장 → 시각화
2. ELK STACK Flow
ElasticSearch -NoSQL DB
Lucene 검색엔진 기반의 Full Text로 검색이 가능한 오픈소스 분석 엔진이다. 표준 RESTful API와 JSON 이용해 데이터를 처리한다.
간단한 배치, 최대의 신뢰성 및 쉬운 관리를 제공한다.
대량의 데이터를 신속하고 거의 실시간으로 저장, 검색 및 분석 할 수 있습니다.
LogStash
데이터 수집 파이프 라인 도구이다. ElasticSearch에 데이터 입력 및 피드를 수집한다.
다양한 플로그인을 이용하여 데이터를 집계 및 보관, 서버 데이터 처리, 파이프라인으로 데이터를 수집하여 필터를 통해 변환 후 ElasticSearch로 전송한다.
input : Beats, CloudWatch, Eventlog 등의 다양한 입력을 지원하여 데이터 수집
file, syslog(RFC3164 형식), beats(Filebeat)
Fillter : 형식이나 복잡성에 상관없이 설정을 통해 데이터를 동적으로 변환
① grok : 구문 분석 및 임의의 텍스트로 구성
② mutate : 이벤트 필드에서 일반적인 변환을 수행
③ drop : 이벤트를 삭제
④ clone : 이벤트의 복사본을 만듦
⑤ geoip : ip 주소의 지리적 위치에 대한 정보를 추가
output : ElasticSearch, Email, ECS, Kafka등 원하는 저장소에 데이터를 전송
① elasticsearch : 이벤트 데이터를 elasticsearch에 보냄
② file : 디스크 파일에 기록한다.
③ graphite : graphite에 전송 (graphite : 메트릭을 저장하고 그래프로 작성하는데 사용되는 오픈 소스 도구)
④ statsd : 카운터 및 타이머와 같은 통계르 수신하고 UDP를 통해 전송되며, 하나 이상의 플러그 가능한 백엔드 서비스에 집계를 보내는 서비스
Kibana
ELK 스택을 완성하는 데이터 시각화 도구이다.
kibana는 ElasticSearch 문서를 시각화할 때 사용되며 개발자가 신속하게 문서를 볼 수 있도록 다양한 다이어그램 및 그래프를 기본 제공해준다.
일반적인 검색 유형으로는 Free Text searches, Field-level searches, Logical statements, Proximity searches을 지원한다.
Beats
경량 에이전트로 설치되어 데이터를 Logstash 또는 ElasticSearch로 전송하는 도구이다. Logstash 또는 ElasticSearch 전송하는 도구이다.
Logstash보다 경량화되어 있는 서비스이다.
Filebeat, Metricbeat, Packetbeat, Winlogbeat, Heartbeat 등이 있으며 Libbeat을 이용하여 직접 구축도 가능하다.
① Packetbeat : 응용 프로그램 서버간에 교환되는 트랜잭션에 대한 정보를 제공하는 네트워크 패킷 분석기
② Filebeat : 서버에서 로그 파일을 제공
③ Metricbeat : 서버에서 실행중인 운영 체제 및 서비스에서 메트릭을 주기적으로 수집하는 서버 모니터링 에이전트
④ Winlogbeat : Windows 이벤트 로그를 제공