先日 Durable Functions のハックフェストで、プロダクトチームのChris を観察していると、彼はデバッグの時にApplication Insightsを使いまくっていた。あー、プロダクトチームの人もわしらと同じツール使うんだと思ったのと同時に、Application Insights のクエリーは相当デバッグに役立ちそう。そこでちょっと試してみた。

クエリーの構文
クエリーの構文は、SQL と似た構文になっていて、本当にいろいろなことができる。
このページのクエリを一個一個試していたのだけど、数時間経っても半分も終わらないぐらい沢山あった。検索、ソート、サマリ、平均、join、グラフの出力、PowerBIやExcel へのエクスポートなどガチでなんでもできる感じ。出来過ぎて1日で終わらなかった。
シンプルにデバッグに役立つような自作クエリーを試してみる。
検索できるデータの種類
これは下記の通り。各項目ごとに属性を持っている。これらについて検索をしたり、サマリをしたりできる。これは相当便利。

最近のExceptionの検出
このレベルだと、デフォルトのグラフからたどれるのだが、自分の練習でやってみる。エラー種別ごとのカウントをとってみよう。先のページのサンプルは、requests
ばかりだったので、exceptions で調べてみる。
exceptions
| where timestamp > ago(1d)
| summarize count=sum(itemCount) by type
exceptions のうち、1日内のものに関して、type 毎にカウントのサマリを表示する。こうすれば、どんな Exception が何個出ているかわかる。ここでは、SqlExceptionが気になるのでそれの詳細を見てみたい。

グラフもボタン一つ。

じゃあ具体的な Exception の内容の詳細を取得してみよう。
exceptions
| where timestamp > ago(1d)
| where type == "System.Data.SqlClient.SqlException"
こんな感じで詳細が見れる。

結論
この他にも沢山の紹介しきれないぐらいのクエリーが出来た。requests
だと、国ごとの数値とかもサマリできた。Exception でも、client_CountryOrRegion
があるので、国ごとの Exception とかも出力できる。上記のリファレンスページを見ながらになるけど、今後はガンガンに使ってみよう。便利そう!
Resource
これに尽きる。ちなみに、LogAnalytics も同じ構文(たぶん同じ基盤使ってる)らしいので、これを覚えたらどっちも使えそうでいい感じ。