使用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. 构图
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 确认操作
[ec2-user@ip-10-0-0-124 ~]$ stress -c 1
5. 參考網站
-
- 【Prometheus】Alertmanagerをローカルで使ってみる
- PrometheusのAlertmanagerをインストールする!(Rocky Linux 9)
6. 感受之处
- やっと監視っぽいことを行うことができてきた。