概要
Prometheus + Alertmanager + Node Export でノードの CPU 使用率を見て一定以上になったら Slack に通知するサンプルです
よく使う形式なので雛形として残しておきます
環境
- Ubuntu 18.04
- docker 20.10.7
- Prometheus 2.30.3
- Alertmanager 0.23.0
- Node export 1.2.2
Node export 起動
-
docker run -d --net="host" --pid="host" -v "/:/host:ro,rslave" quay.io/prometheus/node-exporter:latest --path.rootfs=/host
:9100 ポートで起動します
Alertmanager 起動
- mkdir data
- vim alertmanager.yml
route:
receiver: 'slack'
receivers:
- name: 'slack'
slack_configs:
- api_url: 'https://hooks.slack.com/services/xxx/xxx/xxx'
channel: '#private'
text: "{{ .CommonAnnotations.summary }}"
send_resolved: true
-
docker run -d -p 9093:9093 --name alertmanager -v $(pwd):/alertmanager prom/alertmanager --config.file=/alertmanager/alertmanager.yml
:9093 ポートで起動します
Prometheus 起動
- vim prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
- 192.168.100.10:9093
rule_files:
- 'alerts.rule'
scrape_configs:
- job_name: 'node1'
static_configs:
- targets: ['192.168.100.10:9100']
- vim alerts.rule
groups:
- name: 'Node1 cpu monitoring'
rules:
- alert: 'Node1 cpu usage alert'
expr: avg without(cpu) (rate(node_cpu_seconds_total{ job="node1",mode!="idle"}[1m])) >= 0.4
for: 5s
annotations:
summary: 'Node1 cpu usage over 40%'
-
docker run -d -p 9090:9090 --name prometheus -v $(pwd):/prometheus-data prom/prometheus --config.file=/prometheus-data/prometheus.yml
:9090 ポートで起動します
動作確認
CPU に負荷テストします
- stress-ng -c 2 -l 100
-c オプションは CPU のコア数です
各自の環境に合わせて変更してください
これで Slack に通知が来れば OK です
最後に
必要最低限な設定としてセットで覚えちゃってもいいかもしれません
stress-ng で 100% 負荷なのに Prometheus 的には 40% ほぼの負荷にしかなっていなかったのは CPU のモードごとに Prometheus が管理しているだと思います
stress-ng 実行後に top コマンドでコアごとの使用率を見ると 100% だったので top と同じ値を監視したい場合は監視ルールを少し変更する必要がありそうです
0 件のコメント:
コメントを投稿