본문 바로가기

자바 심화/TIL

모니터링 - Slack Alert 보내기

개요

모니터링을 통해 애플리케이션에 문제가 발생한 경우 빠르게 문제를 파악하고 해결할 필요가 있다.

하지만 모니터링을 사람이 24시간 내내 보고 있을 수 없기 때문에 Grafana를 통해 모니터링 중 문제가 발생했을 경우 Slack을 통해 알림 메시지를 보내는 실습을 해볼 것이다.

 

모니터링 설정 방법

 

모니터링(Monitoring)

개요예전에 모니터링을 적용하기 위해 기술 블로그를 통해 정리한 적이 있지만, 이번에 강의를 통해 다시 배운 내용을 정리해 볼 것이다. Spring boot 모니터링 with Prometheus, Grafana애플리케이션 모

eleunadeu.tistory.com

 

Monitoring Notification(모니터링 알림)

모니터링 시스템에서 알림은 시스템 상태 변화나 문제 발생 시 즉각적으로 대응할 수 있도록 알려주는 핵심 기능으로 IT 시스템과 서비스 운영의 안정성과 가용성을 유지하는 데 필수적.

 

알림의 필요성

  1. 문제 조기 발견:
    • 시스템의 성능 저하, 오류 발생, 리소스 부족 등을 실시간으로 감지하여 빠르게 대응할 수 있다.
  2. 서비스 가용성 유지:
    • 장애 발생 시 알림을 통해 즉각적인 대응을 유도하여 서비스 중단 시간을 최소화한다.
  3. 비용 절감:
    • 심각한 문제 발생 전에 조치를 취해 리소스 손실과 운영 비용을 줄일 수 있다.
  4. 데이터 보호:
    • 보안 침해 시 빠른 경고로 시스템을 보호할 수 있다.
  5. 법적/계약적 준수:
    • 서비스 수준 협약(SLA)을 유지하기 위해 시스템 가용성을 실시간으로 모니터링하고 보호할 수 있다.

알림의 유형

  1. 실시간 알림:
    • 즉시 문제 해결이 필요한 중요한 이벤트(예: 서버 다운).
  2. 임계값 기반 알림:
    • CPU 사용량이 80% 이상일 때 등 특정 조건을 기준으로 발생.
  3. 예방적 알림:
    • 향후 문제가 발생할 가능성을 미리 알려주는 알림.
  4. 주기적 보고 알림:
    • 시스템 상태 보고서를 일정 주기로 제공.

알림 시스템 설계 시 고려 사항

  1. 우선순위 설정:
    • 알림 심각도를 구분하여 불필요한 알림을 줄인다.
  2. 알림 채널:
    • 이메일, 문자, 메신저, 대시보드 등 다양한 채널을 통해 전달.
  3. 대응 프로세스 정의:
    • 알림 수신 시 대응 절차와 담당자 지정.
  4. 알림 이력 관리:
    • 알림 기록을 저장해 문제 원인을 분석하고 대응 프로세스를 개선한다.

 

Grafana - Slack Alert 보내기

1. Slack App 생성

1-1. 슬랙에 가입해 워크 스페이스를 생성한다.

 

1-2. https://api.slack.com/apps에 접속해 Create App 선택

 

1-3. 팝업에서 From scratch 선택 후 앱 이름 및 워크스페이스 선택

 

1-4. OAuth & Permissions 메뉴 선택

 

1-5. Scopes 항목 → Bot Token Scopes에 chat:write 추가

 

1-6. Install to Monitor(Worksapce) 클릭 후 권한 허용

 

1-7. Incoming Webhooks 메뉴 → Activate Incoming Webhooks 활성화 → Add New Webhooks to Workspace 선택

 

1-8.  생성된 Webhook URL 복사

 

1-9. Slack app의 Alert에 사용할 워크스페이스 채널로 이동 후 @로 생성한 App 추가

 

 

2. Grafana Alert 설정

2-1. 그라파나 사이드 메뉴 Alerting → Contact points → Add contact point(Create contact point)

 

2-2. 이름 입력 → Integration → Slack 선택 후 Webhook URL 복사(1-8번) → Test

 

2-3. Slack으로 테스트 메시지 전송되는지 확인

 

2-4. 그라파나 사이드 메뉴 → Alerting → Notification policies → Default policy edit → 생성한 contact point 선택

 

2-5. Alerting → Alert rules → New alert rule

 

2-6. 알림 이름 입력 → Define query and alert condition → matric up → Label filter → Job: spring-boot

 

2-7. 스크롤 해서 Expression 항목으로 이동 Threshold: is blow 선택 및 1 입력

 

2-8. 스크롤해서 Set evaluation behavior 섹션 설정

  • 폴더 및 그룹 생성 및 선택 후 pending period 설정

2-9. 스크롤해서 Confifure labels and notification 메뉴 → contact point slack으로 설정

 

2-10 생성된 Alert 설정 확인

 

 

3. 그라파나 Alert 테스트

3-1. 모니터링 실행 중인 Spring 애플리케이션 정지 및 Alert 상태 확인

  • 애플리케이션 정지 후 1분 뒤에 새로고침하면 대기 상태로 변경된 것을 확인할 수 있다.

  • 추가로 1분 후에는 Firing 상태로 변경되고 Slack의 알림 채널으로 정지 알림 메시지가 보내진다.

3-2. 알림 메시지 확인 후 애플리케이션 재실행 및 모니터링(Alert) 상태 확인

  • 슬랙으로 Firing 메시지가 제대로 송신된 것을 확인할 수 있다.

  • 애플리케이션 재실행 후 Normal 상태로 변경된 것을 확인할 수 있고, 5분 정도 후에 slack으로 정상 상태로 복구되었다는 메시지가 도착한다.

 

정리

  • slack과 grafana를 사용해 애플리케이션의 상태를 모니터링하고 알림을 보내는 실습을 진행했다.
  • 간단한 알림 설정이지만 필요한 사항이 꽤 많다는 것을 느꼈고, 좀 더 다양한 형태의 알림을 전송하기 위해서는 해당 알림 설정 등에 대한 것들을 충분히 학습하고 실습해볼 필요성을 느꼈다.

 

'자바 심화 > TIL' 카테고리의 다른 글

장애 대응  (1) 2024.12.24
시큐어 코딩(Secure Coding)  (0) 2024.12.23
모니터링(Monitoring)  (1) 2024.12.19
프로젝트 회고  (0) 2024.12.18
Open Route Service API 사용  (1) 2024.12.16