おーみんブログ

C#, ASP.NET Core, Unityが大好きです。

KQLを用いてAzure Log Analyticsを分析してみた。

はじめに

Azure Log Analyticsというログの収集/分析サービスがあるのですが、今回はその専用言語(クエリ言語)であるKQL(Kusto Query Language)を触ってみたので備忘録として残したいと思います。

公式ドキュメント

公式ドキュメントは以下です。

docs.microsoft.com

いくつか書いてみる

いくつか書いてみました。

対象のテーブルはリクエストのログを格納するAppRequestsテーブルを用いています。

AppRequests
| project TimeGenerated, ResultCode, ClientType

上記はAppRequestsテーブルのTimeGenerated, ResultCode, ClientTypeカラムを取得しています。
SQLで言うとSELECT TimeGenerated, ResultCode, ClientType FROM AppRequestsという感じですね。
どうやらKQLでは最初に取得したいテーブル名、その後パイプライン( | )でproject {取得したいカラム名}・・・というように書く決まりのようです。

色々書いてみましょう。

AppRequests
| project TimeGenerated, ResultCode, ClientType
| where ResultCode == 200

上記は先ほどの結果より、ResultCodeが200のもののみ抽出するクエリです。
変化したのはwhere以降のみです。ここらへんはSQLと同じ感じでした。

さらに色々書いてみます。

AppRequests
| summarize records=count() by bin(TimeGenerated, 1h)
| sort by TimeGenerated

上記はTimeGeneratedカラムの値を1時間ごとに集計し、レコードが何件あるかを計算、そしてTimeGeneratedカラムの降順に出力しています。
summarizeはSQLでいうGROUP BYみたいな感じでbinは特定の単位にまとめる役割を担っています。
sort byは後ろにascを付けると昇順、descもしくは何もつけないと降順で出力します。

おわりに

以上でKQLを用いてAzure Log Analyticsを分析してみた内容でした。
KQLはAzure独自のクエリ言語ではありますが、SQLにある程度慣れていればそれほど覚えるのが大変...というわけでもなさそうです。