IIS の詳細ログ - クライアント ログ
執筆者 Vishal Sood
IIS 詳細ログは、メディアやその他のコンテンツのクライアント消費に関する情報を受理できます。 クライアント (Microsoft Silverlight など) は、メディア コンテンツとのやりとりに関する有用なデータを送信できます。 この情報は分析レポートの基礎を形成します。これは、企業がコンテンツ配置と投資収益率 (ROI) を向上させるのに役立ちます。
IIS 詳細ログは、標準の HTTP POST メッセージと XML 形式を使用してクライアント ログを受理するので、ほとんどのクライアントがこの機能を使用できます。
要件
クライアント のログ記録が役立つには、クライアントは、IIS 詳細ログに HTTP POST 経由で所定の XML 形式のメッセージを送信する必要があります。 これを行うことができるクライアントは次のようなクライアントです。
- インターネット インフォメーション サービス (IIS) 7 の拡張機能の IS 詳細ログは使用できなくなりました。 「IIS 8.5 の拡張ログ」をお勧めします。
- Microsoft Silverlight 3 以降に基づくアプリケーション。 Silverlight には、IIS 詳細ログがインストールされている Web サーバーに必要な XML 形式のメッセージを投稿するために使用できるメトリックが含まれています。
- IIS Smooth Streaming サンプル クライアント。
クライアント ログの有効化
IIS 詳細ログのクライアント ログは、既定では無効になっています。 この機能を有効にするには、次の操作を行います。
- IIS マネージャーで、クライアント ログを受信するサーバーの [ホーム] ページ上の [詳細ログ] アイコンをダブルクリックします。
- [アクション] ウィンドウで、[詳細ログを有効にする] をクリックします。
サンプル ログ クライアントの使用
IIS Smooth Streaming は、クライアントの変化するリソース条件 (ネットワーク スループットと CPU) に対応するためにビットレートの切り替えを可能にする、Microsoft のアダプティブ ストリーミング プラットフォームです。 IIS 詳細ログの場合は、豊富なデータ収集機能を提供する IIS Smooth Streaming 用のサンプル ログ クライアントを使用できます。 このセクションでは、サンプル ログ クライアントを設定し、IIS 詳細ログを構成してクライアント側の分析データをログに記録する方法について説明します。
サンプル ログ クライアントの設定
IIS Smooth Streaming 用のサンプル ログ クライアントを設定するには、次の手順を実行します。
- IIS Smooth Streaming 用のサンプル ログ クライアントをダウンロードします。
- サンプルを抽出するように求められたら、[はい] をクリックします。
- 使用許諾契約書に同意するように求められたら、[はい] をクリックします。
- 抽出したファイルを配置する場所を指定するように求められたら、ディレクトリ パス (たとえば
C:\LoggingSampleClient
) を入力します。 ディレクトリの作成を求められたら、[はい] をクリックします (このプロンプトは、ディレクトリが存在しない場合にのみ表示されます)。
サンプルを抽出したディレクトリに移動すると、SampleClient.xap という名前のファイルが見つかります。 これはサンプル ログ クライアントです。 既存のコンテンツの .xap ファイルをこのファイルに置き換えることができます (必要に応じて名前を変更するか、それを参照する HTML を更新します)。
サンプル ログ クライアントの構成
サンプル ログ クライアントで可能な唯一の構成は、ログ URL を指定することです。この URL は、収集された統計情報を含む HTTP POST メッセージをクライアントが送信する場所を決定します。 このセクションでは、Smooth Streaming クライアントの統計情報をログに記録するための 2 つの構成オプションについて説明します。
クライアント側マニフェスト
クライアントは、クライアント側マニフェストの LogUrl 要素を読み取って、HTTP POST を送信する URL を決定します。 複数の LogUrl 要素は、HTTP POST がリスト内のすべての URL に送信されることを意味します。 この記事の「初期化パラメーター」セクションで指定した URL が、マニフェストから取得した一覧に追加されます。
マニフェストに LogUrls を追加するための構文は次のとおりです。
<SmoothStreamingMedia
MajorVersion="1"
MinorVersion="0"
Duration="6537916781">
<LogUrl>http://logserver/iislogging.log</LogUrl>
<StreamIndex
Type="video"
Subtype="WVC1"
Chunks="327"
Url="QualityLevels({bitrate})/Fragments(video={start time})">
初期化パラメーター
ログ URL は、クライアントのインスタンス作成中に PARAM タグ initparams を使用して設定することもできます。 構文は次のとおりです (セミコロンで区切られたリストを使用して複数の LogUrl を指定できます)。
Note
initparams の LogUrls の値は、完全な HTTP URL である必要があります。 相対 URL の使用は許可されていません。
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="SampleClient.xap"/>
<param name="onerror" value="onSilverlightError" />
<param name="initparams" value='autoplay=true,autoload=true,enablecaptions=true,muted=false,displaytimecode=true,playlist=<playList>
<playListItems><playListItem title="test" description="test" mediaSource="http://server/contentdir/content.ism/manifest" adaptiveStreaming="True" thumbSource="" frameRate="24.0" width="512" height="384" ></playListItem></playListItems></playList>,logUrls=http://server/contentdir/post.log' />
<a href="http://go2.microsoft.com/fwlink/?LinkID=124807">
<img src="http://go2.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight"/>
</a>
</object>
ログ定義の構成
IIS 詳細ログでクライアント ログ機能を利用するには、関連するフィールドとログ定義を構成ストアで構成する必要があります。 IIS マネージャーの詳細ログ ユーザー インターフェイスを使用してこれを行うことができますが、ログ定義を構成するより簡単な方法は、スクリプト AddClientConfig.js を使用することです。 圧縮 (zip 形式) フォルダー (ClientConfig_2.zip) にスクリプトをダウンロードするには、ここをクリック します。
スクリプトの構文は次のとおりです。
AddClientConfig.js [/f:<fields.xml>] [/b:<baseFileName>]
ここで fields.xml は zip 形式のフォルダーに含まれる XML ファイルで、baseFileName はログ定義に付ける名前です。 baseFileName を指定しない場合、IIS 詳細ログでは既定のログ定義名 %COMPUTERNAME%-Client が使用されます。
スクリプトを実行した後、Web サーバーを再起動します。これは、IIS リセット コマンド ライン ユーティリティを使用するか、IIS マネージャーで Web サーバーを再起動して行います。
- [接続] ウィンドウで、Web サーバー名をクリックします。
- [操作 ] ウィンドウで、[再起動 ] をクリックします。
これで、IIS 詳細ログを実行している Web サーバーは、クライアント側のログを受信できるようになりました。
サンプル ログ クライアント - ログ イベント
IIS Smooth Streaming 用のサンプル ログ クライアントは、次のイベントのログ メッセージを投稿します。
再生。 再生要求の開始を示します。 IIS 詳細ログで統計の計算が開始されます。
シーク。 クライアントは新しい場所にジャンプします。 このイベントは、現在のセッションを無効にしたり、新しいセッションを作成したりすることはありません。 次を除くすべての統計は引き続き累積されます。
- c-starttime。 クライアントは、シーク関数を使用して新しい場所にリセットされます。 上記で指定したこのフィールドは、再生が開始されたビデオの時刻を示します。
- startupTime。 シークすると、クライアント バッファーが再び使用される可能性があるので、この値をリセットします。
- x-duration. c-starttime が変更されると、期間は 0 にリセットされます。
停止。 クライアントによるプログレッシブ ダウンロードと再生が停止しました。 ただし、セッション (c-playerid GUID) は無効になりません。 再生を再開すると、再び 0 オフセットから開始され、その時点で、次のフィールドは引き続き累積されます。
- c-starttime。 0にリセットされます。
- startupTime。 もう一度計算されます。
- x-duration. 0にリセットされます。
一時停止 これは [停止]に似ていますが、再生 (再開時) は一時停止された場所から継続されます。 この場合、次を除くすべてのフィールドは引き続き累積されます。
- startupTime。 もう一度計算されます。
定期的。 30 秒間隔でポストされるログ データのスナップショット。 30 秒の間隔は、前の定期的なログまたは上記の他のイベントから作成された別のログから計算されます。 イベントが 30 秒ごとに発生すると解釈するのは誤りです。 別のイベントが発生し、ログが送信された後、30 秒が経過すると、次の定期的なログが送信されます。 これにより、その期間中に 2 つのイベントが発生しない限り、30 秒のウィンドウには 2 つのイベントがログに記録されることはありません。
サンプル ログ クライアント - ログ フィールド
IIS 詳細ログでは、次のログ フィールドに対するクライアント データを記録できます。
フィールド | 詳細 |
---|---|
date | ログが生成された日付。 |
time | ログが生成された時刻。 |
cs-url | コンテンツ アイテムのマニフェスト URL。 |
c-playerId | Smooth Streaming コンテンツごとに生成される一意の GUID。コンテンツがプレイリストの一部である場合はプレイリスト。 |
c-buffercount | 再バッファーが必要な回数。 これは基本的に何回アンダーフローするかです。これはフレーム レベルで計算されます。 |
c-playerVersion | Silverlight バージョン |
c-bytes | サーバーからクライアントが受信したバイト数。 この値には、ネットワーク スタックによって追加されるオーバーヘッドは含まれません。 ただし、HTTP ではオーバーヘッドが発生する可能性があります。 そのため、異なるプロトコルを使用してストリーミングされた同じコンテンツでも値が異なる場合があります。 c-bytes と sc-bytes (サーバー側) が同一でない場合、パケット損失が発生しています。 |
audiocodec | オーディオ コーデック |
videocodec | ビデオ コーデック |
c-starttime | クライアントがストリームの監視を開始した時点 (秒単位、分数なし)。 実際のライブ ストリーミングでは、wallclock 時間を使用して時間オフセットを計算する必要があります。 |
x-duration | c-starttime からクライアントによってレンダリングされるデータの期間 (秒単位)。 |
c-os | クライアント コンピューターのオペレーティング システム。 |
c-osversion | クライアント コンピューターのオペレーティング システムのバージョン。 |
startupTimeMs | 再生から最初のフレームのレンダリングまで (ミリ秒単位)。 |
c-playerState | 再生/停止/一時停止など。 |
bandwidthMax | 認識される最大帯域幅 |
bandwidthMin | 認識される最小帯域幅 |
bandwidthAvg | 認識される平均帯域幅 |
droppedFramesPerSecond | 1 秒あたりのフレーム落ちの数 (Silverlight 提供) |
renderedFramesPerSecond | 1 秒あたりのレンダリングされたフレーム数 (Silverlight 提供) |
hasDRM | 値は true、false、または、DRM、PlayReady、Lightweight などの列挙型にすることができます。 |
audioResponseTimeAvg | オーディオ チャンクを取得するための平均応答時間。 これは要求から最後のバイトまでの時間です。 |
audioResponseTimeMax | オーディオ チャンクを取得するための最大応答時間。 これは要求から最後のバイトまでの時間です。 |
audioResponseTimeMin | オーディオ チャンクを取得するための最小応答時間。 これは要求から最後のバイトまでの時間です。 |
videoResponseTimeAvg | ビデオ チャンクを取得するための平均応答時間。 これは要求から最後のバイトまでの時間です。 |
videoResponseTimeMax | ビデオ チャンクを取得するための最大応答時間。 これは要求から最後のバイトまでの時間です。 |
videoResponseTimeMin | ビデオ チャンクを取得するための最小応答時間。 これは要求から最後のバイトまでの時間です。 |
smoothStreamingVersion | Smooth Streaming クライアントのバージョン |
audioDownloadErrors | 不足しているオーディオ チャンクの合計数 (404 など)。 これは、starttime ID/chunk ID のセミコロン区切りのリストです。 |
videoDownloadErrors | 不足しているビデオ チャンクの合計数 (404 など)。 これは、starttime ID/chunk ID のセミコロン区切りのリストです |
audioPlaybackBitrates | 再生中に再生されたオーディオ ビットレートの順序付きリスト。 これはセミコロンで区切られたリストです。 このリストは再生順です。 エントリが重複している可能性があります。 |
videoPlaybackBitrates | 再生中に再生されたビデオ ビットレートの順序付きリスト。 これはセミコロンで区切られたリストです。 このリストは再生順です。 エントリが重複している可能性があります。 |
audioPlaybackBitrateDurations | 再生中に再生された各オーディオ ビットレートの再生時間の順序付きリスト。 これはセミコロンで区切られたリストです。 このリストは再生順です。 エントリが重複している可能性があります。 |
videoPlaybackBitrateDurations | 再生中に再生された各ビデオ ビットレートの再生時間の順序付きリスト。 これはセミコロンで区切られたリストです。 このリストは再生順です。 エントリが重複している可能性があります。 |
audioBandwidthAvg | ダウンロードしたチャンクの平均オーディオ ビットレート |
videoBandwidthAvg | ダウンロードしたチャンクの平均ビデオ ビットレート |
audioBufferSizeAvg | 再生中のオーディオ バッファーの平均サイズ (秒単位) |
audioBufferSizeMax | 再生中のオーディオ バッファーの最大サイズ (秒単位) |
videoBufferSizeAvg | 再生中のビデオ バッファーの平均サイズ (秒単位) |
videoBufferSizeMax | 再生中のビデオ バッファーの最大サイズ (秒単位) |
audioSwitches | オーディオ ビットレート スイッチの数 |
videoSwitches | ビデオ ビットレート スイッチの数 |
サンプル ログ クライアント - サンプル ログ メッセージ
IIS Smooth Streaming 用のサンプル ログ クライアントからのサンプル ログを次に示します。
<?xml version="1.0" encoding="utf-8"?>
<XML>
<applicationUri>http://www.contoso.com/AdaptiveStreamingStatsTracker.xap</applicationUri>
<audioBandwidthAvg>932844</audioBandwidthAvg>
<audioBandwidthMax>27343198</audioBandwidthMax>
<audioBandwidthMin>46528</audioBandwidthMin>
<audioBitrates>160016</audioBitrates>
<audioBufferChunks>0</audioBufferChunks>
<audioBufferChunksAvg>10</audioBufferChunksAvg>
<audioBufferChunksMax>11</audioBufferChunksMax>
<audioBufferSize>0</audioBufferSize>
<audioBufferSizeAvg>401160</audioBufferSizeAvg>
<audioBufferSizeMax>458553</audioBufferSizeMax>
<audioBufferTime>0</audioBufferTime>
<audioBufferTimeAvg>199669058</audioBufferTimeAvg>
<audioBufferTimeMax>221692517</audioBufferTimeMax>
<audioChunks>250</audioChunks>
<audioCodec>Wma</audioCodec>
<audioDownloadedDuration>4986427210</audioDownloadedDuration>
<audioDownloadedSize>10058537</audioDownloadedSize>
<audioDownloadErrors>0</audioDownloadErrors>
<audioPlaybackBitrateDurations>4353451247</audioPlaybackBitrateDurations>
<audioPlaybackBitrates>160016</audioPlaybackBitrates>
<audioResponseTimeAvg>42</audioResponseTimeAvg>
<audioResponseTimeMax>881</audioResponseTimeMax>
<audioResponseTimeMin>1</audioResponseTimeMin>
<audioSwitches>0</audioSwitches>
<bandwidthAvg>4721028</bandwidthAvg>
<bandwidthMax>104207158</bandwidthMax>
<bandwidthMin>46528</bandwidthMin>
<browserName>Microsoft Internet Explorer</browserName>
<browserPlatform>Win32</browserPlatform>
<browserVersion>4.0</browserVersion>
<c-buffercount>5</c-buffercount>
<c-bytes>177010217</c-bytes>
<clientStartTime>2009-03-19 21:48:18Z</clientStartTime>
<c-os>Win32NT</c-os>
<c-osversion>6.0.6001.65536</c-osversion>
<c-playerId>0a786fb9-ea8b-4851-aa2f-63e2192401ed</c-playerId>
<c-playerState>EndOfStream</c-playerState>
<c-playerVersion>2.0.40115.0</c-playerVersion>
<c-starttime>793</c-starttime>
<cs-url>http://www.contoso.com/smooth/Big_Buck_Bunny.ism/manifest</cs-url>
<date>2009-03-19</date>
<displayHeight>831</displayHeight>
<displayIsFullScreen>False</displayIsFullScreen>
<displayWidth>1676</displayWidth>
<droppedFramesPerSec>0</droppedFramesPerSec>
<hasDRM>False</hasDRM>
<isLive>False</isLive>
<logReason>playerStateChange: Playing-EndOfStream</logReason>
<manifestRequests>1</manifestRequests>
<playbackEndTime>2009-03-19 21:59:40Z</playbackEndTime>
<playbackStartTime>2009-03-19 21:48:19Z</playbackStartTime>
<renderedFramesPerSec>24</renderedFramesPerSec>
<requestHeadersEnabled>False</requestHeadersEnabled>
<seeks>2</seeks>
<smoothStreamingVersion>2.0</smoothStreamingVersion>
<startupTimeMs>125.5251</startupTimeMs>
<time>21:59:40</time>
<videoBandwidthAvg>6250217</videoBandwidthAvg>
<videoBandwidthMax>104207158</videoBandwidthMax>
<videoBandwidthMin>549495</videoBandwidthMin>
<videoBitrates>336000;636000;936000;1436000;1936000;2936000</videoBitrates>
<videoBufferChunks>2</videoBufferChunks>
<videoBufferChunksAvg>10</videoBufferChunksAvg>
<videoBufferChunksMax>11</videoBufferChunksMax>
<videoBufferSize>264564</videoBufferSize>
<videoBufferSizeAvg>6560685</videoBufferSizeAvg>
<videoBufferSizeMax>8300593</videoBufferSizeMax>
<videoBufferTime>10833334</videoBufferTime>
<videoBufferTimeAvg>203326340</videoBufferTimeAvg>
<videoBufferTimeMax>219583333</videoBufferTimeMax>
<videoChunks>262</videoChunks>
<videoCodec>WVC1</videoCodec>
<videoDownloadedDuration>5223750001</videoDownloadedDuration>
<videoDownloadedSize>166951680</videoDownloadedSize>
<videoDownloadErrors>0</videoDownloadErrors>
<videoPlaybackBitrateDurations>20000000;20000000;20000000;20000000;420000000;760000000;
93333334;20000000;20000000;20000000;20000000;1840000000;669583334;20000000;207916667;20000000;
93333334</videoPlaybackBitrateDurations>
<videoPlaybackBitrates>336000;636000;936000;1436000;2936000;1936000;2936000;336000;
636000;936000;1436000;2936000;1936000;336000;2936000;336000;2936000</videoPlaybackBitrates>
<videoResponseTimeAvg>101</videoResponseTimeAvg>
<videoResponseTimeMax>636</videoResponseTimeMax>
<videoResponseTimeMin>6</videoResponseTimeMin>
<videoSwitches>16</videoSwitches>
<x-duration>11</x-duration>
</XML>
まとめ
このチュートリアルでは、IIS 詳細ログ機能を確認し、クライアント データをログに記録する方法について説明しました。 クライアント ログとリアルタイム ログは、ログ ファイルのリアルタイム分析を可能にします。
また、IIS Smooth Streaming サンプル クライアントを使用して、スムーズ ストリーミング エクスペリエンスから意味のある情報を収集する方法についても学習しました。