DevBoi

[Open Search] Alerting 관련 구현 본문

[Devops]

[Open Search] Alerting 관련 구현

HiSmith 2023. 4. 29. 17:38
반응형

최근에 사용했던 곳에서 OpenSearch 관련 Alerting 구현을 했다.

Open dash는 별도로, 들어가서 세팅을 하고자할수도 있지만, 모니터링 관련 내용을 Rest api로 콜하고,

이를 생성 및 확인 수정 하는 내용을 구현하였다.

 

진행하면서 삽질도 많이하고, 공식문서에는 내용이 잘 없어서 도움이 되고자.

정리했다.

 

우선 개발한 구조는 아래와 같다.

포탈 서버에서 알림관련 내용을 저장하면, 이를 가지고 Open search 에 저장하고

이를 내용으로 Opensearch Quartz에서 알림이 나가는 구조이다.

Quartz는 Opensearch에서 알아서 처리 되도록 되어있어서, 신경 쓰지 않아도 된다.

 

 

 

필요했던 기능은 아래와 같다.

- 알림 항목 지정 

- 알림 임계치 지정

- 알림 수신자 지정

- 알림 주기 설정

- 알림 모니터링 삭제

- 알림 모니터링 수정

- 알림 이력 내용 조회

 

꽤나 번거롭다.

그래서 해당 서비스를 위해 서비스 단 설계를 아래와 같이 했다.

 

 

 

그림이 참 거지 같다.

설명을 붙이면

총 디비 테이블은 3개를 썼다.

서비스 구조는 프로젝트라는 별도 그룹이 있었다.

해당 프로젝트 별 알림 내용, 알림 수신 사용자, 모니터링 스크립트 관련 내용 이렇게이다.

스크립트에서 아래와 같이 저장을 한다.

 

이렇게 되면, 각 원하는 type의 url로 script를 바디에 심어서

Opensearch rest api를 호출 하게 된다.

스크립트에 대한 내용은 아래와 같다.

모니터 생성 스크립트
모니터 Mailsender 스크립트
모니터 수신 그룹 생성 스크립트

 

모니터링 쿼리 조건 스크립트
트리거 관련 스크립트

 

모니터링 구조가 생각 보다 복잡한데 정리하면 아래와 같다.

 

모니터 

 - 조회 조건 쿼리
 - 트리거
 - 수신그룹

 

쉽게 얘기하면 우리는 email로 보내고 있는데

- mail sender resource를 생성

- mail sender내용을 포함한 메일 그룹 (수신자 리스트) 리소스 생성

- 위 두 내용을 포함 + 조회조건 + 트리거 + 발동주기 내용을 담은 모니터 생성/수정 스크립트 생성

 

이렇게 3가지 동작이 opensearch 에서 되게끔 api를 콜해야한다.

이력에 대한 내용은 아래 내용으로 콜하되. 상태를 parameter에 추가로 심어서 날려야한다.

 

근데 여기서 좀 노답이었던게

필터링이 안된다. 상태 필터링은 얼추되는데 예를들어서

프로젝트 A + Complete State상태로 조회를 콜하면안된다.

 

그래서 삽질하다가 프로젝트 내용을 word로 심어서 추가로 보내니 된다.

이게 전체 내용에서 해당 내용이 있는 내용을 필터링 해서 보여줘서 가능한 것이다.

프로젝트 이름이 unique한게 중요하다, 애초에 모니터링 이름도 프로젝트 이름으로 생성해서

가능한 구조였다.

행복

 

 

-끗

반응형