PrometheusでWindowsクラスターを監視する

By 清水 孝郎 - OCTOBER 26, 2021

SHARE:

本文の内容は、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でメトリクスを数分で送信できます!