DevOps

ELK

iksadnorth 2024. 1. 14. 15:43

👣 개요

Elasticsearch, Logstash, Kibana의 약자를 따서 ELK Stack이라고 부름.

로그 수집 | Logstash, Beats
로그 저장 | Elasticsearch
로그 시각화 | Kibana

 

👣 Elasticsearch

Apache Lucene 기반의 실시간 분산 검색 엔진

- 정형, 비정형 데이터 검색 기능
- 역색인 기반 빠른 검색 속도 지원
- Cluster 지원으로 고가용성 확보

데이터 구조

- Document | RDBMS의 Row에 대응. 데이터 최소 단위.
- Field | RDBMS의 Column에 대응. Document의 데이터 타입
- Mapping | Field 속성을 정의 및 Indexing 방법 정의
- Index | RDBMS의 Table에 대응. Shard 단위로 분리되고 분산되어 가용성 확보
- Shard | 고가용성을 위해 분산해서 저장한 물리적 공산. 원본을 Primary Shard, 복사본을 Replica

클러스터 구조

9200 port는 노드끼리 정보공유.
9300 port는 유저 요청을 처리.

마스터 노드와 데이터 노드

Master Node는 무조건 홀수갯수로 존재해야 한다.

 

특정 클러스터의 장애 발생 후 복구 시, 어떤 클러스터를 참고해서 복구할지를 결정하기 위해
무조건 결정이 가능한 홀수 갯수로 구성해야 한다.

Master Node

Master-eligible Node 중에 1개가 뽑혀 작동됨.
데이터를 저장하지 않고 메타데이터를 저장함.

Data Node

데이터가 분산 저장되는 물리적 공간인 shard가 배치됨.

 

👣 Beats

Beats 종류

- Filebeat | 파일 기반 로그 수집
- Metricbeat | 메트릭 데이터 수집
- Packetbeat | 네트워크 데이터 수집
- Winlogbeat | 윈도우 OS 이벤트 로그 수집
- Auditbeat | 감사 데이터 수집
- Heartbeat | 가동 시간 모니터링
- Functionbeat | 클라우드 데이터를 위한 서버리스 수집기

 

👣 Logstash

Ruby on JVM 기반 엔진.

Input 종류

- File
- Syslog
- Redis
- Beats
- Jdbc

Filter 종류

- Grok
- mutate
- Drop
- Clone
- geoip

Filter 종류 - Grok

형식 | %{SYNTAX:SEMANTIC}

[2023=03-02 14:17][ID1] 192.1.2.6 
={변환}=>
{year:2023, month:3, day:2, hour:14, minute:17}

Output 종류

- Elasticsearch
- Graphite
- File
- statd

 

👣 Kibana

Elasticsearch의 시각화를 도와주는 도구.

- KQL[Kibana Query Language]를 사용.
- 데이터 관리나 Cluster 상태를 모니터링 할 수 있음.

KQL

- Term Query | 특정 필드에 검색어가 포함되어 있는지 확인.
- Boolean Query | 논리 연산자와 같음
- Range Query | 대소 연산자와 같음
- Exist Query | 존재 여부 
- Wildcard Query | * 연산자를 이용해서 검색
- Nested Query | Document 내부의 Document 검색.