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、送信先を簡単に管理することが可能です。

どのデータを取得するか

どの VM から設定したデータを取得するか
データソースについては、デフォルトではベーシックなものが選ばれています。

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

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

設定してあげることで、VM のメトリック名前空間に「仮想マシンのゲスト」が追加され、そこから DCR で設定したパフォーマンスカウンターのメトリックを確認することが可能です。
こちらの例では、Azure の拡張機能である Network Watcher Agent のスレッド数を取得しています。

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