IBM Cloud Private (ICP) 제공된 Alertmanager로 이메일 알림
목적
지난번 기사에서는 ICP와 함께 제공되는 Prometheus와 Grafana를 사용하여 애플리케이션 메트릭을 시각화했습니다. 이번에는 거기에서 이상을 검지했을 때에 메일 통지를 해 보겠습니다.
이메일 알림은 Prometheus의 동료 구성 요소인 Alertmanager가 역시 기본적으로 시작되기 때문에 사용할 수 있습니다. 덧붙여서 그러한 통지 기능은 Grafana에도 있습니다. 실제 운용에서는 어느 것을 사용하는 것이 좋은지, 혹은 사용을 해야 하는지, 정직 아직 잘 알고 있지 않습니다. 이번에는 Alertmanager를 사용합니다.
검증 환경
- IBM Cloud Private 2.1.0.2 (Kubernetes 1.9.1)
절차
Alertmanager에 이메일 전송 설정 추가
Alertmanager는 kube-system 네임 스페이스의 monitoring-prometheus-alertmanager
라는 ConfigMap을 사용합니다. 기본적으로 거의 아무것도 작성되지 않으므로 여기에 다양한 설정을 추가합니다. 이번에는 최소 이메일 전송 설정을 추가합니다(아래 댓글이 있는 5줄).
$ kubectl edit configmap monitoring-prometheus-alertmanager -n kube-system
apiVersion: v1
data:
alertmanager.yml: |-
global:
smtp_smarthost: 192.168.11.12:25 # SMTPサーバ
smtp_from: [email protected] # FROMアドレス
smtp_require_tls: false # TLS使用有無
receivers:
- name: default-receiver
email_configs: # メール送信先設定
- to: [email protected] # TOアドレス
route:
group_wait: 10s
group_interval: 5m
receiver: default-receiver
repeat_interval: 3h
(略)
저장하면 자동으로 Alertmanager의 Pod에 반영됩니다. 다만 즉시가 아니라 수십초~수분 정도 걸립니다.
Prometheus에 규칙 추가
탐지 규칙은 Prometheus 측의 alert-rules
라는 ConfigMap을 사용합니다. 여기도 기본적으로 전혀 내용이 없으므로 새로운 규칙을 추가합니다. 이번에는 반드시 통지하도록 임계값을 작게 하고 있습니다.
$ kubectl edit configmap alert-rules -n kube-system
apiVersion: v1
data:
sample.rules: "" # デフォルトではこれしか書かれていない
# ここから追加
jvm.rules: |-
groups:
- name: jvm # グループ名
rules:
- alert: jvm_heap_high # ルール名
expr: jvm_memory_used_bytes{area="heap",job="kubernetes-pods"} > 134217728
# 128MBを超えたら通知
for: 1m # 1分継続したら通知
labels:
severity: warning # 緊急度など
여기도 저장하고 조금 기다리면 Prometheus의 Pod에 반영됩니다.
Prometheus 콘솔에서 확인
Prometheus 콘솔에서 상태를 확인합니다.
$ kubectl get pods -n kube-system | grep prometheus
monitoring-prometheus-7994986858-4nwp8 3/3 Running 0 6d
monitoring-prometheus-alertmanager-7dc884c44d-hnjj2 3/3 Running 0 3d
monitoring-prometheus-kubestatemetrics-798dd85965-jrfr2 1/1 Running 0 6d
monitoring-prometheus-nodeexporter-amd64-25nhf 1/1 Running 0 6d
monitoring-prometheus-nodeexporter-amd64-4dbgm 1/1 Running 0 6d
monitoring-prometheus-nodeexporter-amd64-tl6mb 1/1 Running 0 6d
monitoring-prometheus-nodeexporter-amd64-wwcht 1/1 Running 0 6d
$ kubectl port-forward monitoring-prometheus-7994986858-4nwp8 9090:9090 -n kube-system
메뉴의 Alerts를 표시하면 즉시 감지됩니다. Status가 Firing이 되면 Alertmanager에게 알림이 날아간 것 같습니다.
이메일 확인
다음과 같은 이메일을 받았습니다. 알림도 움직였습니다.
각종 링크는 불행히도 데드 링크가 됩니다. URL이 Pod의 명칭과 포트 그대로 되어 버리기 때문입니다. 이 작업을 올바르게 수행하려면 Ingress 또는 NodePort를 사용하여 Prometheus 및 Alertmanager를 클러스터 외부에서 액세스할 수 있도록 하고 메일 템플릿을 다시 작성해야 합니다. 이번에는 힘이 다했기 때문에 여기까지.
감상
이번에는 동작 확인을 위해 최소한의 설정만 했지만, 상용 환경에서는 보다 세세한 설정이 필요합니다. 특히 감시의 세계는 안쪽이 깊기 때문에, 매뉴얼을 읽고 연구가 필요하네요.
htps : // p 뻗어 s. 이오/도 cs/인 t로즈 c 치온/오오 rゔぃ에 w/
Reference
이 문제에 관하여(IBM Cloud Private (ICP) 제공된 Alertmanager로 이메일 알림), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/teruq/items/8ce21e3fe59141f1f220
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Alertmanager에 이메일 전송 설정 추가
Alertmanager는 kube-system 네임 스페이스의
monitoring-prometheus-alertmanager
라는 ConfigMap을 사용합니다. 기본적으로 거의 아무것도 작성되지 않으므로 여기에 다양한 설정을 추가합니다. 이번에는 최소 이메일 전송 설정을 추가합니다(아래 댓글이 있는 5줄).$ kubectl edit configmap monitoring-prometheus-alertmanager -n kube-system
apiVersion: v1
data:
alertmanager.yml: |-
global:
smtp_smarthost: 192.168.11.12:25 # SMTPサーバ
smtp_from: [email protected] # FROMアドレス
smtp_require_tls: false # TLS使用有無
receivers:
- name: default-receiver
email_configs: # メール送信先設定
- to: [email protected] # TOアドレス
route:
group_wait: 10s
group_interval: 5m
receiver: default-receiver
repeat_interval: 3h
(略)
저장하면 자동으로 Alertmanager의 Pod에 반영됩니다. 다만 즉시가 아니라 수십초~수분 정도 걸립니다.
Prometheus에 규칙 추가
탐지 규칙은 Prometheus 측의
alert-rules
라는 ConfigMap을 사용합니다. 여기도 기본적으로 전혀 내용이 없으므로 새로운 규칙을 추가합니다. 이번에는 반드시 통지하도록 임계값을 작게 하고 있습니다.$ kubectl edit configmap alert-rules -n kube-system
apiVersion: v1
data:
sample.rules: "" # デフォルトではこれしか書かれていない
# ここから追加
jvm.rules: |-
groups:
- name: jvm # グループ名
rules:
- alert: jvm_heap_high # ルール名
expr: jvm_memory_used_bytes{area="heap",job="kubernetes-pods"} > 134217728
# 128MBを超えたら通知
for: 1m # 1分継続したら通知
labels:
severity: warning # 緊急度など
여기도 저장하고 조금 기다리면 Prometheus의 Pod에 반영됩니다.
Prometheus 콘솔에서 확인
Prometheus 콘솔에서 상태를 확인합니다.
$ kubectl get pods -n kube-system | grep prometheus
monitoring-prometheus-7994986858-4nwp8 3/3 Running 0 6d
monitoring-prometheus-alertmanager-7dc884c44d-hnjj2 3/3 Running 0 3d
monitoring-prometheus-kubestatemetrics-798dd85965-jrfr2 1/1 Running 0 6d
monitoring-prometheus-nodeexporter-amd64-25nhf 1/1 Running 0 6d
monitoring-prometheus-nodeexporter-amd64-4dbgm 1/1 Running 0 6d
monitoring-prometheus-nodeexporter-amd64-tl6mb 1/1 Running 0 6d
monitoring-prometheus-nodeexporter-amd64-wwcht 1/1 Running 0 6d
$ kubectl port-forward monitoring-prometheus-7994986858-4nwp8 9090:9090 -n kube-system
메뉴의 Alerts를 표시하면 즉시 감지됩니다. Status가 Firing이 되면 Alertmanager에게 알림이 날아간 것 같습니다.
이메일 확인
다음과 같은 이메일을 받았습니다. 알림도 움직였습니다.
각종 링크는 불행히도 데드 링크가 됩니다. URL이 Pod의 명칭과 포트 그대로 되어 버리기 때문입니다. 이 작업을 올바르게 수행하려면 Ingress 또는 NodePort를 사용하여 Prometheus 및 Alertmanager를 클러스터 외부에서 액세스할 수 있도록 하고 메일 템플릿을 다시 작성해야 합니다. 이번에는 힘이 다했기 때문에 여기까지.
감상
이번에는 동작 확인을 위해 최소한의 설정만 했지만, 상용 환경에서는 보다 세세한 설정이 필요합니다. 특히 감시의 세계는 안쪽이 깊기 때문에, 매뉴얼을 읽고 연구가 필요하네요.
htps : // p 뻗어 s. 이오/도 cs/인 t로즈 c 치온/오오 rゔぃ에 w/
Reference
이 문제에 관하여(IBM Cloud Private (ICP) 제공된 Alertmanager로 이메일 알림), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/teruq/items/8ce21e3fe59141f1f220
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(IBM Cloud Private (ICP) 제공된 Alertmanager로 이메일 알림), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/teruq/items/8ce21e3fe59141f1f220텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)