このブログを検索

この記事の内容は、個人の見解、検証の範囲のものであり、誤りがある可能性があります。
個人の責任において情報活用をお願いします。


2024年1月31日水曜日

Prometheus で k8s 環境の監視に挑戦してみる 第4回 ブラックボックス監視

今回は、Prometheus を使ったブラックボックス監視について実施してみたいと思います。
ブラックボックス監視とは、システムを外部からのアクセスで状態を確認することのようです。
pingを実行して死活監視を行うような監視の仕方がこれに該当するようです。
対義語として、システム内部のアプリケーションの動作や連携を監視するホワイトボックス監視があります。

Prometheus でどのようにブラックボックス監視を行うのかというと、それ用のエクスポーター blackbox_exporter があるのでそれを使います。
こちらは node_exporter のように監視対象に導入するのではなく blackbox_exporter から監視対象へ確認を実行できます。
その情報を Prometheus へ連携して確認することができ、Prometheus と blackbox_exporter は同居させることもできます。

なのでイメージとしてはこんな感じに
では、導入していきましょう
node_exporter で実施可能なブラックボックス監視の種類は以下の4つのプロトコルが利用可能です。
・HTTP → HTTPサーバーにリクエストを送ってその応答で監視
・TCP → SSH等のTCPを使用してその応答で監視
・DNS → DNSサーバにクエリを実行しその結果でレコードの内容などを監視
・ICMP → pingを実行してその応答で監視

今回は ping での死活監視をやってみたいと思います。
まずはモジュールのダウンロード
# wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.24.0/blackbox_exporter-0.24.0.linux-amd64.tar.gz
解凍します
# tar zxvf blackbox_exporter-0.24.0.linux-amd64.tar.gz
ディレクトリを移動します
# cd blackbox_exporter-0.24.0.linux-amd64
以下で起動可能です。 blackbox_exporter はport9115でアクセスします
# nohup ./node_exporter > /dev/null 2>&1 &

起動ができたら、ブラウザから blackbox_exporter が起動しているサーバーのport9115にアクセスして以下のような画面が出るか確認します。

続いて監視対象に対して監視が実行できるか以下のコマンドを実行します
# curl 'http://localhost:9115/probe?module=icmp&target=dev-nfs-01'
curl で指定している内容ですが、『blackbox_exporter』『実行する監視内容』『監視対象』を指定しています。
・blackbox_exporter → http://localhost:9115/probe
・実行する監視内容 → module=icmp
・監視対象 → target=dev-nfs-01

実行してみると以下のようにいろいろ情報が出てきますが、最後に probe_success 1 と出たら成功しています。
# curl 'http://localhost:9115/probe?module=icmp&target=dev-nfs-01'
# HELP probe_dns_lookup_time_seconds Returns the time taken for probe dns lookup in seconds
# TYPE probe_dns_lookup_time_seconds gauge
probe_dns_lookup_time_seconds 0.001482621
# HELP probe_duration_seconds Returns how long the probe took to complete in seconds
# TYPE probe_duration_seconds gauge
probe_duration_seconds 0.002647711
# HELP probe_icmp_duration_seconds Duration of icmp request by phase
# TYPE probe_icmp_duration_seconds gauge
probe_icmp_duration_seconds{phase="resolve"} 0.001482621
probe_icmp_duration_seconds{phase="rtt"} 0.000778443
probe_icmp_duration_seconds{phase="setup"} 0.00015706
# HELP probe_icmp_reply_hop_limit Replied packet hop limit (TTL for ipv4)
# TYPE probe_icmp_reply_hop_limit gauge
probe_icmp_reply_hop_limit 64
# HELP probe_ip_addr_hash Specifies the hash of IP address. It's useful to detect if the IP address changes.
# TYPE probe_ip_addr_hash gauge
probe_ip_addr_hash 2.973617495e+09
# HELP probe_ip_protocol Specifies whether probe ip protocol is IP4 or IP6
# TYPE probe_ip_protocol gauge
probe_ip_protocol 4
# HELP probe_success Displays whether or not the probe was a success
# TYPE probe_success gauge
probe_success 1

この『'http://localhost:9115/probe?module=icmp&target=dev-nfs-01'』を Prometheus から blackbox_exporter へ実行させるように設定変更を行うことで、Promethuesの『Targets』から結果を確認できるようになります。
prometheus.yml を編集するのでその前にコピーを取っておいてください。

編集内容は『scrape_configs:』フィールドに以下の形で情報を記入します。
scrape_configs:
 
  - job_name: "blackbox_icmp_v4"
    metrics_path: /probe
    params:
      module: [icmp]
    static_configs:
      - targets: ["dev-nfs-01"]
    relabel_configs:
      - source_labels: [__address__]
        target_label: instance
      - source_labels: [__address__]
        target_label: __param_target
      - target_label: __address__
        replacement: localhost:9115

その後は、Promethues を停止して再起動します。

再起動が終わったら Promethues で Target を見てみましょう。
『blackbox_icmp_v4』が追加され監視が行われていることがわかります。
今回はサーバーの状態を外から確認するブラックボックス監視についてやってみました。
次回はサーバーの中で動いているものを監視するホワイトボックス監視についてやってみようと思います。