この記事は更新から24ヶ月以上経過しているため、最新の情報を別途確認することを推奨いたします。
はじめに
この記事では、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数が集計されました。これが稼働時間(分)と一致すると見なすことで稼働時間を確認することが出来ます。
それでは、今回はこれで以上となります。