見出し画像

Grafana Mimir Alertmanagerを使い、EC2インスタンスが停止したらSlackに通知させる


要件

Grafana Mimir Alertmanagerを使い、EC2インスタンスが停止したらSlackに通知させる

タスク

  • Grafana Mimir Alertmanagerを使い、EC2インスタンスが停止したらSlackに通知させる

  • Grafana Mimir Alertmanagerの設定を保存するために、S3のバケットを作成する

  • mimirtoolでAlertmanagerの設定を行う

  • 以下のようにmimirのalertをgrafanaで確認できるようにする

mimirのalertをgrafanaで確認

参考記事

 まずはドキュメント!!

学べること

  • mimirのalertをgrafanaで確認する

ヒント

alertmanagerの設定をS3に登録させる方法

mimir:
  structuredConfig:
    common:
      storage:
        backend: s3
        s3:
          region: ap-northeast-1
          bucket_name: metrics-bucket-from-prometheus
          endpoint: s3.ap-northeast-1.amazonaws.com
    ruler_storage:
      s3:
        bucket_name: mimir-ruler-bucket-sample
    alertmanager_storage:
      s3:
        bucket_name: mimir-alertmanager-bucket-sample


mimirのalertmanagerからデータを吸い上げるように、grafanaのhlemでoverrideさせるyamlは、以下のように設定をする

datasources:
  datasources.yaml:
    apiVersion: 1
    datasources:
    - name: Prometheus
      type: prometheus
      url: http://prometheus-server
    - name: Loki
      type: loki
      url: http://loki-stack:3100
    - name: mimir
      type: prometheus
      url: http://mimir-nginx/prometheus
    - name: mimir-alertmanager
      type: alertmanager
      url: http://mimir-nginx


mimirtoolでalertmanagerの設定を行う 。※helmでprovisoningと同時に設定できれば良いのだがmimirtoolを使わないといけないみたいだ、、

mimirtool alertmanager load ./mimir-alertmanager.yaml --address=<mimir-nginx-url> --id=anonymous

mimir-alertmanager.yamlのサンプル

global:


route:
  group_wait: 10s
  group_interval: 1m
  receiver: critical-app
  repeat_interval: 2m
  routes:
    - receiver: critical-app
      match:
        severity: critical
    - receiver: warning-app
      match:
        severity: warning

receivers:
  - name: critical-app
    slack_configs:
      - channel: <slack-chanel-name>
        api_url: <slack-url>
        send_resolved: true
        title: '{{ if eq .Status "firing" }}[アラート]{{else}}[解決済]{{end}} {{ .CommonLabels.alertname }}'
        text: |
          {{ range .Alerts}}
          *Alert:* {{ .Annotations.title }}{{ if .Labels.severity }} - `{{ .Labels.severity }}`{{ end }}
          *Description:* {{ .Annotations.description }} 
          *Details:* 
            {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}`
            {{ end }}
          {{ end }}

  - name: warning-app
    slack_configs:
      - channel: <slack-chanel-name>
        api_url: <slack-url>
        send_resolved: true
        title: '{{ if eq .Status "firing" }}[アラート]{{else}}[解決済]{{end}} {{ .CommonLabels.alertname }}'
        text: |
          {{ range .Alerts}}
          *Alert:* {{ .Annotations.title }}{{ if .Labels.severity }} - `{{ .Labels.severity }}`{{ end }}
          *Description:* {{ .Annotations.description }}
          *Details:*
            {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}`
            {{ end }}
          {{ end }}


ちなみに上記の設定した値は、以下のようにGrafanaで表示されます 素敵すぎる!!

grafana contact points
garafana Notifica policies

関連タグ

#Mimir #EKS #helm #監視 #モニタリング #alertmanager #kubernetes

この記事が気に入ったらサポートをしてみませんか?