LogAnalyticsに接続したWindowsServerの仮想マシンはデフォルトでは死活監視のデータが取得されています。
※Windowsイベントログやパフォーマンスカウンターのデータは初期設定では取得対象外のため、各自で設定する必要があります。
今回は、デフォルトで取得されている死活監視のデータを使用して、収集したデータをKQL(Kusto Query Language)を使用して検索してみようと思います。
↓過去の記事はこちら↓
■KQL(Kusto Query Language)について
Microsoftのページは以下です。
Azure Monitor のログ クエリの概要 | Microsoft Docs
ざっくりいうと、
・Microsoft独自のクエリ言語
・SQLのような感じ
です。
まぁ、LogAnalyticsで収集したデータを分析したりする際に使用する言語がKQLって感じです。
リファレンスもあります。
Overview - Azure Data Explorer | Microsoft Docs
私はLogAnalyticsのログ検索で初めてKQLを使用したのですが、どうやらSharepointとかでも使えるらしく、歴史は古いようです。
■ログ検索の事前準備
1.「モニター」>「ログ」をクリックします。※初めてクリックした方は、画面真ん中にある「はじめに」をクリックしてください。
2.「範囲の選択」画面が表示されますので、検索対象となるLogAnalyticsワークスペースを選択し、「適用」をクリックします。※ここでは、「test-loganalytics-01」というワークスペースを選択しています。
3.以下の画面が表示されますので、これで準備完了です。
■検索してみる
vm01という仮想マシンの死活監視のデータ(Heartbeatテーブル)を検索してみます。
以下のKQLを入力し、「実行」をクリックします。
<KQL>
成功すると、画面下部の「結果」タブに情報が記載されます。
■時間帯を指定して出力してみる
Heartbeatテーブルは1分間おきに記録されている為、サーバが起動している限り1分おきにデータ収集されます。
※サーバが停止している場合には、データは何も収集されません。
ここでは、現時点から5時間前までに取得したデータの数を数えてみます。
<KQL>
成功すると、画面下部の「結果」タブに情報が記載されます。
■処理の再利用化
上記の「■時間帯を指定して出力してみる」にて、実施した処理に名前を付けて再利用できるようにします。
<KQL>
上記ですが、「let 変数名 = 通常の処理」と記載し、「変数名」を記載することで実行することができます。
どういうことかというと、上記の場合、最終行のtesttaskという1行を記載することで初めて実行されます。
物は試しで最終行(testtask)が存在しない状態で実行してみると以下のようになり、期待通りの結果になりません。
最終行(testtask)を記載し実行することで期待する結果が出力されます。
■再利用の具体例
下記は再利用した処理を更に加工する際の構文です。
<KQL>
以上です。
更に具体的な例を記載するには力量不足のため、今後記載できればと思います。