Log Analyticsを使用したVMの稼働時間確認

はじめに

この記事では、Log Analyticsを使用して、各仮想マシンの稼働時間を確認する方法について記載します。仮想マシンの稼働時間を確認する手段はLog Analyticsに限られないと思いますので、あくまで一つの例としてご紹介致します。

稼働時間の算出方法

仮想マシンをLog Analyticsへ接続しログの収集を始めると、仮想マシンからのHeartbeatがLog Analyticsへ1分間隔で届くようになります。そこで今回は、Heartbeat 1件につき、仮想マシンが1分稼働していたと見なし、Heartbeatの件数を集計することで仮想マシンの稼働時間を算出します。

検索クエリ

単純にheartbeatを検索する場合、「Heartbeat」と実行するだけで問題ありませんが、以下のように収集されたHeartbeatが全件表示され、複数の仮想マシンのログが混合された状態となります。そこでクエリを修正し目的に合致する情報が出力されるように調整します。

まず初めに、検索対象ログを特定期間のログに限定します。稼働時間を確認するという用途の場合、月単位や週単位など特定の期間に限定することになると思います。例として、2019年6月に収集されたログのみに限定するクエリを以下に記載します。

let startdatetime=datetime(2019-06-01T00:00:00) – 9h;
let enddatetime=datetime(2019-06-30T23:59:59) – 9h;
Heartbeat | where TimeGenerated between(startdatetime .. enddatetime)

letでstartdatetimeとenddatatimeという二つの変数を定義し、それぞれ収集期間の起点と終点を設定します。また、HeartbeatのタイムスタンプはUTCであるため、「-9h」を追加し日本時間となるようにしています。その上で、Where句を用いて、Heartbeatに含まれる「TimGenerated」プロパティを元に収集期間を限定します。

 

次に、Heartbeat数を集計するとともに、表示するカラムを必要なデータのみにします。例として、コンピュータ名・リソースグループ名を表示する場合のクエリを以下に記載します。

let startdatetime=datetime(2019-06-01T00:00:00) – 9h;
let enddatetime=datetime(2019-06-30T23:59:59) – 9h;
Heartbeat | where TimeGenerated between(startdatetime .. enddatetime) | project Computer,ResourceGroup | summarize minutes=count() by Computer,ResourceGroup

Project句を用いて抽出するカラムを限定し、Summarize句で件数を集計しています。このクエリを実行した際の結果が以下です。Log Analyticsに接続されている各仮想マシンごとのHeartbeat数が集計されました。これが稼働時間(分)と一致すると見なすことで稼働時間を確認することが出来ます。

それでは、今回はこれで以上となります。

注意事項・免責事項

※技術情報につきましては投稿日時点の情報となります。投稿日以降に仕様等が変更されていることがありますのでご了承ください。

※公式な技術情報の紹介の他、弊社による検証結果および経験に基づく独自の見解が含まれている場合がございます。

※これらの技術情報によって被ったいかなる損害についても、当社は一切責任を負わないものといたします。十分な確認・検証の上、ご活用お願いたします。