학사 나부랭이
概念整理 - ELK Stack 본문
ELK
실시간으로 로그 및 데이터 수집, 분석할 수 있는 도구이다. 즉, 수많은 로그를 한 곳으로 집중시키고 분석하여 적당한 쿼리*를 만들어 원하는 데이터를 도출해낼 수 있는 로그 관리 솔루션이다. Elastic search, Log stash, Kibana의 앞글자를 딴 단어이다.
*쿼리란? 데이터베이스에 특정 데이터를 보여달라는 클라이언트의 요청을 뜻한다.
Elastic search
ELK 중 분석 및 저장 기능을 담당한다.
Lucene* 기반으로 개발한 분산형 검색 엔진이자 분석 엔진이다.
No-SQL처럼** 사용할 수 있고 Lucene과 마찬가지로 자바 언어로 이루어져 있다.
Log stash를 통해 수신된 데이터를 저장소에 저장한다.
데이터를 중심부에 저장하여 예상되는 항목을 검색하고 예상치 못한 항목을 밝혀낼 수 있다.
정형, 비정형, 위치정보, 메트릭*** 등 원하는 방법으로 다양한 유형의 검색을 수행 및 결합할 수 있다.
표준 RESTful**** API와 JSON을 사용한다.
*Lucene(루씬)이란? 자바 언어로 이루어진 검색 엔진 같은 정보검색 라이브러리이며 FOSS(Free and Open-Source Software)이다. 아파치 소프트웨어 재단에 의해 지원 및 배포된다.
**ES에서 저장되는 데이터 단위가 문서(Document) 단위이다. 문서를 추가(indexing)할 때 ID를 자동 또는 수동으로 설정할 수 있는데 이 때 ID를 수동으로 지정해줄 경우 No-SQL처럼 사용할 수 있다.
***메트릭이란? 타임스탬프와 한 두가지 숫자 값을 포함하는 이벤트이다. 모든 메트릭의 행이 타임스탬프를 기준으로 정렬된 메트릭 파일에 순차적으로 추가된다. 로그는 이벤트가 발생했을 때 로그 파일에 기록되는데 메트릭은 주기적으로 기록한다. 이런 메트릭은 리소스 사용 모니터링, DB 모니터링 등 HW/SW의 상태 모니터링을 목적으로 사용된다.
****RESTful API란? REST 아키텍처의 제약 조건을 준수하는 Application Programming Interface, REST는 프로토콜(통신 규약)이나 표준이 아닌 아키텍처 원칙 세트이다.
1. High Availablity
오랫동안 정상적으로 수행할 수 있으며 확장 가능한 오픈소스 소프트웨어이다.
2. Near Realtime
거의 실시간으로 검색할 수 있는 플랫폼이다.
3. Cluster
전체 데이터를 보유하며 모든 노드에서의 인덱싱 및 검색 기능을 제공하는 노드 모음이다.
4. Node
클러스터의 일부, 데이터를 저장하고 클러스터의 인덱싱 및 검색 기능에 참여하는 단일 서버이다.
5. Index
유사한 특성을 갖는 문서들의 집합이며 단일 클러스터에서 원하는 만큼의 인덱스를 정의 가능하다.
6. Type
Index에서 하나 이상의 타입을 정의할 수 있다.
7. Document
인덱스를 생성할 수 있는 기본 정보 단위이며 JSON으로 표현한다.
8. Shards
인덱스는 단일 노드의 HDD 용량을 초과할 수 있을 정도로 많은 데이터를 저장할 수도 있다. 그러니 단일 노드의 데이터의 양이 너무 많으면 해당 노드의 검색에 드는 시간이 많아지기에 shards를 통해 인덱스를 여러 조각으로 나눈다.
수평적으로 컨텐츠의 볼륨을 split/scale 가능하며 작업을 분산 및 병렬 처리를 가능케 하여 성능이 향상된다.
9. Replication
장애가 발생하는 상황에서 고가용성을 제공한다. 그렇기에 복제본 샤드는 원본(기본) 샤드와 동일한 노드에 할당되지 않는다.
모든 복제본에 검색을 병렬로 실행 가능해 검색 볼륨 및 처리량을 수평적으로 확장 가능하다.
기본적으로 각 인덱스는 4개의 기본 샤드와 1개의 복제본이 할당된다.
Log stash
로그를 수집하며 파싱이나 필터링* 기능을 수행하는 데이터 처리 파이프라인이며 때에 따라 데이터 수집 용도로 쓰일 수 있다.
수집할 로그를 선정해 지정된 대상 서버(ES)에 인덱싱해 전송하는 역할을 담당하는 소프트웨어이다.
*예를 들어 비정형화된(통일성 없는) 데이터들을 정형화(통일성 있게)한다.
1. Input
입력을 통해 Log stash에 적합한 데이터를 가져온다. (파일, 시스템 로그(RFC3164 형식), 비츠(FileBeat) 등)
2. Filter
파이프라인의 중간 처리 장치이다.
- grok: 구문 분석 및 임의의 텍스트로 구성
- mutate: 이벤트 필드에서 일반적인 변환 수행
- drop: 이벤트 삭제
- clone: 이벤트 복사본 생성
- geoip: IP 주소의 지리적 위치에 대한 정보 추가
3. Output
파이프라인의 최종 단계이다.
- elasicsearch: 이벤트 데이터를 ES에 전송한다.
- file: 디스크 파일에 쓴다.
- graphite: 메트릭을 저장하고 그래프로 작성하는데 사용되는 오픈 소스 도구인 Graphite에 전송한다.
- statsd: 카운터, 타이머 등의 통계를 수신하고 UDP를 통해 전송하며 하나 이상의 프러그 가능한 백엔드 서비스에 집계를 보낸다.
4. Codec
입력 또는 출력의 일부로 작동할 수 있는 스트림 필터이며 json, msgpack, plain 등이 있다.
- json: JSON 형식의 데이터를 인코딩, 디코딩 한다.
- multiline: 자바 예외 및 스택 추적 메시지 등의 여러 줄의 텍스트 이벤트를 단일 이벤트로 병합한다.
Kibana
수집된 ES 데이터를 통계 및 집계해서 시각적으로 탐색하고 실시간으로 분석할 수 있다.
ELK Stack
ELK 솔수션에서 Beats가 추가된 형태이다.
Beats
서버에 에이전트로 설치해 다양한 유형의 데이터를 수집해 ES나 Log stash에 전송한다.
로그, 데이터의 종류에 따라 각각의 Beats가 존재한다.
1. FileBeat
서버에서 로그 파일을 제공한다.
2. PacketBeat
응용 프로그램과 서버 사이에 교환되는 트랜잭션에 대한 정보를 제공하는 네트워크 패킷 분석기이다.
3. MetricBeat
OS 및 서비스에서 메트릭들을 주기적으로 수집하는 서버 모니터링 에이전트이다.
4. WinlogBeat
Windows의 이벤트 로그를 제공한다.
'自習 > Network' 카테고리의 다른 글
Network - Firewall (0) | 2021.05.23 |
---|---|
Network - OSI 7 Layer Model (0) | 2021.05.23 |
Network - Cookie, Session, Cache (0) | 2021.05.16 |
Network - IP (0) | 2021.05.11 |
Network - Ping (0) | 2021.05.09 |