2026年10月11日
2026年10月11日
Prometheusのblackbox exporterでHTTP/HTTPS監視を行う方法
はじめに
Prometheusのblackbox exporterはHTTP/HTTPS/TCP/ICMPなどのプロトコルを外側から監視(ブラックボックス監視)するためのエクスポーターです。エンドユーザー視点に近い形でサービス稼働を測定でき、SSL証明書の有効期限まで自動取得できます。
本記事ではインストールからprometheus.ymlへの登録、Alertmanagerでの通知連携までを実例で解説します。
症状・背景
- ノード監視はあるがエンドユーザー視点の死活監視がない
- SSL証明書の期限管理をPrometheusに統合したい
- 外部リージョンからの監視も追加したい
- カスタムcurlスクリプトをPrometheusのメトリクス資産に統合したい
手順・設定方法
ステップ1: blackbox exporterのインストール
# 公式バイナリを取得
cd /tmp
curl -LO https://github.com/prometheus/blackbox_exporter/releases/download/v0.25.0/blackbox_exporter-0.25.0.linux-amd64.tar.gz
tar xf blackbox_exporter-0.25.0.linux-amd64.tar.gz
sudo install -m 755 blackbox_exporter-0.25.0.linux-amd64/blackbox_exporter /usr/local/bin/
sudo useradd -rs /bin/false blackbox
# 設定ファイルを配置
sudo mkdir -p /etc/blackbox_exporter
sudo cp blackbox_exporter-0.25.0.linux-amd64/blackbox.yml /etc/blackbox_exporter/
ステップ2: モジュール設定とsystemd化
# /etc/blackbox_exporter/blackbox.yml
sudo tee /etc/blackbox_exporter/blackbox.yml <<'EOF'
modules:
http_2xx:
prober: http
timeout: 5s
http:
valid_status_codes: [200]
method: GET
preferred_ip_protocol: ip4
tls_config:
insecure_skip_verify: false
tcp_connect:
prober: tcp
timeout: 5s
icmp:
prober: icmp
timeout: 5s
EOF
# systemdユニット
sudo tee /etc/systemd/system/blackbox_exporter.service <<'EOF'
[Unit]
Description=Blackbox Exporter
[Service]
User=blackbox
ExecStart=/usr/local/bin/blackbox_exporter --config.file=/etc/blackbox_exporter/blackbox.yml
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload && sudo systemctl enable --now blackbox_exporter
ステップ3: prometheus.ymlへの登録
# /etc/prometheus/prometheus.yml に追記
sudo tee -a /etc/prometheus/prometheus.yml <<'EOF'
- job_name: blackbox-http
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
- https://example.com/health
- https://api.example.com/ping
- https://shop.example.com/
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 127.0.0.1:9115
EOF
sudo systemctl reload prometheus
ステップ4: アラートルールとSSL期限チェック
# /etc/prometheus/rules/blackbox.yml
sudo tee /etc/prometheus/rules/blackbox.yml <<'EOF'
groups:
- name: blackbox
rules:
- alert: ProbeFailed
expr: probe_success == 0
for: 3m
labels: {severity: critical}
annotations:
summary: "{{ $labels.instance }} 監視失敗"
- alert: SSLCertExpiringSoon
expr: (probe_ssl_earliest_cert_expiry - time()) / 86400 < 30
for: 10m
labels: {severity: warning}
annotations:
summary: "{{ $labels.instance }} SSL残{{ $value | printf \"%.0f\" }}日"
EOF
# 動作確認
curl -s 'http://127.0.0.1:9115/probe?module=http_2xx&target=https://example.com/health' | head -20
sudo systemctl reload prometheus
注意事項
- ICMP probeはCAP_NET_RAWが必要。systemdに
AmbientCapabilities=CAP_NET_RAWを追加するかrootで実行 - 外形監視を増やしすぎるとblackbox exporter自身がボトルネックになる。
scrape_intervalを控えめに - TLS検証を無効化する
insecure_skip_verify: trueは便利だが、本番では中間者攻撃を見逃すリスクがある - 監視対象が増えたら
file_sd_configsやhttp_sd_configsでターゲット動的化を検討
まとめ
1. 外形監視: ユーザー視点での到達性を測定
2. モジュール: http_2xx/tcp_connect/icmpを用途で使い分け
3. relabel_configs: blackbox特有のtarget書き換えが必要
4. SSL期限: probe_ssl_earliest_cert_expiryで証明書監視を統合
5. Alertmanager連携: 3分継続失敗で本通知=フラッピング対策
関連記事: