Study_note
[kubernetes] Alertmanager 프로메테우스에서 슬랙으로 알람 및 알람 무시 본문
전 포스팅에서 이어지는 내용이다.
프로메테우스 스택을 통해 프로메테우스, 그라파나, 알림 매니저를 생성한 상태로 이번에는 알럿 매니저를 테스트해본다.
얼럿매니저
- 프로메테우스의 임곗값 도달 시 경고 메시지를 얼럿매니저에 푸시 이벤트로 전달하고, 얼럿매지저는 이를 가공후 이메일/슬랙 등에 전달
- Alerts 경고: 시스템 문제 시 프로메테우스가 전달한 경고 메시지 목록을 확인
- Silences 일시 중지 : 계획 된 장애 작업 시 일정 기간 동안 경고 메시지를 받지 않을 때, 메시지별로 경고 메시지를 일시 중단 설정
- Statue 상태 : 얼럿매니저 상세 설정 확인
프로메테우스에서도 alert이 있는데 아래와 같이 3개로 구분이 되면 Firing을 얼럿매니저에 전달한다.
Inactive 비활성화 : prometheusrules 중 경고가 활성화되지 않은 정상적인 상태
Pending 지연 : 설정한 임곗값을 초과해 경고 상황이지만 경고 메시지를 전달하기까지 임곗값 시간을 초과하지 않은 상태, 이를 통해 오탐과 자동 복구된 에러 메시지를 처리
Firing 경보 : 임곗값과 임곗값 시간을 초과해서 경보가 발생한 메시지. 해당 메시지는 얼럿매니저에 전달되어 얼럿매지저를 통해 전파됨
프로메테우스 룰 확인
kubectl get prometheusrules -n monitoring
사용하는 alert 확인
kubectl get prometheusrules -n monitoring -o json | grep '"alert":' | sed 's/^ *//'
kubectl get prometheusrules -n monitoring -o json | grep '"alert":' | sed 's/^ *//' | wc -l
---
여기까지가 얼럿 매니저에와 프로메테우스 알람에 대한 설명이고 새로운 프로모테우스 알람 정책을 추가하고 slack에 연동 등 다양한 기능들이다.
프로메테우스 정책 추가
prometheusrules.monitoring.coreos.com라는 kube-prometheus-stack-node-exporter을 확인
(neat는 yaml 파일로 추출할때 불필요한것들 제거하여 보기 쉽게하기 위해여 사용)
k get prometheusrules.monitoring.coreos.com kube-prometheus-stack-node-exporter -n monitoring -o yaml | k neat
아래 경로로 이동하면 각 상황에 맞게 프로메테우스 알람을 추가는 정책을 제공한다 여기서 복사하여 정책 사용도 가능
https://awesome-prometheus-alerts.grep.to/
slack 연동
얼럿매니저에 웹훅 URL 정보 반영하려면 아래 구문을 만들고 helm 에서 update해야한다.
alertmanager:
config:
global:
resolve_timeout: 5m
slack_api_url: '슬랙 webhook'
route:
group_by: ['job'] # namespace
group_wait: 10s
group_interval: 1m
repeat_interval: 5m
receiver: 'slack-notifications'
routes:
- receiver: 'slack-notifications'
matchers:
- alertname =~ "InfoInhibitor|Watchdog"
receivers:
- name: 'slack-notifications'
slack_configs:
- channel: '#webhook'
send_resolved: true
title: '[{{.Status | toUpper}}] {{ .CommonLabels.alertname }}'
text: |
*Description:* {{ .CommonAnnotations.description }}
위에서 생성했던 파일을 helm 프로메테우스 스택에 추가하여 재배포
helm 업그레이드로 얼럿매니저에 웹훅 URL 정보 반영
helm upgrade kube-prometheus-stack prometheus-community/kube-prometheus-stack \
--version 45.0.0 --reuse-values(프로메테우스 스택 만들었던 values를 그대로 사용) -f \
alertmanager-slack.yaml(위에서 방금 만든 파일) --namespace monitoring
얼럿매니저 설정 파일에 반영확인은 다음과 같다
kubectl describe pod -n monitoring alertmanager-kube-prometheus-stack-alertmanager-0
kubectl exec -it -n monitoring alertmanager-kube-prometheus-stack-alertmanager-0 -- ls /etc/alertmanager/config
alertmanager.yaml.gz
silence
말 그대로 무시로 해당 기간 동안 알람 발생하지 않기 위해 사용
new silience 클릭 후 시작할 날짜 선택
matchers : 무시할 알람을 지정(키 = 값의 라벨 형식으로 구성)
이제 원하는 얼럿 정책을 생성하고 얼럿을 받으면 다음과 같다.
1. 파일 시스템 사용률 80% 초과 시 시스템 경 고 발생시키기
아래 경로에 해당 정책 추가
k get prometheusrules.monitoring.coreos.com kube-prometheus-stack-node-exporter -n monitoring -o yaml | k neat
배포 후 아무 워커노드 진입 후 대용량 파일 생성
파일 생성하면 프로메테우스 및 alert manger 등 경보 생성 확인 가능
'Kubernetes' 카테고리의 다른 글
[kubernetes] Kubecost 파드, 노드 비용 최적화 툴 (0) | 2023.03.05 |
---|---|
[kubernetes] Loki, PLG 로그 관리 (0) | 2023.02.28 |
[kubernetes] Prometheus 및 모니터링 룰 추가 (2) | 2023.02.18 |
[kubernetes] Serviceaccount, context를 사용한 개발자 계정 생성 (0) | 2022.12.07 |
[kubernetes] Multi Cluster 환경 구성 및 플러그인 kubectx 사용 (0) | 2022.12.02 |