【入門編】Prometheusのブラックボックステクニック:Blackbox Exporterで外部APIやSSL証明書の有効期限を死活監視する方法 – 運用監視・オブザーバビリティ活用バイブル

Prometheusで「外から見た真実」を掴む:Blackbox Exporterによる究極の外形監視術

こんにちは。システムの「心臓の鼓動」を聴き分けることに情熱を燃やすエンジニアです。

普段、皆さんがPrometheusで監視しているのは、CPU使用率やメモリといった「サーバーの中身」ではないでしょうか?もちろんそれも重要ですが、「ユーザーが今、実際にサイトにアクセスできているか?」という視点は、サービスを維持する上で不可欠です。

サーバーが正常でも、ロードバランサーが死んでいればユーザーは何も見えません。この「外側から見た真実」を捉えるための最強の武器が、Blackbox Exporterです。

今日は、このBlackbox Exporterを使いこなし、Webサイトの生存確認からSSL証明書の期限切れアラートまで、現場で即戦力となる監視環境を構築する方法を伝授します。

—

1. Blackbox Exporterとは何か?

一言で言えば、「Prometheusの代わりに、指定したターゲットへ向かって診断リクエストを投げる代理人」です。

  • HTTP/HTTPS: ステータスコードやコンテンツの中身をチェック。
  • TCP: 指定ポートが開いているかを確認。
  • DNS: 名前解決が正しく行えるかを確認。
  • ICMP: いわゆるpingによるネットワーク疎通確認。

これを導入すれば、「サイトは起動しているはずなのに、なぜかユーザーが繋がらない」といった状況を即座に検知できます。

—

2. インストールとセットアップ(Docker編)

最も手軽でクリーンな構成であるDockerで動かしましょう。`blackbox.yml` という設定ファイルを用意するだけで準備は完了です。

最低限の `blackbox.yml`

まずはHTTP監視のための基本的な設定を作成します。

modules:
http_2xx: # モジュール名(Prometheusから指定します)
prober: http
http:
preferred_ip_protocol: “ip4” # IPv4でアクセス
method: GET
valid_status_codes: [200] # 200以外なら異常とみなす
timeout: 5s # 5秒以内にレスポンスがなければタイムアウト

コンテナの起動

docker run -d -p 9115:9115 \
-v $(pwd)/blackbox.yml:/etc/blackbox_exporter/config.yml \
prom/blackbox-exporter:latest

これだけで、`http://localhost:9115` でExporterが動き出します。

—

3. Prometheusとの連携(HelloWorld的な接続)

Prometheus本体に、「このターゲットを監視してね」と伝えます。ここでのポイントは、ターゲットのURLをパラメータとして渡すことです。

prometheus.yml
scrape_configs:

  • job_name: ‘blackbox’

metrics_path: /probe
params:
module: [http_2xx] # 先ほど定義したモジュール
static_configs:

  • targets:
  • https://google.com # 監視したいURL

relabel_configs:

  • source_labels: [__address__]

target_label: __param_target

  • source_labels: [__param_target]

target_label: instance

  • target_label: __address__

replacement: blackbox-exporter:9115 # Exporterの場所

これでPrometheusの「Status > Targets」画面を見てください。緑色になっていれば、あなたの最初の「外形監視」は成功です!

—

4. 現場で震えるほど役立つ「SSL証明書期限監視」

運用現場で最も恐ろしい事故の一つが「SSL証明書の期限切れ」です。これを見逃すと、ユーザーにブラウザ警告画面を見せることになり、信頼は一瞬で失墜します。

Blackbox Exporterなら、これを自動化できます。

設定の追加(blackbox.yml)

modules:
http_2xx:
prober: http
http:
tls_config:
insecure_skip_verify: false
preferred_ip_protocol: “ip4”

# SSL証明書専用のモジュール
ssl_cert:
prober: http
http:
valid_status_codes: [200]

アラート設定(prometheus.rules.yml)

証明書の残り日数が30日を切ったら警告するルールです。

groups:

  • name: ssl_alert

rules:

  • alert: SSLCertExpiringSoon

# probe_ssl_earliest_cert_expiryはExporterが自動取得してくれるメトリクス
expr: (probe_ssl_earliest_cert_expiry – time()) / 86400 < 30 for: 10m labels: severity: warning annotations: summary: "SSL証明書が30日以内に切れます" ---

最後に:なぜこれが必要なのか

初心者のうちは「サーバーが動いていればいい」と考えがちですが、本番環境では「ネットワーク経路」「外部APIの応答」「証明書の有効期限」など、制御不能な要素が多々あります。

Blackbox Exporterは、「ユーザーと同じ視点」でシステムを見つめるための最初の一歩です。

これをマスターすれば、あなたは障害が起きる前に「おや、レスポンスが遅くなっているぞ」「証明書が危ないぞ」と気づけるようになります。これが、「夜中に電話で起こされないエンジニア」になるための秘訣です。

まずは、あなたの会社のサイトURLを一つ、この監視下に入れてみてください。その瞬間に、あなたの視界はぐっと広がるはずですよ。

それでは、素晴らしい運用ライフを!

タイトルとURLをコピーしました