Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Study_note

[kubernetes] Alertmanager 프로메테우스에서 슬랙으로 알람 및 알람 무시 본문

Kubernetes

[kubernetes] Alertmanager 프로메테우스에서 슬랙으로 알람 및 알람 무시

Study_note 2023. 2. 27. 16:02

전 포스팅에서 이어지는 내용이다.

 

프로메테우스 스택을 통해 프로메테우스, 그라파나, 알림 매니저를 생성한 상태로 이번에는 알럿 매니저를 테스트해본다.

 

얼럿매니저

  • 프로메테우스의 임곗값 도달 시 경고 메시지를 얼럿매니저에 푸시 이벤트로 전달하고, 얼럿매지저는 이를 가공후 이메일/슬랙 등에 전달

 

  1. Alerts 경고: 시스템 문제 시 프로메테우스가 전달한 경고 메시지 목록을 확인
  2. Silences 일시 중지 : 계획 된 장애 작업 시 일정 기간 동안 경고 메시지를 받지 않을 때, 메시지별로 경고 메시지를 일시 중단 설정
  3. 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 등 경보 생성 확인 가능

 

 

 

Comments