Compartir a través de


Registro avanzado para IIS: registro de cliente

por Vishal Sood

Advanced Logging de IIS puede aceptar información sobre el consumo de contenido multimedia y de otro tipo. Los clientes (por ejemplo, Microsoft Silverlight) pueden enviar datos útiles sobre su interacción con el contenido multimedia. Esta información constituye la base de los informes analíticos, lo que puede ayudar a las empresas a mejorar su ubicación de contenido y a la rentabilidad de la inversión (ROI).

Advanced Logging de IIS acepta registros de cliente mediante mensajes HTTP POST estándar y formato XML, lo que permite a la mayoría de los clientes usar esta funcionalidad.

Requisitos

Para que el registro de cliente sea útil, un cliente debe enviar mensajes a Advanced Logging de IIS a través de HTTP POST en el formato XML esperado. Entre los clientes que pueden hacerlo se incluyen:

  • El Advanced Logging de IIS es una extensión para Internet Information Services (IIS) 7 que ya no está disponible. Se recomienda el Enhanced Logging para IIS 8.5.
  • Aplicaciones basadas en Microsoft Silverlight 3 o posterior. Silverlight incluye métricas que puede usar para publicar mensajes en el formato XML necesario en el servidor web que tiene Advanced Logging de IIS instalado.
  • El cliente de ejemplo de Smooth Streaming de IIS.

Habilitación de registro de clientes

El registro de clientes en Advanced Logging de IIS está deshabilitado de forma predeterminada. Para habilitar esta característica, haga lo siguiente:

  1. En el Administrador de IIS, en la página Inicio del servidor donde quiere recibir registros de cliente, haga doble clic en el icono Registro avanzado.
    Screenshot of the I I S Manager server home page. The Advanced Logging icon is selected.
  2. En el panel Acciones, haga clic en Habilitar registro de clientes.
    Screenshot of the Actions pane with Enable Client Logging selected.

Uso del registro de clientes de ejemplo

IIS Smooth Streaming es una plataforma de streaming adaptable de Microsoft que permite el cambio de velocidad de bits para dar cabida a las condiciones de recursos cambiantes de un cliente (rendimiento de red y CPU). En el caso de Advanced Logging de IIS, podemos usar un registro de clientes de ejemplo para IIS Smooth Streaming, que proporciona funcionalidades enriquecidas de recopilación de datos. En esta sección se describe cómo configurar el registro de clientes de ejemplo y configurar Advanced Logging de IIS para registrar los datos analíticos del lado cliente.

Configuración del registro de clientes de ejemplo

Para configurar el registro de clientes de ejemplo para IIS Smooth Streaming, haga lo siguiente:

  1. Descargue el registro de clientes de ejemplo para IIS Smooth Streaming.
  2. Cuando se le pregunte si extraer el ejemplo, haga clic en .
  3. Cuando se le pida que acepte el Contrato de licencia, haga clic en .
  4. Cuando se le pida que especifique una ubicación en la que colocar los archivos extraídos, escriba una ruta de acceso de directorio (por ejemplo, C:\LoggingSampleClient). Si se le pregunta si crear el directorio, haga clic en (este mensaje solo aparecerá si el directorio no existe).

Al navegar al directorio al que extrajo el ejemplo, verá un archivo denominado SampleClient.xap. Este es un registro de clientes de ejemplo. Puede reemplazar el archivo .xap en el contenido existente por este archivo (cambie el nombre si es necesario o actualice el código HTML que hace referencia a él).

Configuración del registro de clientes de ejemplo

La única configuración posible con el registro de clientes de ejemplo es especificar una dirección URL de registro, que determina dónde enviará el cliente mensajes HTTP POST que contienen las estadísticas recopiladas. En esta sección se revisan dos opciones de configuración para registrar estadísticas de cliente de Smooth Streaming.

Manifiesto del lado cliente

Los clientes leen el elemento LogUrl en un manifiesto del lado cliente para determinar la dirección URL donde se debe enviar el HTTP POST. Varios elementos LogUrl suponen que el HTTP POST se envía a todas las direcciones URL de la lista. Las direcciones URL especificadas en la sección Parámetros de inicialización de este artículo se agregan a la lista obtenida del manifiesto.

La sintaxis para agregar LogUrls al manifiesto es:

<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})">

Parámetros de inicialización

La dirección URL de registro también se puede establecer mediante la etiqueta PARAM initparams cuando se crea una instancia del cliente. La sintaxis es la siguiente (puede especificar varios LogUrls a través de una lista separada por punto y coma):

Nota:

Los valores de LogUrls en la etiqueta initparams deben ser direcciones URL HTTP completas. No se permite el uso de direcciones URL relativas.

<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>

Configuración de la definición de registro

Para Advanced Logging de IIS aprovechar las funcionalidades de registro de clientes, los campos relacionados y la definición de registro deben configurarse en el almacén de configuración. Aunque es posible usar la interfaz de usuario Registro avanzado en el Administrador de IIS para hacerlo, una manera más fácil de configurar la definición de registro es usar el script AddClientConfig.js. Haga clic aquí para descargar el script en una carpeta comprimida (ZIP) (ClientConfig_2.zip).

La sintaxis del script es:

AddClientConfig.js [/f:<fields.xml>] [/b:<baseFileName>]

donde fields.xml es el archivo XML incluido en la carpeta comprimida y baseFileName es el nombre que desea asignar a la definición de registro. Si no especifica un valor baseFileName, Advanced Logging de IIS usará el nombre de definición de registro predeterminado: %COMPUTERNAME%-Client.

Después de ejecutar el script, reinicie el servidor web mediante la utilidad de línea de comandos Restablecer IIS o reiniciando el servidor web en el Administrador de IIS:

  1. En el panel Conexiones, haga clic en el nombre del servidor web.
  2. En el panel Acciones, haga clic en Reiniciar.

El servidor web que ejecuta Advanced Logging de IIS ahora puede recibir registros del lado cliente.

Cliente de registro de ejemplo: eventos de registro

El cliente de registro de ejemplo para IIS Smooth Streaming publicará mensajes de registro para los siguientes eventos:

  • Ejecutar. Indica el inicio de una solicitud de reproducción. Advanced Logging de IIS comenzarán a calcular estadísticas.

  • Seek. El cliente salta a una nueva ubicación. Este evento no invalida la sesión actual ni crea una nueva. Todas las estadísticas que no sean las siguientes siguen siendo acumulativas:

    • c-starttime. El cliente se restablece a una nueva ubicación mediante la función Seek. Este campo tal y como se especificó anteriormente sugiere la hora en que se inició la reproducción en el vídeo.
    • startupTime. La búsqueda puede hacer que el búfer de cliente se rellene de nuevo, por lo que restablecemos este valor.
    • x-duration. La duración se restablece a 0 cuando c-starttime cambia.
  • Detener. Se detuvo la descarga progresiva del cliente y la reproducción. Sin embargo, la sesión (GUID de c-playerid) no está invalidada. Al reiniciar la reproducción, comenzará de nuevo desde 0 y, en ese momento, los siguientes campos seguirán siendo acumulativos:

    • c-starttime. Restablece a 0.
    • startupTime. Vuelve a calcular.
    • x-duration. Restablece a 0.
  • Pause. Es similar a Stop, excepto que la reproducción (cuando se reanuda) continúa desde la ubicación donde se ha pausado. En este caso, todos los campos excepto los siguientes siguen siendo acumulativos:

    • startupTime. Vuelve a calcular
  • Periodic. Una instantánea de los datos de registro que se publican en intervalos de 30 segundos. El intervalo de 30 segundos se calcula a partir de un registro periódico anterior o de otro registro creado a partir de cualquiera de los demás eventos anteriores. No debe interpretar mal que este evento se produce cada 30 segundos. Cuando se produce otro evento y se envía un registro, se envía el siguiente registro periódico después de transcurridos 30 segundos. Esto garantiza que no registre dos eventos en una ventana de 30 segundos a menos que se produzcan dos eventos durante ese intervalo.

Registro de clientes de ejemplo: campos de registro

Advanced Logging de IIS puede registrar datos de cliente para los siguientes campos de registro.

Campo Detalles
date Fecha en que se generó el registro.
time Fecha en que se generó el registro.
cs-url Dirección URL del manifiesto del elemento de contenido.
c-playerId GUID único generado para cada contenido de Smooth Streaming, o una lista de reproducción si el contenido forma parte de uno.
c-buffercount Número de veces que se requiere el rebuffering. Esta es la cantidad de veces que subdesbordamos básicamente . Esto se calcula en el nivel de marco.
c-playerVersion Versión de Silverlight
c-bytes Número de bytes recibidos por el cliente desde el servidor. El valor no incluye ninguna sobrecarga que agregue la pila de red. Sin embargo, HTTP puede introducir cierta sobrecarga. Por lo tanto, el mismo contenido transmitido mediante protocolos diferentes puede dar lugar a valores diferentes. Si los bytes c y sc-bytes (servidor) no son idénticos, se produjo la pérdida de paquetes.
audiocodec Códec de audio
videocodec Códec de vídeo
c-starttime Punto en el que el cliente comenzó a ver la secuencia (en segundos, sin fracción). Para el streaming en vivo verdadero, es necesario calcular el desplazamiento de tiempo mediante el tiempo de interbloqueo.
x-duration Duración (en segundos) de los datos representados por el cliente desde c-starttime.
c-os El sistema operativo del equipo cliente.
c-osversion Versión del sistema operativo del equipo cliente.
startupTimeMs Desde reproducir hasta representar el primer fotograma (en milisegundos).
c-playerState Reproducir, detener o pausar, etc.
bandwidthMax Ancho de banda percibido máximo
bandwidthMin Ancho de banda percibido mínimo
bandwidthAvg Promedio de ancho de banda percibido
droppedFramesPerSecond Fotogramas quitados por segundo (proporcionados por Silverlight)
renderedFramesPerSecond Fotogramas representados por segundo (proporcionados por Silverlight)
hasDRM El valor puede ser true, false o una enumeración como DRM, PlayReady, Lightweight, etc.
audioResponseTimeAvg Tiempo medio de respuesta para obtener fragmentos de audio. Esta es la hora de la solicitud al último byte.
audioResponseTimeMax Tiempo máximo de respuesta para obtener fragmentos de audio. Esta es la hora de la solicitud al último byte.
audioResponseTimeMin Tiempo mínimo de respuesta para obtener fragmentos de audio. Esta es la hora de la solicitud al último byte.
videoResponseTimeAvg Tiempo medio de respuesta para obtener fragmentos de vídeo. Esta es la hora de la solicitud al último byte.
videoResponseTimeMax Tiempo máximo de respuesta para obtener fragmentos de vídeo. Esta es la hora de la solicitud al último byte.
videoResponseTimeMin Tiempo mínimo de respuesta para obtener fragmentos de vídeo. Esta es la hora de la solicitud al último byte.
smoothStreamingVersion Versión del cliente de Smooth Streaming
audioDownloadErrors Número total de fragmentos de audio que faltan (por ejemplo, 404s). Se trata de una lista separada por punto y coma de identificadores de starttime/chunk.
videoDownloadErrors Número total de fragmentos de vídeo que faltan (por ejemplo, 404s). Se trata de una lista separada por punto y coma de identificadores de starttime/chunk
audioPlaybackBitrates Lista ordenada de las velocidades de bits de audio reproducidas durante la reproducción. Es una lista separada por punto y coma. Esta lista está en el orden de reproducción. Puede haber entradas duplicadas.
videoPlaybackBitrates Lista ordenada de las velocidades de bits de vídeo reproducidas durante la reproducción. Es una lista separada por punto y coma. Esta lista está en el orden de reproducción. Puede haber entradas duplicadas.
audioPlaybackBitrateDurations Una lista ordenada de diraciones de cada una de las velocidades de bits de audio reproducidas durante la reproducción. Es una lista separada por punto y coma. Esta lista está en el orden de reproducción. Puede haber entradas duplicadas.
videoPlaybackBitrateDurations Una lista ordenada de diraciones de cada una de las velocidades de bits de vídeo reproducidas durante la reproducción en orden. Es una lista separada por punto y coma. Esta lista está en el orden de reproducción. Puede haber entradas duplicadas.
audioBandwidthAvg Velocidad media de bits de audio para los fragmentos descargados
videoBandwidthAvg Velocidad media de bits de vídeo para los fragmentos descargados
audioBufferSizeAvg Tamaño medio del búfer de audio (en segundos) durante la reproducción
audioBufferSizeMax Tamaño máximo del búfer de audio (en segundos) durante la reproducción
videoBufferSizeAvg Tamaño medio del búfer de vídeo (en segundos) durante la reproducción
videoBufferSizeMax Tamaño máximo del búfer de vídeo (en segundos) durante la reproducción
audioSwitches Número de conmutadores de velocidad de bits de audio
videoSwitches Número de modificadores de velocidad de bits de vídeo

Cliente de registro de ejemplo: mensaje de registro de ejemplo

A continuación se muestra un registro de ejemplo del cliente de registro de ejemplo para 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>

Resumen

En este tutorial, revisamos la característica Advanced Logging de IIS y hemos aprendido a registrar datos de cliente. El registro de cliente y el registro en tiempo real pueden hacer posible el análisis en tiempo real de los archivos de registro.

También ha aprendido a recopilar información significativa de una experiencia de Smooth Streaming mediante el cliente de ejemplo de Smooth Streaming de IIS.