使用Prometheus/Loki/Grafana #2 (使用Alertmanager进行警报通知)的入门指南

首先

    • 前回の記事「【初心者】Prometheus/Loki/Grafanaを使ってみる (メトリクス/ログの収集と表示) 」で、データの収集と表示を行った。

 

    • 次のステップとして、PrometheusにAlertmangerコンポーネントを追加し、アラートの出力方法を確認する。

 

    • 関連記事の一覧は以下。

【初心者】Prometheus/Loki/Grafanaを使ってみる (メトリクス/ログの収集と表示)

メトリクスとログを収集しGrafanaで表示させる。

【初心者】Prometheus/Loki/Grafanaを使ってみる #2 (Alertmanagerによるアラーム通知)

本記事。Alertmanagerを追加し、CPU高負荷時にslackへの通知を行う。

【初心者】Prometheus/Loki/Grafanaを使ってみる #3 (Amazon Managed Service for Promethus連携)

自分のPrometheusで収集したメトリクスをAmazon Managed Service for Promethusに連携する。

2. 做过的事情 de

    • 既存のPrometheusサーバにAlertmanagerのコンポーネントを追加し、必要な設定を行う。

Alertmanagerのインストール、サービス化
Alertmanagerからの通知先設定(今回はslackへ通知)
Alertmanagerのルール設定(今回は、監視対象サーバのCPU使用率70%超過で通知)

ルール適合時に実際にalertが通知されることを確認する。

3. 构图

image.png

4. 步骤

4.1 准备工作完成

    • 通知先となるslackを用意する。

検証用のワークスペースにチャネル mksamba-prometheus-alert を作成する。
チャネル mksamba-prometheus-alert に対する Webhook (https://hooks.slack.com/services/xxxxxxのようなURL) を設定する。

4.2 警报管理器

    既存の監視サーバ(Prometheusインストール済)にAlertmanagerコンポーネントを追加インストールする。

安装

    資材をダウンロード、インストールする。
# 2023/9時点の最新版 v0.26.0 (2023/8/23リリース) を使用 
[ec2-user@ip-10-0-0-249 alertmanager]$ wget https://github.com/prometheus/alertmanager/releases/download/v0.26.0/alertmanager-0.26.0.linux-amd64.tar.gz
[ec2-user@ip-10-0-0-249 alertmanager]$ tar xvf alertmanager-0.26.0.linux-amd64.tar.gz
[ec2-user@ip-10-0-0-249 alertmanager]$ cd alertmanager-0.26.0.linux-amd64/
[ec2-user@ip-10-0-0-249 alertmanager-0.26.0.linux-amd64]$ sudo cp -p alertmanager /usr/local/bin

Slack通知设置

    alertmanager.ymlのテンプレートを元に編集し、slack通知設定を行う。
route:
  group_by: ['alertname']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 1h
  receiver: 'slack'
receivers:
  - name: 'slack'
    slack_configs:
      - api_url: 'https://hooks.slack.com/services/xxxxxxxx'
        channel: 'mksamba-prometheus-alert'
        send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']
在route的接收者(alert receiver)中定义”slack”,在receivers的”slack”中设置slack的incoming webhook的URL和频道名称。通过设置send_resolved: true,即使在恢复时也会发送通知。

警报规则设置

    既存のprometheus.yml を編集し、Alertmanagerに関する設定を追加する。
# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          - 'localhost:9093'
          
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  - '/etc/prometheus/alert_rules.yml'
将Alertmanager的安装位置(即端点)指定为localhost:9093,并将alert规则的详细信息指定为外部文件alert_rules.yml。
    alert定義ファイル alert_rules.ymlを新規作成し、テスト用のルール(CPU使用率70%超過)を設定する。
groups:
  - name: example
    rules:
      - alert: HighCpuUsage
        expr: (100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[1m])) * 100)) > 70
        for: 1m
        labels:
          severity: warning
        annotations:
          summary: "High CPU usage on {{ $labels.instance }}"
          description: "CPU usage on instance {{ $labels.instance }} is above 70% for the last 1 minutes."

服务化 (fú wù huà)

    systemd ユニットファイルを作成する。
[Unit]
Description=Alert Manager

[Service]
Type=simple
ExecStart=/usr/local/bin/alertmanager --config.file=/etc/alertmanager/alertmanag
er.yml
Restart=always

[Install]
WantedBy=multi-user.target
    Alertmanagerをサービスとして登録、再起動する。
[ec2-user@ip-10-0-0-249 ~]$ sudo systemctl daemon-reload
[ec2-user@ip-10-0-0-249 ~]$ sudo systemctl enable alertmanager.service
[ec2-user@ip-10-0-0-249 ~]$ sudo systemctl start alertmanager.service
[ec2-user@ip-10-0-0-249 ~]$ sudo systemctl status alertmanager.service

重启Prometheus服务。

    設定変更反映のため、prometheusも再起動する。
[ec2-user@ip-10-0-0-249 ~]$ sudo systemctl restart prometheus.service

4.3 确认操作

image.png
[ec2-user@ip-10-0-0-124 ~]$ stress -c 1
image.png
pro02.png

5. 參考網站

    • 【Prometheus】Alertmanagerをローカルで使ってみる

 

    PrometheusのAlertmanagerをインストールする!(Rocky Linux 9)

6. 感受之处

    やっと監視っぽいことを行うことができてきた。
广告
将在 10 秒后关闭
bannerAds