IIS 7.0 用 Advanced Logging - クライアント ログ

作成者 : Vishal Sood
発行日 : 2009 年 3 月 18 日 (作業者 : dmnelson(英語))
更新日 : 2009 年 5 月 12 日 (作業者 : dmnelson(英語))

インターネット インフォメーション サービス (IIS) 7.0 用 Advanced Logging では、ユーザー要求とクライアント データを非常に柔軟に記録できます。Advanced Logging 拡張機能は、IIS マネージャーのユーザー インターフェイスまたは IIS 7.0 構成システムと連携可能なツールで管理できます。

この記事の内容 :

  • 概要
  • 要件
  • クライアント ログの概要
  • クライアント ログの有効化
  • スムーズ ストリーミングのサンプル クライアントの使用
  • まとめ
  • リファレンス

概要

IIS 7.0 用 Advanced Logging には以下の機能が含まれており、顧客に適切なサービスを提供できるように支援します。

  • クライアント ログ。Advanced Logging は、クライアント側の利用指標を受け取る機能を IIS に組み込みます。これにより、顧客が好む、適切かつ重要なユーザー エンゲージメントの指標が提供されます。
  • 集中型のログ。Advanced Logging は、クライアント側の指標の収集および記録を行う中央ログ ファームを設定する機能を備えています。これにより、分散されたログの収集に必要な労力が削減されます。またログ収集が統合されたことで、より効率的に後処理を行うことができます。
  • ログのフィルタリング。Advanced Logging は、要求ごとに複数のログ (各ログには、ログの目的に関連するデータが含まれます) を作成することにより、特定の目的に関連する情報をフィルタリングする機能を備えています。たとえば、あるログにはサービスの品質 (QoS) に関するデータ、別のログには分析に関するデータが含まれます。現在のソリューションを使用して情報の抽出が必要な後処理は、すべて不要になります。
  • リアルタイム ログ。Advanced Logging は、プラットフォームを拡張してリアルタイム分析をサポートします。これにより、顧客にリアルタイムなレポートを提供したり、パートナーと連携して同様のことを行うことができます。
  • 豊富/柔軟なログ。Advanced Logging では、ユーザーにとって重要なことを決め付けることはしません。代わりに、十分な制御機能によって、ユーザーにとって重要なフィールドを指定したり、その他のフィールドを簡単に追加したり、またログ ロールオーバーや要求フィルターに関するポリシーを提供したりすることができます。このような機能は、現在存在しません。今は、管理コンソールによる簡単な構成で、HTTP 要求/応答ヘッダー、IIS サーバー変数、およびクライアント側のフィールドを記録できます。

要件

クライアント ログを有益にするためには、クライアントは、HTTP POST を介して必要な XML 形式で IIS Advanced Logging にメッセージを送信する必要があります。これを行えるのは次のようなクライアントです。

  • IIS スムーズ ストリーミングのサンプル クライアント。
  • Microsoft Silverlight Beta 3 に基づくアプリケーション。Silverlight Beta 3 には新しい指標が含まれており、それを使用して、IIS Advanced Logging がインストールされた Web サーバーに、必要な XML 形式でメッセージをポストすることができます。

クライアント ログの概要

IIS Advanced Logging が IIS 7.0 を実行している Web サーバーにインストールされると、Web サーバーは、メディアやその他のコンテンツのクライアントの利用に関する情報を受け取ることができます。クライアント (たとえば Silverlight) は、メディア コンテンツとのやりとりに関する有益なデータを送信できます。この情報は、企業がコンテンツの配置や投資収益率 (ROI) を改善するのに役立つ分析レポートの基礎になります。

IIS Advanced Logging は、標準 HTTP POST メッセージと XML 形式を使用してクライアント ログを受け取るため、大部分のクライアントがこの機能を利用できます。

クライアント ログの有効化

IIS Advanced Logging のクライアント ログは既定では無効になっています。この機能を有効にするには、次の手順を実行します。

  1. IIS マネージャーの、クライアント ログを受信するサーバー、サイト、その他のレベルのホーム ページで [Advanced Logging] アイコンをダブルクリックします。
    Ee175731.Advanced Logging for iis7 client fig1(ja-jp,TechNet.10).jpg
  2. [操作] ウィンドウで、[Enable Client Logging] をクリックします。
    Ee175731.Advanced Logging for iis7 client fig2(ja-jp,TechNet.10).jpg

スムーズ ストリーミングのサンプル クライアントの使用

IIS スムーズ ストリーミングは、Microsoft が提供するアダプティブ ストリーミング プラットフォームです。これにより、ビットレートの切り替えが可能になり、クライアントの変化するリソース条件 (ネットワーク スループットや CPU) に対応できます。IIS Advanced Logging では、豊富なデータ収集機能を備えたスムーズ ストリーミングのサンプル クライアントを使用できます。このセクションでは、スムーズ ストリーミングのサンプル クライアントの設定方法と、IIS Advanced Logging を構成してクライアント側の分析データを記録する方法について説明します。

サンプル クライアントの設定

スムーズ ストリーミングのサンプル クライアントを設定するには、次の手順を実行します。

  1. ここ (英語)をクリックして、サンプル クライアントが含まれる IIS スムーズ ストリーミングのサンプル コンテンツをダウンロードします。
  2. サンプルの解凍を求めるメッセージが表示されたら、[はい] をクリックします。
  3. 使用許諾契約書の条件への同意を求めるメッセージが表示されたら、[はい] をクリックします。
  4. 解凍ファイルを格納する場所の指定が求められたら、ディレクトリ パス (例 : C:\LoggingSampleClient) を入力します。ディレクトリの作成を求めるメッセージが表示されたら、[はい] をクリックします (このプロンプトは、ディレクトリが存在しない場合に限り表示されます)。

サンプル コンテンツを解凍したディレクトリに移動すると、SampleClient.xap という名前のファイルがあります。これは、サンプルのクライアント ログです。このクライアントの使用方法を確認するには、スムーズ ストリーミングのドキュメントを参照してください。または、既存のコンテンツにある .xap ファイルをこのファイルで置換してください (必要に応じて名前を変更するか、このファイルを参照する html を更新します)。

スムーズ ストリーミングのサンプル クライアントの構成

スムーズ ストリーミングのサンプル クライアントで唯一構成できるのは、ログ URL です。ログ URL では、収集された統計情報を含む HTTP POST メッセージをクライアントが送信する場所を決定します。このセクションでは、スムーズ ストリーミングのクライアント統計情報を記録する 2 つの構成オプションについて説明します。

クライアント側のマニフェスト

クライアントは、クライアント側のマニフェストにある LogUrl 要素を読み取り、HTTP POST を送信する URL を決定します。複数の LogUrl 要素がある場合、HTTP POST は一覧にあるすべての URL に送信されます。この記事の「初期化パラメーター」セクションで指定された URL は、マニフェストから取得された一覧に追加されます。

LogUrl をマニフェストに追加する構文は、次のとおりです。

<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 を指定できます)。

注意   initparams 内の LogUrl の値には、完全な 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" style="text-decoration: none;">
    <img src="http://go2.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/>
    </a>
</object>

ログ定義の構成

IIS Advanced Logging でクライアント ログ機能を利用するには、関連するフィールドとログ定義を構成ストアで構成する必要があります。ログ定義の構成は、IIS マネージャーの Advanced Logging ユーザー インターフェイスを使用するとできますが、より簡単な方法は、スクリプト AddClientConfig.js を使用する方法です。ここ (英語)をクリックして、圧縮 (zip 形式) フォルダー (ClientConfig_2.zip) のスクリプトをダウンロードします。

スクリプトの構文は次のとおりです。

AddClientConfig.js /f:<filename> </b:<baseFileName>

filename は、ダウンロード圧縮 (zip 形式) フォルダーに含まれている XML ファイルです。baseFileName は、ログ定義に付ける名前です。baseFileName を指定しない場合は、既定のログ定義名 (%COMPUTERNAME%-Client) が使用されます。

上記のスクリプトを実行したら、IIS リセット コマンドライン ユーティリティを使用するか、IIS マネージャーで Web サーバーを再起動して、Web サーバーを再起動します。

  1. [接続] ウィンドウで、Web サーバー名をクリックします。
  2. [操作] ウィンドウで、[再起動] をクリックします。

IIS Advanced Logging を実行している Web サーバーが、クライアント側のログを受信できるようになりました。

スムーズ ストリーミングのサンプル クライアント - ログ イベント

サンプル クライアントは、以下の各イベントのログ メッセージをポスト バックします。

  • Play。 再生要求の開始を示します。IIS Advanced Logging は統計情報の計算を開始します。

  • Seek。クライアントは新しい場所に移動します。このイベントでは、現在のセッションを無効にしたり新しいセッションを作成したりすることはありません。以下を除くすべての統計情報の累積が継続されます。

    • c-starttime。クライアントは、シーク機能を使用して新しい場所にリセットされます。このフィールドは、上述したように、再生が開始されたビデオ内の時間を示します。
    • startupTime。シークによりクライアント バッファーが再びいっぱいになる可能性があります。そのため、この値をリセットします。
    • x-duration。c-starttime が変更されると、期間が 0 にリセットされます。
  • Stop。クライアントの進行中のダウンロードと再生が停止されます。ただし、セッション (c-playerid GUID) は無効になりません。再生を再開すると再びゼロ オフセットから開始され、その時点で、以下のすべてのフィールドの累積が継続されます。

    • c-starttime。0 にリセットされます。
    • startupTime。 再度計算されます。
    • x-duration。0 にリセットされます。
  • Pause。これは Stop に似ていますが、再生は (再開時) 一時停止された場所から続行します。この場合は、以下を除くすべてのフィールドの累積が継続されます。

    • startupTime。 再度計算されます。
  • Periodic。30 秒間隔でポストされるログ データのスナップショット。30 秒間隔は、前回の定期的ログ、または上記の他のイベントから作成された別のログから計算されます。このイベントが 30 秒ごとに発生すると間違って解釈しないでください。別のイベントが発生しログが送信されると、次の定期的ログが 30 秒経過後に送信されます。これにより、30 秒の枠内で 2 つのイベントを記録しないようにします。ただし、この間隔で 2 つのイベントが発生する場合は除きます。

スムーズ ストリーミングのサンプル クライアント - ログ フィールド

IIS Advanced Logging は、以下のログ フィールドのクライアント データを記録できます。

フィールド

詳細

date

ログが生成された日付。

time

ログが生成された時刻。

cs-url

コンテンツ項目のマニフェスト URL。

c-playerId

スムーズ ストリーミングのコンテンツごとに生成された一意の GUID。または、コンテンツが一部分の場合は再生リスト。

c-buffercount

再バッファリングが要求された回数。これは基本的にアンダーフローの回数です。これはフレーム レベルで計算されます。

c-playerVersion

Silverlight バージョン。

c-bytes

クライアントがサーバーから受信したバイト数。値には、ネットワーク スタックによって追加されるオーバーヘッドは含まれません。ただし、HTTP によって一部のオーバーヘッドが取り込まれる可能性があります。したがって、同じコンテンツでも、異なるプロトコルを使用してストリームされると、異なる値になる場合があります。c-bytes と sc-bytes (サーバー側) が同一でない場合は、パケット ロスが発生します。

audiocodec

オーディオ コーデック。

videocodec

ビデオ コーデック。

c-starttime

クライアントがストリームの監視を開始したポイント (秒単位、分数は含まない)。実際のライブ ストリーミングでは、壁時計時刻を使用してタイム オフセットを計算する必要があります。

x-duration

クライアントがデータをレンダリングした c-starttime からの時間 (秒数)。

c-os

クライアント コンピューターのオペレーティング システム。

c-osversion

クライアント コンピューターのオペレーティング システム バージョン。

startupTimeMs

再生から最初のフレームをレンダリングするまでの時間 (ミリ秒)。

c-playerState

再生/停止/一時停止など。

bandwidthMax

認識された最大帯域幅。

bandwidthMin

認識された最小帯域幅。

bandwidthAvg

認識された平均帯域幅。

droppedFramesPerSecond

毎秒破棄されるフレーム (Silverlight が提供)。

renderedFramesPerSecond

毎秒レンダリングされるフレーム (Silverlight が提供)。

hasDRM

値は、true、false、または列挙値 (DRM、PlayReady、Lightweigh など) になります。

audioResponseTimeAvg

オーディオ チャンクを取得する平均応答時間。これは、要求から最後のバイトまでの時間です。

audioResponseTimeMax

オーディオ チャンクを取得する最大応答時間。これは、要求から最後のバイトまでの時間です。

audioResponseTimeMin

オーディオ チャンクを取得する最小応答時間。これは、要求から最後のバイトまでの時間です。

videoResponseTimeAvg

ビデオ チャンクを取得する平均応答時間。これは、要求から最後のバイトまでの時間です。

videoResponseTimeMax

ビデオ チャンクを取得する最大応答時間。これは、要求から最後のバイトまでの時間です。

videoResponseTimeMin

ビデオ チャンクを取得する最小応答時間。これは、要求から最後のバイトまでの時間です。

smoothStreamingVersion

スムーズ ストリーミングのクライアント バージョン。

audioDownloadErrors

失われたオーディオ チャンクの合計 (例 : 404s)。これは、セミコロンで区切られた開始時刻/チャンク ID の一覧です。

videoDownloadErrors

失われたビデオ チャンクの合計 (例 : 404s)。これは、セミコロンで区切られた開始時刻/チャンク ID の一覧です。

audioPlaybackBitrates

再生中に再生されたオーディオ ビット レートが順番に並べられた一覧。これはセミコロンで区切られた一覧です。この一覧は再生順です。重複エントリが存在する場合があります。

videoPlaybackBitrates

再生中に再生されたビデオ ビット レートが順番に並べられた一覧。これはセミコロンで区切られた一覧です。この一覧は再生順です。重複エントリが存在する場合があります。

audioPlaybackBitrateDurations

再生中に再生された各オーディオ ビット レートの持続期間が順番に並べられた一覧。これはセミコロンで区切られた一覧です。この一覧は再生順です。重複エントリが存在する場合があります。

videoPlaybackBitrateDurations

再生中に再生された各ビデオ ビット レートの持続期間が順番に並べられた一覧。これはセミコロンで区切られた一覧です。この一覧は再生順です。重複エントリが存在する場合があります。

audioBandwidthAvg

ダウンロードされたチャンクの平均オーディオ ビット レート。

videoBandwidthAvg

ダウンロードされたチャンクの平均ビデオ ビット レート。

audioBufferSizeAvg

再生中の平均オーディオ バッファー サイズ (秒数)。

audioBufferSizeMax

再生中の最大オーディオ バッファー サイズ (秒数)。

videoBufferSizeAvg

再生中の平均ビデオ バッファー サイズ (秒数)。

videoBufferSizeMax

再生中の最大ビデオ バッファー サイズ (秒数)。

audioSwitches

オーディオ ビット レートの切り替え回数。

videoSwitches

ビデオ ビット レートの切り替え回数。

 

スムーズ ストリーミングのサンプル クライアント - サンプル ログ メッセージ

以下は、スムーズ ストリーミングのサンプル クライアントのサンプル ログです。

<?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 Advanced Logging 機能を確認し、クライアント データを記録する方法を学びました。クライアント ログとリアルタイム ログにより、ログ ファイルのリアルタイム分析を可能にすることができます。

スムーズ ストリーミングのサンプル クライアントを使用して、IIS スムーズ ストリーミングのエクスペリエンスから重要な情報を収集する方法についても学びました。

リファレンス