less than 1 minute read

Azure VM のゲスト OS 上のパフォーマンスカウンターを気軽に取ってみる

こんなことを書いています

  • データ収集ルールを使えば簡単に Azure VM 上のゲストメトリックが取得可能
  • メトリックを Log Analytics Workspace に入れるまでもないときに活用

カスタムメトリックの取得

Azure VM では、仮想マシンの基盤から VM のメトリックを自動で取得してくれます。

ただ、あくまで基盤のメトリックなので VM 内部のメトリックは取得できません。カスタムメトリックを利用することで、ゲスト OS のメトリック(例えば Windows のパフォーマンスカウンター)を取得し、メトリックスエクスプローラーで確認が可能となります。

昔はもうちょっと面倒だったなーという記憶があるのですが、 Azure Monitor Agent がリリースされてデータ収集ルール(DCR)が使える現状では、 DCR を活用すれば簡単に取得することが可能です。

AMA を利用したカスタムメトリクスはプレビュー機能です。なお、2024年8月のドキュメント更新により、この機能は一般提供(GA)されないことが公式に発表されています。今後は Azure Monitor ワークスペースでの Prometheus メトリックや OpenTelemetry を使用した収集が推奨されています。詳細は Azure Monitor のカスタム メトリック (プレビュー) を参照してください。


DCR からゲスト OS のメトリックを取得する

Azure Monitor の DCR を活用することで、DCR で設定した収集するデータ、データを収集する VM、送信先を簡単に管理することが可能です。

DCR Data Source

どのデータを取得するか

DCR Resource

どの VM から設定したデータを取得するか

データソースについては、デフォルトではベーシックなものが選ばれています。 DCR Resource

カスタムにすることで、細かく取得が可能になります。 DCR Resource Custom

パフォーマンスカウンターは _total しかデフォルトでとれないので各プロセスのカウンターを取得する

カスタムで取得できるのは基本的にそれぞれのパフォーマンスで「_total」や「*」といった、全プロセスなどを足し合わせたものを取得するので、 例えば特定プロセスの CPU 使用率を取得したい場合はパフォーマンスカウンターを追加してあげる必要があります。

\Process(プロセス名)\ % Processor Time

取得したいプロセス名を全部いれる必要があるので手間ではありますが。。。

DCR Add Performance

設定してあげることで、VM のメトリック名前空間に「仮想マシンのゲスト」が追加され、そこから DCR で設定したパフォーマンスカウンターのメトリックを確認することが可能です。

こちらの例では、Azure の拡張機能である Network Watcher Agent のスレッド数を取得しています。

Custom Metric

Appendix

Azure Monitor のカスタム メトリック (プレビュー)

2024年8月追記: 上記公式ドキュメントにて「カスタム メトリックの送信」機能が一般提供されないことが明記されました。代替手段として以下が推奨されています。