본문 바로가기

Open source

[Elasticsearch, Logstash, Kibana] 슬랙에 log 알람하기

 

들어가기 앞서 . .

- 아래 링크에서 ELK stack에 대해 구축하고 간단하게 어떤식으로 활용하는지 정리했다. 

- 이번에는 ELK stack내의 오픈소스 플러그인인 opendistro alerting plugin 사용법에 대해 간단하게 정리해 본다.

 

2021.02.23 - [Open source] - Docker compose를 활용한 Elasticsearch, Kibana, Logstash 구축 및 활용 part1 (for Mac)

 

Docker compose를 활용한 Elasticsearch, Kibana, Logstash 구축 및 활용 part1 (for Mac)

들어가기 앞서.. - "내 맘대로 네이버 뉴스 스크래핑"[링크]의 연장선으로 스크래핑한 스케줄링하여 색인/검색할 시스템이 필요해서 Elasticsearch를 이용해 보기로 했다. 검색을 하던 중 보통 ELK(Elas

dong-guri.tistory.com

2021.03.06 - [Open source] - Docker compose를 활용한 Elasticsearch, Kibana, Logstash 구축 및 활용 part2 (for Mac)

 

Docker compose를 활용한 Elasticsearch, Kibana, Logstash 구축 및 활용 part2 (for Mac)

들어가기 앞서... - 아래 링크에서 진행했던, docker compose를 활용한 ELK stack 구축에 이어서 뉴스를 스크래핑해서 색인/검색에 필요한 간단한 기능들을 활용하는 내용이다. - python을 활용해서 Elastics

dong-guri.tistory.com

 

 

Open Distro for Elasticsearch

- Open distro는 2019년에 AWS에서 개발한 Elasticsearch의 부가 기능들을 위한 오픈 소스이다. 100% 오픈소스(Apache 2.0 라이선스)이며, 첫 출시 버전에서는 Elasticsearch와 Kibana에 일련의 고급 보안, 이벤트 모니터링 및 알람, 성능 분석 및 SQL쿼리 기능을 포함하고 있었고, ELK stack의 버전이 업데이트 됨에 따라 지속적으로 업데이트해서 배포하고 있다. [링크]

(ELK stack의 버전에 따라 의존성이 꽤나 강해서 버전을 제대로 맞추지 않으면 설치가 어렵다.)

 

- 처음에 버전에 대한 사항을 제대로 확인하지 않고, 내멋대로 설치하다가 꽤 많은 시간을 허비했다.. 이러한 오픈소스를 활용할땐 꼭 문서를 잘 참고하는 습관을 들이자.

Standalone Kibana 버전에 따른 Open distro plugin install 버전 확인 : [링크]

Standalone Elasticsearch 버전에 따른 Open distro plugin install 버전 확인 : [링크]

 

 

설치 방법 

- Docker compose를 활용해 구축한 ELK stack에 이벤트 로그 알람에 대한 notification을 위해 open distro alerting 플러그인을 설치한다.

 

1) ELK stack 설치 디렉토리에서 ELK version을 확인한다. ( 7.10.0 버전에 해당하는 open distro alerting 버전을 위의 버전 확인 링크에서 확인 --> open distro alerting 1.12.0.2 버전을 설치)

docker-elk (main) ✗ cat .env
ELK_VERSION=7.10.0

 

2) Elasticsearch와 Kibana의 Dockerfile에 플러그인을 설치하는 명령어를 써준다.

ARG ELK_VERSION

# https://www.docker.elastic.co/
FROM docker.elastic.co/elasticsearch/elasticsearch:${ELK_VERSION}
# Add your elasticsearch plugins setup here
# Example: RUN elasticsearch-plugin install analysis-icu
RUN elasticsearch-plugin install --batch analysis-nori
RUN elasticsearch-plugin install -b https://d3g5vo6xdbdb9a.cloudfront.net/downloads/elasticsearch-plugins/opendistro-alerting/opendistro_alerting-1.12.0.2.zip

Elasticsearch Dockerfile 내용

 

ARG ELK_VERSION
# https://www.docker.elastic.co/
FROM docker.elastic.co/kibana/kibana:${ELK_VERSION}
# Add your kibana plugins setup here
# Example: RUN kibana-plugin install <name|url>
RUN kibana-plugin install https://d3g5vo6xdbdb9a.cloudfront.net/downloads/kibana-plugins/opendistro-alerting/opendistroAlertingKibana-1.12.0.2.zip

Kibana Dockerfile 내용

 

 

 

3) 새롭게 docker-compose를 build 하고, ELK를 띄운다.

docker-elk (main) ✗ docker-compose build

docker-elk (main) ✗ docker-compose up
(기존에 ELK docker-compose가 실행중이라면 docker-compose down 명령어를 우선 실행)

docker-compose build 결과

정상적으로 실행됐다면, 아래와 같이 Kibana에서 Open Distro for Elasticsearch를 확인 할 수 있을 것이다.

Kibana 화면

 

 

혹시 아래와 같은 로그가 발생하며 Kibana가 죽는다면 part1에서 컨테이너가 구동이 안됐을때, 도커 자체 메모리 리소스를 증진 시키면 정상적으로 구동될 것이다.

 

Kibana가 메모리 이슈로 인해 구동되지 않는 에러

 

 

Open Distro alerting 사용 방법

1) Kibana의 Alerting 탭에 들어가서 먼저 Destination을 만들어 준다. ( 본인 슬랙의 Webhook URL 생성 후 입력 )

슬랙 Destination 생성

 

 

2) Monitor를 생성하고, 생성화면 중간에 Method of definition을 Define using extraction query로 바꾸고, alerting할 로그 인덱스를 선택한다.

Monitor 생성
Alerting이 필요한 logstash Index 선택

 

3) 스케줄링 설정을 한다. 설정 방법은 [링크]를 확인하면 어렵지 않게 할 수 있다.

Scheduling

 

4) Trigger 설정은 따로 수정하지 않고, 만들어놨던 Destination으로 설정 후에 테스트를 해본다.

슬랙에서 Trigger Test결과

위와 같이 테스트가 완료 됐다면, 성공한 것이다.

 

마무리 . .

이제 뉴스 웹스크래핑을 위한 기본 셋팅을 완료 했다. 매일 아침에 최신 뉴스를 수집하고, 수집 결과(수집된 뉴스의 통계치, 이슈 로그 등)를 모니터링하며 진행해 볼 예정이다.