blackbox_exporterで複数のmoduleを実行する
blackbox_exporterでDNSの監視をしているのですが前回の記事のキャッシュサーバーのダウンを検知出来ませんでした.
使っていた設定とアラートはこんな感じです.
1 - job_name: blackbox_dns
2 metrics_path: /probe
3 params:
4 module: [internal_dns, external_dns, cache_dns]
5 static_configs:
6 - targets:
7 - ns.local
8 relabel_configs:
9 - source_labels: [__address__]
10 target_label: __param_target
11 - source_labels: [__address__]
12 target_label: instance
13 - target_label: __address__
14 replacement: blackbox_exporter:9115
アラート
1groups:
2 - name: general
3 rules:
4 - alert: DNSServiceDown
5 expr: probe_success{job="blackbox_dns"} == 0
6 for: 5m
7 labels:
8 severity: critical
9 annotations:
10 summary: "DNSService {{ $labels.instance }} down"
11 description: "{{ $labels.instance }} が5分間ダウンしました"
paramsで指定できるmoduleは1つみたいですね.
設定時にきちんとblackbox_exporterのログを確認すれば良かったのですがきちんと見てませんでした.
blackbox_exporterは動作してるポートにアクセスするとRecent Probesから直近のログを確認することができます.
ここ見てようやく1つしかmoduleが実行されていないことに気付きました.
複数個jobを作れば解決しますが今回はラベルのリライトで同一job上でmoduleを切り替えます
1 - job_name: blackbox_dns
2 metrics_path: /probe
3 params:
4 module: [internal_dns]
5 static_configs:
6 - targets:
7 - ns.local|internal_dns
8 - ns.local|external_dns
9 - ns.local|cache_dns
10 relabel_configs:
11 - source_labels: [__address__]
12 regex: (.*?)\|(.*)
13 target_label: __param_target
14 replacement: ${1}
15 - source_labels: [__address__]
16 regex: (.*?)\|(.*)
17 target_label: __param_module
18 replacement: ${2}
19 - source_labels: [__address__]
20 regex: (.*?)\|(.*)
21 target_label: instance
22 replacement: ${2}
23 - target_label: __address__
24 replacement: blackbox_exporter:9115
「|」で区切ってそれを正規表現で抽出し適宜replaceする感じですね.
ルールの方は問題ないのでそのまま前回記事の方法でわざと色々落としてみて動作確認して終了.
検出出来たので終わりです pic.twitter.com/8XjCitGl0S
— スカイ (@skyblue3350) September 8, 2018