일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- freshness
- DBT
- dbt_project
- 도커
- docker
- 쿠버네티스
- 크롤링
- CDC
- query history
- KubernetesPodOperator
- airflow
- 모바일
- spring boot
- mysql
- polars
- 파이썬
- spark
- 동적 차트
- proerty
- ksql
- Python
- 윈도우
- Materializations
- kafka
- 카프카
- Java
- k9s
- numpartitions
- bar cahrt
- UI for kafka
- Today
- Total
데이터 엔지니어 이것저것
ELK란? 본문
모든 유형의 구조화 및 비정형 데이터에서 실시간으로 실행 가능한 통찰력을 제공하는 End to End Stack
데이터를 검색하보 분석하는데 용이하다
ELK
- Elasticsearch : 검색 및 분석 엔진
- Logstash : 여러 소스에서 동시에 데이터를 수집하여 변환후 "stash"로 전송하는
서버 사이드 데이터 처리 파이프 라인 - Kibana : 사용자가 엘라스틱에서 차트와 그래프를 이용해 데이터를 시각화
Json 기반의 분산형 오픈소스 restful 검색 엔진
ELK Stack 이란?
- ELK 솔루션에서 Beats 추가되면서 ELK Stack 이라고 불립니다.
: 서버에 에이전트로 설치하여 다양한 유형의 데이터를 Elastic Search 또는 Logstash에 전송하는 오픈 소스 데이터 발송자입니다.
Elastic Search - 개념정리
1) Near Realtime
- 거의 실시간 검색 플랫폼이라는 특징을 가지고 있습니다.
2) Cluster
- 전체 데이터를 함계 보유하고 모든 노드에서 연합 인덱싱 및 검색 기능을 제공하는 하나 이상의 노드모음입니다.
- 기본적으로 'elasticsearch' 라는 고유한 이름으로 식별합니다.
3) Node
- 클러스터의 일부이며 데이터를 저장하고 클러스터의 인덱싱 및 검색 기능에 참여하는 단일 서버입니다.
- 노드에 할당되는 임의 UUID인 이름으로 식별합니다.
- 특정 클러스터를 클러스터 이름으로 결합하도록 노드를 구성 할 수 있습니다.
4) Index
- 다소 유사한 특성을 갖는 문서들의 집합입니다.
- 단일 클러스터에서 원하는만큼의 인덱스를 정의 할 수 있습니다.
5) Type
- Index 내에서 하나 이상의 Type을 정의 할 수 있습니다.
6) Document
- Index를 생성 할 수 있는 기본 정보 단위입니다.
- JSON으로 표현합니다.
7) Shards
- Index는 잠재적으로 단일 노드의 하드웨어 제한을 초과 할 수 있는 많은 양의 데이터를 저장 할 수 있습니다. 하지만 단일 노드의 디스크가 맞지 않거나 단일 노드의 검색 요청만 처리하기에는 너무 느릴 수 있기 때문에 shards를 이용하여 Index를 여러 조각으로 나눌 수 있습니다.
- 수평적으로 콘텐츠 볼륨을 split/scale 가능합니다.
- 여러 노드에서 잠재적으로 분산을 통해 작업을 분산 및 병렬 처리를 할 수 있으므로 성능/처리량이 향상됩니다.
8) Replication
- 장애가 발생할 경우 고가용성을 제공합니다. 그렇기 때문에 복제본 샤드는 복사된 원본/기본 샤드와 동일한 노드에 할당되지 않습니다.
- 모든 복제본에서 검색을 병렬로 실행할 수 있기 때문에 검색 볼륨/처리량을 수평 확장 할 수 있습니다.
- 기본적으로 각 인덱스는 4개의 기본 샤드와 1개의 복제본이 할당됩니다.
Logstash - 개념정리
1) input
- 입력을 사용하여 Logstash에 데이터를 가져옵니다.
- file, syslog(RFC3164 형식), beats(Filebeat)
2) filter
- Logstash 파이프 라인의 중간 처리 장치입니다.
① grok : 구문 분석 및 임의의 텍스트로 구성합니다.
② mutate : 이벤트 필드에서 일반적인 변환을 수행합니다.
③ drop : 이벤트를 삭제합니다.
④ clone : 이벤트의 복사본을 만듭니다.
⑤ geoip : ip 주소의 지리적 위치에 대한 정보를 추가합니다.
3) output
- Logstash 파이프 라인의 최종 단계입니다.
① elasticsearch : 이벤트 데이터를 elasticsearch에 보냅니다.
② file : 디스크 파일에 씁니다.
③ graphite : graphite에 전송합니다. (graphite : 메트릭을 저장하고 그래프로 작성하는데 사용되는 오픈 소스 도구)
④ statsd : 카운터 및 타이머와 같은 통계르 수신하고 UDP를 통해 전송되며, 하나 이상의 플러그 가능한 백엔드 서비스에 집계를 보내는 서비스입니다.
4) codec
- 입력 또는 출력의 일부로 작동 할 수 있는 스트림 필터입니다.
- 인기 코덱에는 json, msgpack, plain이 있습니다.
① json : JSON 형식의 데이터를 인코딩하거나 디코딩합니다.
② multiline : 자바 예외 및 스택 추척 메시지와 같은 여러 줄 텍스트 이벤트를 단일 이벤트로 병합합니다.
Beats - 개념정리
1) FileBeat
- 서버에서 로그파일을 제공합니다.
2) PacketBeat
- 응용 프로그램 서버간에 교환되는 트랜잭션에 대한 정보를 제공하는 네트워크 패킷 분석기 입니다.
3) MetricBeat
- 운영 체제 및 서비스에서 Metrics를 주기적으로 수집하는 서버 모니터링 에이전트입니다.
4) WinlogBeat
- Windows 이벤트 로그를 제공합니다.
ELK Stack의 확장 : X-Pack
- 기존 ELK Stack에서 x-pack을 이용하여 구축 및 유지를 편리하게 해줄 솔루션입니다. (하지만 유료입니다...ㅠ)
1) 특징
① Security : 데이터 보호
② Alerting : 데이터 변경 사항에 대한 알림을 제공합니다.
③ Monitoring : ELK Stack 상태를 지속적으로 체크합니다.
④ Reporting : 주기적으로 보고서를 생성하여 이메일로 전송합니다.
⑤ Graph : 데이터에서 의미 있는 관계를 살필 수 있습니다.
'오픈소스 > ES' 카테고리의 다른 글
Elasticsearch 클러스터, 노드 및 샤드 (0) | 2020.12.30 |
---|---|
docker-compose Elasticsearch (0) | 2020.12.29 |
엘라스틱서치와 관계형 데이터 베이스 비교 (0) | 2020.05.28 |