このブログのゴールは、Application Insights correlation で使うTelemetryClient と Activity の使い方を正しく理解すること。
分散トレーシングに関しては、Application Insights では2つの方法がサポートされている。
この両方の挙動を理解してみたい。最初にこのドキュメントから読み始める
Application Insights のデータモデル
Application Insights のデータモデルは下記のアプリケーションの実行パターンが基になっている。
Web アプリケーションフレームワークで自動で集められる3種類のテレメトリ
Request
リクエストを受け取ったときに生成されるログ。Application Insights web SDK は自動で WebAppが受け取った HTTP リクエストの Request テレメトリアイテムを生成してくれる。
Operation というのはリクエストを実行 (Process) するスレッド。他の多印譜のオペレーションをモニタするために、コードを書くこともできます。例えば、wake up
というweb jobや、定期的に実行される function などです。すべてのオペレーションは、 ID を持ちます。このID はアプリケーションがリクエストされる間に作られたすべてのリクエストをgroup化するのにつかわれます。すべての Operation は成功、もしくは失敗、そして実行時間を持ちます。
Exception
Operation が失敗したときの例外を表す
Dependency
あなたのアプリケーションから、外部のサービス呼び出しを表します。例えば、REST API や SQLなどです。ASP.NET では SQL への dependency call は、System.Data
で定義されています。HTTPのエンドポイント呼び出しは、System.Net
で定義されています。
Application Insights は、3つのデータタイプをカスタムテレメトリのために用意しています。
Trace
診断ログを実装するために直接、または、皆さんが慣れている instrumentation framework たとえば Log4Net
や System.Diagnostics
Event
主にユーザインタラクションをキャプチャするのにつかわれます。使われ方のパターンなど
Metric
一定期間のスカラの計測につかわれます。
全てのテレメトリアイテムは、contextを定義しています。例えば、アプリケーションのバージョンや、ユーザセッション ID などです。Context
は各フィールドの型が決まっており、特定のシナリオで役に立ちます。アプリケーションのバージョンが適切に初期化されていると、Application Insights は、再デプロイメントと関係しているアプリケーションの振る舞いのなかで新しいパターンを検出します。Session id は、Outage や、ユーザにインパクトのある問題を算出するのに使われます。特定の失敗した依存や、エラーのトレースや、致命的な例外のsession id の数を重複なくカウントして計算するのは、問題に対するインパクトをよく理解するのに便利です。
Application Insights テレメトリモデルはテレメトリどうしの関係性 correlateの方法を定義します。いったいオペレーションのどの部分であるのか。例えば、リクエストが、SQL Database の呼び出しをして、診断情報を記録したとします。correlation context をこれらのテレメトリアイテムにセットして、リクエストテレメトリと紐づけることができます。
スキーマの改善
Application Insights のデータモデルは、単純で基本的ですが、あなたのアプリケーションテレメトリをモデル化するパワフルな方法です。
私たちは、モデルをシンプルに、スリムに保って、本質的なシナリオをサポートして、アドバンスな使い方にスキーマを拡張できるように努力しています。
モデルやスキーマーに関する問題や、提案はこちらまで ApplicationInsights-Homeリポジトリまで。
まとめ
最初はデータモデルを正しく理解してみた。そのためにほとんどそのまま翻訳することになった。もう少し英語力があれば翻訳しなくても正確に入るのだと思うが、私の場合は、理解に問題があるので、今は重要な時は翻訳するようにしている。
モデルはとてもシンプルで、リンクになっているページも主に、私の使いたいところでいうと、Request と Dependency と Context ぐらいを理解しておけばよさげ。Context のフォーマットはほぼまんま Application Insights に出てくるログのようなイメージがある。
Dictionary
- scalar noun[c] : something that has size but no direction, such as a quantity, distance, speed, or temperature
- instrument noun[c]: a tool or other device used for doing a particular piece of work:
- strive verb[i]: to try very hard to do something or to make something happen, especially for a long time or against difficulties:
- context noun[c]:the situation within which something exists or happens, and that can help explain it: