ELK란?
데이터 처리 관련 오픈소스 솔루션인 Eleasticsearch, Logstash, Kibana를 같이 연동하여 사용하는 스택을 의미하는 약어
E = Elasticsearch
- 분산 검색/분석 엔진으로 데이터를 색인해 빠르게 검색O
- 로그 분석, 전체 텍스트 검색, 보안 인텔리전스, 비지니스 분석 및 운영 등에 사용됨
Elasticsearch 작동 방식
- JSON 문서 형식의 데이터를 Logstash 같은 수집 도구나 API를 이용해 Elasticsearch로 전송할 수 있음
- Elasticsearch는 자동으로 원래 문서를 저장하고 클러스터의 인덱스에 문서에 대한 검색 가능한 참조를 추가함
- Elasticsearch API를 사용해 문서 검색/조회O
- 시각화 도구인 Kibana를 Elasticsearch와 함께 사용해 데이터 시각화, 대화식 대시보드 구축O
Elasticsearch 이점
- 오픈소스
- 신속한 가치 실현
- REST API, HTTP 인터페이스 제공
- 스키마 없는 JSON 문서 사용
- 고성능
- Elasticsearch의 분산 성질로 인해 대량 볼륨의 데이터를 병렬로 처리할 수 있음
- 무료 도구 및 플러그인
- 시각화/보고서 도구인 Kibana가 통합되어 제공됨
- Beats, Logstash와 통합도 제공해 소스 데이터를 쉽게 전환하고 Elasticsearch 클러스터에 로드할 수 있음
- 실시간 분석
- 전문(full text) 검색 엔진
- 쉬운 애플리케이션 개발
- Java, Python, PHP, Javascript, Node.js, Ruby 및 기타 여러 다양한 언어 대한 지원 제공
- Multitenancy
- Elasticsearch의 데이터들은 Index라는 논리적 집합 단위로 구성되고 서로 다른 저장소에 분산되어 저장됨
- 서로 다른 인덱션들을 별도의 커넥션 없이 하나의 질의로 묶어 검색하고, 검색 결과들을 하나의 출력으로 도출할 수 있는 특성을 'Multitenancy'
L = Logstash
- 데이터 수집 엔진
- 다양한 소스에서 데이터 수집해 Elasticsearch 같은 다른 데이터 저장소에 전송O
- 데이터 파이프라인 구축 위한 다양한 플러그인 제공
- 사전 구축된 필터, 많은 플러그인에 대한 지원으로 데이터 소스/유형 관계 없이 쉬운 데이터 수집O
- Elasticsearch의 데이터 파이프라인으로도 자주 사용됨
- Logstash의 데이터 처리 과정
- 입력(Inputs) -> 필터(Filters) -> 출력(Outputs)
Logstash 이점
- 비정형 데이터 쉽게 로드
- 시스템 로그, 웹 사이트 로그, 애플리케이션 서버 로그 등 다양한 데이터 소스에서 비정형 데이터를 쉽게 수집O
- 사전 구축된 필터
- 사용자가 일반 데이터 유형을 쉽게 전환해 Elasticsearch에 인덱싱하고 사용자 지정 데이터 전환 파이프라인을 구축하지 않고도 쿼리를 시작할 수 있음
- 유연한 플러그인 아키텍처
- 이미 Github에 수많은 플러그인이 있어 데이터 파이프라인을 사용자 지정하는데 필요한 플러그인이 구축되어 있을 수 있음
- 요구 사항에 맞는 것이 없는 경우, 쉽게 직접 만들 수 있음
K = Kibana
- Elasticsearch에서 저장된 데이터 시각화 위한 도구
- 다양한 차트, 대시보드 생성해 데이터 시각화/분석O
- Elasticsearch 쿼리 사용해 데이터 검색/필터링 기능 제공
Kibana 이점
- 대화형 차트
- 사용자가 대량의 로그 데이터를 대화형으로 탐색하는 데 사용할 수 있는 차트/보고서 제공
- 매핑 지원
- 지리 공간적 기능 포함되어 데이터의 지리적 정보를 제일 위에 두고 지도에 시각화하는 계층화 작업O
- 사전 구축된 집계&필터
- 몇 단계만으로 히스토그램, 상위 N개 쿼리, 추세 같은 다양한 분석 실행O
- 쉽게 액세스 가능한 대시보드
- 대시보드/보고서 쉽게 설정O, 다른 사람에게 공유O
Kibana's Menu
Discover
- Elasticsearch에 색인된 소스 데이터들의 검색 위한 메뉴
- 검색 창에 질의문 통해 데이터 검색/필터링
- 검색된 데이터 원본 문서 확인, 보고 싶은 필드만 선택해 테이블 형태 조회O
- Time Series(시계열) 기반의 로그 데이터 경우, 시간 히스토그램 그래프 통해 시간대별 로그 수도 표시됨
Visualize
- aggregation 집계 기능 통해 조회된 데이터의 통계를 다양한 차트로 표현할 수 있는 패널 만드는 메뉴
- 다양한 시각화 도구들 사용O, 여기서 만들어진 패널들을 조합해 대시보드 생성
Dashboard
- Visualize 메뉴에서 만들어진 시각화 도구들을 조합해 대시보드 화면 만들고 저장, 불러오기 등 할 수 있음
- 검색 창에 쿼리 입력 혹은 시각화 도구 클릭해 조회할 데이터들의 필터링O
- URL로 대시보드를 다른 사람과 공유O, JSON 형식으로 내보내기/불러오기O
Beats
- 경량화된 로그 수집기 도구
- Libbeat, Packetbeat, Filebeat, Metricbeat, Winlogbeat 등이 있음
- Filebeat는 수집한 로그 정보를 Logstash 또는 Elasticsearch에 수집한 metric 데이터 정보 전송O
ELK 스택의 동작 방식
출처 : 미엘린클라우드
1. Logstash가 데이터를 수집/변환하여 올바른 대상으로 전송
2. Elasticsearch는 수집된 데이터를 인덱싱, 분석, 검색
3. Kibana는 분석 결과를 시각화 함
- 데이터 소스를 어디서 가져오는가? : 기존의 DB, 실시간 정보(로그 파일) 등
- Elasticsearch에서는 데이터의 일관성 있는 처리가 필요함
- 모든 데이터의 유형이 다르면 처리/분석 어렵고 의미가 없음
- ELK에서 Logstash 이용해 정형화된 데이터로 분석하게 됨
ELK 스택의 기능
- 로그 분석, 문서 검색, 보안 정보/이벤트 관리(SIEM), 관찰성 등 문제 해결에 사용됨
- 방대한 로그 수집하고자 하는 대상으로 로그 수집O
- 원하는 정보 필터/가공해 시각화 -> 데이터 정보수집/분석O
- 임계치 설정 후 특정 임계치 한계 도달 시 알람 기능 활성화 해 경고 전달O
정리
- Elasticsearch는 검색/분석 엔진으로 거대한DB와 같아 SQL 구문 형태로 빠른 검색이 가능함
- NoSQL(NotSQL) : 데이터 수정보다는 데이터 생성/제거에 강화된 기능
- Logstash는 필터링을 통해 로그/이벤트 수집
- Kibana는 데이터/ 시각화/분석 도구
출처
https://myelincloud.com/elk-%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-elasticsearch-logstash-kibana/
https://aws.amazon.com/ko/what-is/elk-stack/
https://aws.amazon.com/ko/what-is/elasticsearch/
https://esbook.kimjmin.net/