前提
- C# Function v2 アプリ。Application Insights nuget パッケージはインストール済み
- Azure ポータルで Application Insights とは連携済み
- アプリから固有のメトリックを Application Insights に送信し、Azure ポータルで結果を確認したい
手順
アプリでメトリック情報を Application Insights に送信する。ここではカスタム イベントと一緒に送信する (TrackEvent メソッド使用)
// ここでは Functions が Application Insights と連携済みの想定。未連携の場合は手動でインストルメンテーション キーを設定して初期化する等必要 private static readonly TelemetryClient telemetryClient = new TelemetryClient(); public static async Task<HttpResponseMessage> Run( [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req, ILogger log) { ... // テレメトリ送信 // 第 1 引数: イベント名、第 2 引数: イベント情報、第 3 引数: メトリック情報 telemetryClient.TrackEvent("Capabilities", new Dictionary<string, string>() { { "Combination", combinationString } }, new Dictionary<string, double>() { { "Capability request", 1 }, { "Capability (" + combinationString + ")", 1 } }); ... }
アプリを実行し、当該テレメトリを Application Insights に送信する (この後の操作は当該テレメトリの送信が行われていないと出来ない)
Azure ポータルで当該 Application Insights を選択し、「メトリック」ブレードを選択する。「メトリック名前空間」ドロップダウンで CUSTOM の「azure.applicationinsights」を選択し、「メトリック」ドロップダウンで、送信したカスタム メトリックを選択する
期待するグラフが表示されることを確認する
画面右上の「ダッシュボードにピン留め」をクリック
ダッシュボードにピン留めされたら、適宜表示期間の調整などを行う。通常のタイルと同様の扱いなので、サイズ変更や表示期間の共有なども可能
補足
API の引数や Azure ポータルでのメトリック表示方法を見てもらえれば分かると思うが、指定できる情報として、カテゴリ的な情報がない。 なので、メトリック名のフォーマットでカテゴライズしておかないと、数が増えてきた時に恐らくわけがわからなくなる。 既定が半角スペース区切りで擬似カテゴライズしているようなので、同じ方法で良いかと思われる。