일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 그라파나 시각화
- 로드밸런서 컨트롤러
- 깃허브 액션
- helm
- 쿠버네티스
- blue-green
- Firelens
- EFS CSI Driver
- headless service
- Aurora cluster
- jenkins
- 솔데스크
- kubernetes 동작 원리
- AWS 딥레이서
- terraform
- SAA 합격 후기
- 쿠버네티스 컴포넌트
- livenessPorbe
- github action 사용법
- Kubernetes
- EKS 클러스터
- 딥레이서
- Kubernets on Jenkins
- Prometheus install
- 그라파나 대시보드
- grafana on kubernetes
- LoadBalancer Controller
- 메탈LB
- Solution Architecture
- 딥레이서 보상함수
mingming
alertmanager & slack 연동 및 경보 본문
Alertmangaer
Prometheus Alertmanager는 Prometheus 모니터링 시스템의 일부로 사용되는 오픈 소스 알람 관리자입니다. Alertmanager는 Prometheus 서버로부터 수집된 경고 및 알람을 처리하고 라우팅하며, 이를 통해 시스템 관리자 및 개발자에게 모니터링 이벤트 및 잠재적인 문제에 대한 통지를 관리하는 데 도움을 줍니다.
slack webhook
수신받을 채널을 생성 후 수신 웹훅을 추가합니다. 생성된 URL 을 기록해줍니다.
Edit values.yaml
경보 구성 및 실습에 필요한 걊을 수정합니다
vim prometheus-values.yaml
648 loadBalancerIP: ""
649 loadBalancerSourceRanges: []
650 servicePort: 80
651 sessionAffinity: None
652 type: LoadBalancer
687 serverFiles:
688 ## Alerts configuration
689 ## Ref: https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/
690 alerting_rules.yml:
691 groups:
692 - name: Node
693 rules:
694 - alert: NodeDown
695 expr: up{job="kubernetes-nodes"} == 0
696 for: 1m
697 labels:
698 severity: page
699 annotations:
700 description: kubernetes node {{ .Labels.instance }} down
701 # summary: 'Instance {{ $labels.instance }} down'
prometheus-server 경보 규칙 생성 및 서비스 타입을 로드밸런서로 변경해줍니다.
1215 config:
1216 global:
1217 resolve_timeout: 5m
1218 route:
1219 group_wait: 10s
1220 group_interval: 1m
1221 repeat_interval: 5m
1222 receiver: 'slack-notifier'
1223 receivers:
1224 - name: 'slack-notifier'
1225 slack_configs:
1226 - api_url: 'https://hooks.slack.com/services/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'
1227 channel: '#kubernetes-node-notice'
1228 send_resolved: true
1229 title: '[{{ .Status | toUpper }}] {{ .CommonLabels.alertname }}'
1230 text: >-
1231 *Description:* {{ .CommonAnnotations.description }}
1232 service:
1233 ## If false, no Service will be created for the Prometheus server
1234 ##
1235 enabled: true
1236
1237 annotations: {}
1238 labels: {}
1239 clusterIP: ""
1240
1241 ## List of IP addresses at which the Prometheus server service is available
1242 ## Ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-ips
1243 ##
1244 externalIPs: []
1245
1246 loadBalancerIP: ""
1247 loadBalancerSourceRanges: []
1248 servicePort: 80
1249 sessionAffinity: None
1250 type: LoadBalancer
alertmanager 경보 생성 및 서비스 타입 로드밸런서로 변경
변경사항 적용
helm upgrade 명령어를 통해 변경사항을 적용시킵니다.
helm upgrade prometheus prometheus/prometheus -f prometheus-values.yaml
프로메테우스 서버 웹 접속후 alert 탭으로 이동하면
위와 같은 경보 규칙이 생긴 것을 확인할 수 있습니다.
경보발생
노드 하나를 종료해 경보상황을 만들어 줍니다. 노드 종료 후 잠시 기다리면 다음과 같은 경보 메세지를 슬랙채널을 통해 받아 볼 수 있습니다.
프로메테우스 서버의 경보창에서도 경보상황을 확인할 수 있습니다.
다시 노드를 실행시키면 다음과 같이 알림이 오게되고, 경보가 상황이 해소됩니다.
이처럼 특정 상황에 대한 경보규칙과 경보를 생성해 다양한 플랫폼을 통해 알림을 받아볼 수 있습니다. 프로메테우스 기술문서를 통해 상황에 맞는 템플릿을 참고 할 수 있습니다.
prometheus-alertmanager configmap
위에서 실습한 것 처럼 values.yaml 파일을 수정해서 배포해도 되지만, 미리 생성해둔 configmap.yaml 파일을 통해서도 경보를 생성할 수 있습니다.
실제로 values.yaml 파일에 수정한 부분이 alertmanager configmap에 기록되어 있는 것을 확인할 수 있습니다.
kubectl edit configmap prometheus-alertmanager
apiVersion: v1
data:
alertmanager.yml: |
global:
resolve_timeout: 5m
receivers:
- name: slack-notifier
slack_configs:
- api_url: slack url
channel: '#kubernetes-node-notice'
send_resolved: true
text: '*Description:* {{ .CommonAnnotations.description }}'
title: '[{{ .Status | toUpper }}] {{ .CommonLabels.alertname }}'
route:
group_interval: 1m
group_wait: 10s
receiver: slack-notifier
repeat_interval: 5m
templates:
- /etc/alertmanager/*.tmpl
kind: ConfigMap
metadata:
annotations:
meta.helm.sh/release-name: prometheus
meta.helm.sh/release-namespace: default
creationTimestamp: "2023-09-18T04:23:46Z"
labels:
app.kubernetes.io/instance: prometheus
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: alertmanager
app.kubernetes.io/version: v0.26.0
helm.sh/chart: alertmanager-1.6.0
name: prometheus-alertmanager
namespace: default
resourceVersion: "348163"
uid: 99f68981-6b5a-4cfc-b02b-a339c587107e
'kubernetes' 카테고리의 다른 글
Kubernetes Serive ( ClusterIP ) (0) | 2023.09.26 |
---|---|
kubernetes node NotReady (1) | 2023.09.25 |
grafana를 이용한 prometheus 메트릭 값 시각화 및 모니터링 (0) | 2023.09.24 |
ephemeral-storage (2) | 2023.09.21 |
grafana on kubernetes (1) | 2023.09.20 |