Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

このブログのゴールは、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:
TsuyoshiUshio@github
プログラマ。自分の学習用のブログです。内容は会社とは一切関係ありません。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした