このブログを検索

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


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』が追加され監視が行われていることがわかります。
今回はサーバーの状態を外から確認するブラックボックス監視についてやってみました。
次回はサーバーの中で動いているものを監視するホワイトボックス監視についてやってみようと思います。

2024年1月14日日曜日

CSV利用してADにユーザー一括作成。。


ADで検証するときに複数ユーザー欲しいときがあります、、よね。
いろいろなところに情報があるのでブログを書くまでもないのですが、、
今後、自分が検証環境で使うときにすぐ使えるためのメモとして残します。。

利用した環境:Windows Server 2022(評価版)
ゴール:”Grp001-B-支社”にユーザーを一括作成
完成図↓

実現までのステップ
  1. グループを使う場合は、先にグループを作成する
  2. dsadd userコマンドでOU内に作成したいユーザーを作成できるコマンドを確定する
  3. 一括ユーザー作成用のパラメーターCSVを作成する
  4. 実行コマンド作成
  5. コマンドプロンプト(管理者権限)でコマンド実行
  6. 作成できたことを確認する

1.グループを使う場合は、先にグループを作成する
 一括作成したユーザをグループに登録する場合は、先にグループを作成しておく

2.dsadd userコマンドでOU内に作成したいユーザーを作成できるコマンドを確定する
ユーザーを1つ作成できるコマンドとパラメーターを確定する
作成するユーザー
・OU”Grp001-B-支社”にユーザーを作成
・作成したユーザーをグループ”Grp001-B-支社-一般”に追加
・氏名、モバイル、社員番号、会社情報、部署、役職など必要パラメーターを設定する
 ※モバイル番号はダミー番号を使用する(テストなので、、)
  ダミー番号は総務省ホームページ参照 → ☆リンク☆
   
作成したスクリプト例:
dsadd user CN="Grp001-B-GA user01",OU=Grp001-B-支社,OU=Grp001-総務,DC=site001,DC=demo,DC=test -ln Grp001-B-GA -fn user01 -empid 20100001 -mobile 070-XXXX-XXXX -pwd "パスワード" -pwdneverexpires yes -samid grp01-b-ga-user01 -upn grp01-b-ga-user01@site001.demo.test -email grp01-b-ga-user01@site001.demo.test -display "Grp001-B-GA user01" -company "TEST Lab Co.Ltd." -office "支社" -dept "総務部" -title "一般" -memberof cn="Grp001-B-支社-一般",OU="Grp001-B-支社",OU="Grp001-総務",DC="site001",DC="demo",DC="test"
3.一括ユーザー作成用のパラメーターCSVを作成する
 こんな感じでまずパラメーターごとのCSVを作成してみる。
 あとで流すコマンドで列(カラム)の対応が必要なので準備する。
 また、コマンドでカラムの数を指定するので数えておく。
 コマンドのパラメータで重複がある場合は整理する。


 最終的にこんな感じにまとめる。以下のキャプチャは一部。


 作成したCSVファイルで日本語文字列を使用する場合は、文字コードをANSIにして任意の場所に保存する。作成したCSVファイルはコマンドでパスを指定するのでパスを控えておく。

4.実行コマンド作成
 整理して以下のようなコマンドを作成する
 ※以下のコマンドはもう少しまとめられたが、今後流用するときに戻すのが面倒なので
  パラメーターの集約はほとんどしていない
for /F "tokens=1-20 delims=," %A in (C:\user.csv) do dsadd user CN="%A",OU=%B,OU=%C,DC=%D,DC=%E,DC=%F -ln %G -fn %H -empid %I -mobile %J -pwd "%K" -pwdneverexpires yes -samid %L -upn %M -email %N -display "%O" -company "%P" -office "%Q" -dept "%R" -title "%S" -memberof cn="%T",OU="%B",OU="%C",DC="%D",DC="%E",DC="%F"

5.コマンドプロンプト(管理者権限)でコマンド実行


”dsadd 成功”と表示され、ユーザーが作成されたことを確認する。
エラーとなる場合は、パラメーターの置換によりコマンドがおかしくなっているはず。。
エラー箇所もメッセージから推測できるので該当箇所を修正する。

6.作成できたことを確認する


以上。