[Elasticsearch] 백엔드 장애 감지 알림 시스템 구축 (ELK 기반 준실시간 서버 로그 모니터링)
Mission.
비즈니스 로직상 오류나 장애가 발생하면,
어떻게 신속 정확히 인지할 수 있을까?
정답 : Elasticsearch 로 기능 만들어서 알림 보내자 !
AS - IS
1. RDBS에서 SQL 기반으로 데이터 정합성 체크 후 알림
ex) 결제정보 저장 테이블의 카드사 코드 컬럼 데이터 누락
SELECT ORDER_NO
FROM CARD_INFO
WHERE GARD_GBCD IS NULL
2. 비즈니스 로직 자체에 분기된 예외처리 체크 후 알림
ex) 임의의 오류코드에 대한 분기처리에 알림기능 직접 구현
if ( "".equals(stateCode) || stateCode == null) {
// service.sendKakao(orderNo);
}
3. 서버에 file 형태로 쌓이는 YYYYMMDD.log 로그파일 직접 확인
리눅스 명렁어 날리거나, FileZila로 다운받는건 매우 비효율
Q. 근데 왜 굳이 Elasticsearch로 알림 기능을 만들었나요?
A. 기존 방법의 단점 및 한계 존재
(1) 최종 생성된 DB데이터로만 검증 가능
(2) 비즈니스 로직 중단시 검증 불가능
(3) 검증 자체의 어려움
- 검증 위한 테이블 설계구축 필요 (ex. FAIL_YN)
- 검증에 필요한 데이터 저장 로직 필요
- 스키마 구조 변경시 모니터링 SQL쿼리도 변경 필요
(4) RDB 기반 복잡한 검색시 속도지연 발생
(5) 운영DB 부하 발생 위험 증가
=> 기존 방법들에 + "Elasticsearch"로 한계 보완 및 유지보수성 강화
특징을 표로 비교해보면 다음과 같다.
ASIS는 결국 특정 조건 전제가 필요함.
DB에 데이터가 저장되어 있어야 한다거나,
Java딴에 분기처리가 필요하다거나..
뭔가를 검증해야만 한다는....
비즈니스 로직이 중단되서
저장된 데이터가 없다면 ???
혹은 프로그램이 비정상 종료됐다면 ???
그래서 필요한게 본 기능이다.
그렇다고, 기존 방법들이
필요 없어진다는 것은 절대 아니다
유지보수성을 한단계 더 강화하자는 것이다
대망의 프로세스 아키텍쳐
"X".equals("비즈니스 로직 중단점") == true
X가 바로 비즈니스 로직 중단점이다.
- 파란색 흐름대로라면, RDB의 SQL기반 데이터 정합성 검증시 알림발송
- 빨간색 흐름대로라면, ELK기반 즉시 텍스트 탐지시 알림발송
다시봐도 예쁘게 잘 그린거같습니다
알림 받은 나의 휴대폰 화면
팀즈, SMS문자, 카카오알림톡 3가지
+ 사내시스템알림 +메일알림까지 연동은 덤
Kibana 탐지 현황 대시보드
Pod별 / 팀별 / 업무별 / 서비스별 등 카테고리로 분류하여
로그 발생 추이 살펴보자
매우 간단하게 만든 대시보드
마치며
더욱 고도화해야 할 부분 (ex. Error 로그 탐지시)
1. 반복 적재된 Error 로그에 대한 복수알림 미발송 처리
2. 동일한 Error 로그의 경우 대시보드에 중복되지 않게 표시
3. 이미 인지하고 있는 Error 에 대한 임시 알림 비활성화 기능 구현
+ 서버 로그가 잘 수집되어야 한다는 것
+ 프로젝트 구성원 모두가 로그를 잘 남겨주어야 한다는 것
'IT > Elasticsearch' 카테고리의 다른 글
[Elasticsearch] Elastic Contributor Program 이란? (0) | 2024.07.10 |
---|---|
[Elasticsearch] ILM - Cluster 성능 개선 (0) | 2024.07.10 |
[Elasticsearch] 회사 내부 첨부파일의 내용을 통합 검색할 수 있다면? (feat. Fasoo DRM, Tika, Confluence) (0) | 2024.07.05 |
[Elasticsearch] 벡터서치 구현시 텍스트 데이터 벡터화 방법 고민 (0) | 2024.07.03 |
[Elasticsearch] 4. 검색 API - _search API (2) | 2023.12.05 |