KQLを用いてAzure Log Analyticsを分析してみた。
はじめに
Azure Log Analyticsというログの収集/分析サービスがあるのですが、今回はその専用言語(クエリ言語)であるKQL(Kusto Query Language)を触ってみたので備忘録として残したいと思います。
公式ドキュメント
公式ドキュメントは以下です。
いくつか書いてみる
いくつか書いてみました。
対象のテーブルはリクエストのログを格納する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にある程度慣れていればそれほど覚えるのが大変...というわけでもなさそうです。