DevOps

elastalert2 적용하기

게임이 더 좋아 2024. 8. 26. 22:37
반응형
728x170

발생한 이슈

ES 지원 종료 및 필요한 피쳐가 없어 피치못하게 7.x 로 업그레이드

elastalert은 7.x에 호환성이 없는 것이라고 봐도 무방

특히 아래와 같은 에러 발생

ERROR:root:Error querying for last run: RequestError(400, u'illegal_argument_exception', u'request [/elastalert_status_status/elastalert_status/_search] contains unrecognized parameter: [_source_include] -> did you mean any of [_source_includes, _source_excludes]?')

 

 

방법

es 7.x와 8.x에 호환되고 opensearch까지 호환되는 elastalert 2 발견

ElastAlert 2 is a standalone software tool for alerting on anomalies, spikes, or other patterns of interest from data in Elasticsearch and OpenSearch.


https://github.com/jertel/elastalert2

 

GitHub - jertel/elastalert2: ElastAlert 2 is a continuation of the original yelp/elastalert project. Pull requests are appreciat

ElastAlert 2 is a continuation of the original yelp/elastalert project. Pull requests are appreciated! - jertel/elastalert2

github.com

 

 

 

특징

기존에 쓰던 elastalert의 rules 파일 그대로 사용가능(ElastAlert 2 is backwards compatible with the original ElastAlert rules.)

config 파일도 거의 똑같이 사용 가능

 

도입할만한가? 다시 생각해보기

똑같은 기능이 있는가? -> O다른 사람이 사용하기 어려운가? -> X기능도 커버할 수 있고 사용하기도 그렇게 어렵지 않다면 도입해보고 써보고 결정하는 것이 맞다고 생각

 

 

 

구현

기존에 python package로 구성된 서버이기 때문에

기존 elastalert을 쓸 수 있는 서비스는 유지하면서 같은 서버에 elastalert2를 구성해야 했음

종속성에서 벗어나기 위해 docker환경 구성

 

Amazon linux 2에서의 docker install 방법

https://www.cyberciti.biz/faq/how-to-install-docker-on-amazon-linux-2/

 

 

구현 중 발생한 docker sock 에러

... Got permission denied while trying to connect to the Docker daemon socket at ... : dial unix /var/run/docker.sock: connect: permission denied

발생하는 이유는 에러 내용과 같다.

실제로 발생하는 근본적 이유는 유저가 권한이 없기 때문이다.Docker Daemon이 Unix Socket에 권한이 없다는 것이다. 기본적으로 docker.sock의 파일권한은 660으로 되어있다. (u,g 만 가능하며 o은 불가능)다시 말해서 Docker Daemon이 Unix Socket을 이용하려면.. owner거나 group에 속해한다는 말과 같다.root의 파일이며 docker 그룹에 속하기 때문에 현재 나를($USER)를 그룹에 포함시킨 후 세션을 재연결하면 된다.

 

$ sudo usermod -aG docker $USER

 

 

수많은 서비스가 뜰지도 모르기 때문에work directory/docker/ docker-compose.yaml 파일존재 및 최상위 폴더/configelastalert2 컨테이너가 여러개 뜰 수 있게 공통의 config 볼륨 설정/ruleselastalert2 컨테이너의 여러개 rule 담당할 수 있게 볼륨 설정/scriptselastalert2 의 기타 특성을 반영하기 위한 script 볼륨 설정

 

작성해서 docker-compose로 띄웠다.정상적으로 잘 작동한다.

 

 

개선할 점

elastalert2 에 대한 세부기능을 조사하지 못하고elastalert의 기능만 대체하기로 했음도입하기로 했다면 이용할 수 있는 것을 더 알아보겠음

 

728x90
반응형
그리드형