이번 강의에서는 특정 조건이 충족될 때 Grafana에서 알림을 트리거하는 방법을 배웁니다.
Grafana를 사용하면 Prometheus 메트릭을 기반으로 시스템의 상태를 모니터링하고, 특정 임계값에 도달하면 자동으로 알림을 보낼 수 있습니다.
1. 알림 규칙 설정
1.1 알림 메뉴로 이동
- Grafana 홈 화면에서 Alerting 메뉴로 이동합니다.
- Alert Rules 섹션을 선택하고 Create Alert Rule 버튼을 클릭합니다.
1.2 알림 규칙 생성
- Rule Name 필드에 알림 규칙의 이름을 입력합니다. 예:
accounts
(이 규칙을 통해 Accounts 마이크로서비스를 모니터링).
- Grafana managed alert 옵션을 선택하여 Grafana가 알림을 관리하도록 설정합니다.
1.3 조건 설정
- Data source에서 Prometheus를 선택합니다.
- Metric으로
up
메트릭을 선택합니다. 이 메트릭은 애플리케이션이 정상적으로 작동 중인지 확인하는 데 사용됩니다.
- Label 필드에서
job
을 선택하고, Value로 accounts
를 입력하여 Accounts 마이크로서비스에 대한 알림을 설정합니다.
1.4 알림 트리거 설정
- Reduce 섹션에서 Last 옵션을 선택하여 가장 최근의 값에 기반하여 알림을 트리거하도록 설정합니다.
- Threshold 섹션에서는 임계값을 설정합니다. 예를 들어, 값이 1 미만일 때 알림을 트리거하도록 설정합니다.
1.5 알림 폴더 및 그룹 설정
- Folder 필드에
accounts
라는 폴더를 생성하여 이 규칙을 관리합니다.
- Group 필드에
accounts
라는 그룹을 생성하여 이 규칙을 그룹화합니다.
- Evaluation interval을
10s
로 설정하여 10초마다 이 규칙을 평가하도록 설정합니다.
- For 필드에서
30s
를 설정하여 30초 동안 문제가 지속되면 알림을 보내도록 설정합니다.
1.6 요약 및 설명 추가
- Summary 필드에 "Account service is down"이라는 요약을 입력합니다.
- Description 필드에 "Please do something"이라는 설명을 추가합니다.
2. 연락처 설정
2.1 Webhook 설정
- Contact Points 섹션에서 Add contact point를 클릭하여 새로운 연락처를 추가합니다.
- Webhook 옵션을 선택하고, EasyBankWebhook이라는 이름을 입력합니다.
- HockyDB 웹사이트에서 Webhook URL을 생성하고, 이 URL을 입력합니다.
- Test 버튼을 클릭하여 Webhook이 제대로 작동하는지 확인합니다.
2.2 알림 정책 설정
- Notification policies 섹션에서 EasyBankWebhook을 기본 연락처로 설정합니다.
- 테스트를 위해 시간 간격을 모두
10s
로 설정하여 빠르게 알림이 트리거되도록 합니다.
3. 알림 테스트
3.1 마이크로서비스 중지
- Docker Desktop으로 이동하여
accounts
마이크로서비스를 중지합니다.
- Grafana에서 알림 규칙이
pending
상태로 변경되었는지 확인합니다. 일정 시간이 지나면 firing
상태로 변경되어 알림이 전송됩니다.
3.2 Webhook 확인
- Webhook 페이지로 이동하여 알림이 수신되었는지 확인합니다.
- 알림에는 "Account service is down"이라는 요약과 "Please do something"이라는 설명이 포함됩니다.
3.3 마이크로서비스 재시작
accounts
마이크로서비스를 다시 시작하면 Grafana에서 알림 상태가 resolved
로 변경됩니다.
- Webhook 페이지에서도 알림 상태가
resolved
로 업데이트되는 것을 확인할 수 있습니다.
4. 결론
이 강의에서는 Grafana를 사용하여 마이크로서비스 상태를 모니터링하고, 특정 조건이 충족될 때 자동으로 알림을 트리거하는 방법을 배웠습니다. 또한 Webhook을 설정하여 알림을 외부 시스템으로 전송하는 방법도 살펴보았습니다.
다음 강의에서는 Grafana의 대시보드를 사용하여 알림을 설정하는 또 다른 방법을 탐구해 보겠습니다.