Application InsightsをPHPのシステムに組み込む ~基本情報とテレメトリの整理編~ - Qiita
の続きです。
SDKの組み込み
PHPのライブラリなのでcomposerで組み込みます。
$ composer require microsoft/application-insights
ちなみにGithubは以下
https://github.com/Microsoft/ApplicationInsights-PHP
今現在の最新バージョンはv0.4.4
で、PHPのバージョンが5.4.2
以上である必要があります。(あまりマメにメンテされているとは言い難いです…)
簡単な使い方はREADME.md
にある通りなんですが、以下でもう少し細かくパラメータなどを見ていきます。
コンテキストの種類、プロパティ一覧
その前にコンテキストってなに
Azure Application Insights Telemetry のデータ モデル - テレメトリ コンテキスト | Microsoft Docs
要は様々なテレメトリで共通的にセットしておけるProperty
調査しきれていないので、未使用部分について説明を割愛してます
- Session
- id(セッションID)
省略してフレームワークに任せる - isFirst(調査中)
用途不明、未使用
- id(セッションID)
- User
- id(ユーザID)
システムのユーザIDは認証通過後にauthUserIdにセットするので今の所未使用 - accountId(アカウントID)
ログインIDをセットするか未使用にするか検討中 - authUserId(認証ユーザID)
認証通過後にシステムのユーザIDをセット
- id(ユーザID)
- Application
- ver(バージョン情報)
クライアント側での工夫も必要になるが、Application.verにクライアントのバージョン情報を乗せておくとリリース後にクライアントがキャッシュのせいでうまく動いていないなどのトラブルの確認ができる
- ver(バージョン情報)
- Location
- ip(クライアントIPアドレス)
省略でそのままデータが表示される
- ip(クライアントIPアドレス)
- Operation
- id(操作ID)
省略しておくとAPI単位でいい感じにグルーピングされるので便利 - parentId(親操作ID)
処理の入れ子を意識していないため、未使用 - name(操作名)
クライアントから取得した操作の概要文字列をセットしておくと調査が捗る - syntheticSource(代理データのソース)
用途不明、未使用 - correlationVector(調査中)
用途不明、未使用
- id(操作ID)
- Device
使用用途なし(自動設定に任せる) - Cloud
使用用途なし(自動設定に任せる) - Internal
使用用途なし(自動設定に任せる)
テレメトリ発行時のパラメーター詳細
Trace
$telemetryClient->trackMessage($message, [$severityLevel = NULL], [$properties = NULL]);
- message
ログの内容 - severityLevel
ログレベル的なもの
定数が\ApplicationInsights\Channel\Contracts\Message_Severity_Level
に用意されてあるのでそれを使う- Verbose(冗長)
- Information(情報)
- Warning(警告)
- Error(エラー)
- Critical(致命的)
- properties
付加情報(Array1)
ここで追加した値はAzure PortalのFilterの条件として使える
Request
$telemetryClient->trackRequest($name, $url, $startTime, [$durationInMilliseconds = 0], [$httpResponseCode = 200], [$isSuccessful = true], [$properties = NULL], [$measurements = NULL]);
もしくは以下のように呼出前後に分けてCallすることも可能
$requestData = $telemetryClient->beginRequest($name, $url, $startTime);
// 外部API呼出処理
$telemetryClient->endRequest($requestData, [$durationInMilliseconds = 0], [$httpResponseCode = 200], [$isSuccessful = true], [$properties = NULL], [$measurements = NULL]);
- name
リクエスト名(自由につけて構わない) - url
リクエストURL - startTime
呼出時刻(UnixTime) - durationInMilliseconds
所要時間(ミリ秒) - httpResponseCode
HTTPのレスポンスコード - isSuccessful
呼出の成否(httpResponseCodeでもだいたい分かるとは思うが…) - properties
付加情報(Array1)
ここで追加した値はAzure PortalのFilterの条件として使える - measurements
計測情報(Array2)
ここで追加した値はAzure PortalのFilterの条件として使える
PageView
現状のシステムで使っていないため、割愛します
Custom Event
$telemetryClient->trackEvent($name, [$properties = NULL], [$measurements = NULL]);
- name
テレメトリの名称
特に決まりはなく、文字列で自由につけられる模様 - properties
付加情報(Array1)
ここで追加した値はAzure PortalのFilterの条件として使える - measurements
計測情報(Array2)
ここで追加した値はAzure PortalのFilterの条件として使える
Exception
$telemetryClient->trackException($exception, [$properties = NULL], [$measurements = NULL]);
- exception
PHPのException
を継承したinstance - properties
付加情報(Array1)
ここで追加した値はAzure PortalのFilterの条件として使える - measurements
計測情報(Array2)
ここで追加した値はAzure PortalのFilterの条件として使える
Dependency
$telemetryClient->trackDependency(
$name,
[$type = ""],
[$commandName = NULL],
[$startTime = NULL],
[$durationInMilliseconds = 0],
[$isSuccessful = true],
[$resultCode = NULL],
[$properties = NULL]);
- name
テレメトリの名称
特に決まりはなく、文字列で自由につけられる模様
DBのクエリー情報では"Query"
を指定している
- type
テレメトリの種別
こちらも特に決まりはなく、文字列で自由につけられる模様
DBのクエリー情報では"MySQL"
を指定している
- commandName
外部システムで実行するコマンドの名称
DBのクエリー情報ではクエリーそのものを指定している
- startTime
外部システム呼び出し時間(UnixTime)
Azure Portal上でタイムライン形式で表示する際に有益
- durationInMilliseconds
処理時間(ミリ秒)
Azure Portal上でタイムライン形式で表示する際に有益
- isSuccessful
呼出が成功したか(Boolean) - resultCode
結果コード(Integer) - properties
付加情報(Array1)
ここで追加した値はAzure PortalのFilterの条件として使える
メモ
- すべてのpropertiesに共通的に値を入れる場合はラッピングクラス化する