LoginSignup
5
2

More than 5 years have passed since last update.

TelemetryClient と Activity の挙動を理解する (1) - データモデル

Posted at

このブログのゴールは、Application Insights correlation で使うTelemetryClient と Activity の使い方を正しく理解すること。

分散トレーシングに関しては、Application Insights では2つの方法がサポートされている。

この両方の挙動を理解してみたい。最初にこのドキュメントから読み始める

Application Insights のデータモデル

Application Insights のデータモデルは下記のアプリケーションの実行パターンが基になっている。

application-insights-data-model.png

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 たとえば Log4NetSystem.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:
5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2