本文の内容は、2021年10月21日にÁngel Samitierが投稿したブログ(https://sysdig.com/blog/monitoring-windows-prometheus)を元に日本語に翻訳・再構成した内容となっております。
いくつかの Prometheus エクスポーターを試した結果、ラスボスと戦う準備ができたようだ。Prometheus で Windows クラスターを監視することです。すべての Windows マシンを一枚のガラスでモニターできるダッシュボードが必要です。やってみましょう。
Prometheusのリモートライトが助けてくれる
すべてのメトリクスを1台のPrometheusサーバーに集中させる必要があるので、各Windowsマシンに小さなPrometheusインスタンスをインストールするつもりです。これらの小さなPrometheusインスタンスは、エクスポーターからPrometheusサーバーにメトリクスを送信するクライアントとなります。こうすることで、Prometheusを使ってWindowsを監視する際に、すべてのメトリクスを一元管理することができます。
Prometheus remote writeでは、Prometheusサーバーに直接メトリクスを送信できるのが気に入っています。中間にPrometheusがなくても、HTTPエンドポイントにメトリクスを送信するだけでいいのです。Prometheus remote writeはアウトオブボックスで使えるので、中央のPrometheusでの設定は必要ありません。
Prometheus remote write のもう一つの魅力は、各クライアントの Prometheus に
--storage.tsdb.retention.time=1d
というフラグを立てて起動することで、メトリクスを一日だけ保存することができることです。このようにして、各インスタンスのストレージ使用量を気にすることなくPrometheusを実行することができます。エクスポーターのインストールと設定
Prometheus で Windows をモニタリングするために、まず Windows エクスポーターをインストールします。これは、Windows 用の ノードエクスポーターに相当するものです。このエクスポーターは、HTTPエンドポイントを起動して、ローカルのWindowsインスタンスのすべてのメトリクスを公開し、クライアントのPrometheusがアクセスできるようにします。最新版のエクスポーターをダウンロードして解凍し、ターミナルウィンドウでフォルダを開いて、以下のコマンドを実行するだけです。
windows_exporter-0.16.0-amd64.exe --collectors.enabled "cpu,cs,logical_disk,os,system,net"
エクスポーターが動作するようになりました。次にPrometheusにエクスポーターをスクレイプするように指示するために、scrape_configs配列の中に以下を追加します:
- job_name: "windows_exporter" static_configs: - targets: ["localhost:9182"]
これでほぼ完成です。次のステップでは、Prometheusのリモートライトを設定するために、root configに以下を追加します。
remote_write: - url: "https://<PROMETHEUS_SERVER>/prometheus/remote/write" tls_config: insecure_skip_verify: true
あとは、ターミナルでPrometheusを次のように実行してください:
prometheus.exe --storage.tsdb.retention.time=1d
そうすると、Prometheus サーバーにすべてのメトリクスを送信し始めます。
Prometheusを --storage.tsdb.retention.time=1d
フラグ付きで実行すると、メトリクスの保存期間が1日に設定されます。
リモートライトエンドポイントを通じてPrometheusサーバーにすべてのメトリクスをプッシュしているので、中間のPrometheusインスタンスに保存する必要はありません。
正しいラベルの設定
ラベルを作成する際には、賢くなりたいと思います。ダッシュボードでは、インスタンスだけでなく、アベイラビリティ・ゾーン、環境(開発、ステージング…)、クラウド・アカウントなどでフィルタリングしたいと考えています。このように外部ラベルを使って、各指標にAZ、環境、クラウドアカウントに関連する情報を送信しています。これをグローバル設定の中に追加していきます。
external_labels: cloud-account: aws-dev-1 cloud-region: us-east-1 cloud-az: use1-az1 environment: staging
なお、設定ファイルを変更した場合は、Prometheusの再起動を忘れないようにしてください。
いかがでしたか?
あなたはPrometheusでどのようにWindowsを監視していますか?この記事では、私が見つけたこのユースケースに最適なソリューションを紹介しました。これはうまく機能していて、クラスターの全情報を1つのダッシュボードで把握することができます。
もしあなたがこのような使い方をしているのであれば、遠慮なく@sysdigまでご連絡ください。
エンタープライズグレードのマネージド Prometheusが必要ですか?
今すぐSysdig Monitorの無料トライアルに登録して、マネージドPrometheusサービスをご利用ください。Prometheusインテグレーションを試したり、Prometheus Remote Writeでメトリクスを数分で送信できます!