발생한 이슈
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
특징
기존에 쓰던 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의 기능만 대체하기로 했음도입하기로 했다면 이용할 수 있는 것을 더 알아보겠음
'DevOps' 카테고리의 다른 글
다중화(Redundancy) - 3 웹 서버의 다중화 (IPVS를 이용한 LB) (1) | 2023.12.21 |
---|---|
다중화(Redundancy) - 2. 웹서버 다중화(LB 없이) (0) | 2023.12.20 |
다중화(Redundancy) - 1. 다중화 개념 (1) | 2023.12.20 |
Redis 백업 (1) | 2023.07.08 |
Logging Application 비교 (0) | 2023.01.21 |