作者:Vishal Sood
IIS 高级日志记录可以接受有关媒体和其他内容的客户端消耗量的信息。 客户端(例如 Microsoft Silverlight)可以发送有关其与媒体内容的交互的有用数据。 此信息构成了分析报告的基础,后者可以帮助企业改善其内容投放和投资回报率 (ROI)。
IIS 高级日志记录使用标准 HTTP POST 消息和 XML 格式接受客户端日志,从而使大多数客户端能够使用此功能。
要求
为了使客户端日志记录变得有用,客户端必须以预期的 XML 格式通过 HTTP POST 将消息发送到 IIS 高级日志记录。 可以执行此操作的客户端包括:
IIS 高级日志记录是 Internet Information Services (IIS) 7 的扩展,后者已不再可用。 我们建议使用 IIS 8.5 的增强型日志记录。
基于 Microsoft Silverlight 3 或更高版本的应用程序。 Silverlight 包括各种指标,它们可用于将所需 XML 格式的消息发布到已安装 IIS 高级日志记录的 Web 服务器。
IIS 平滑流式处理示例客户端。
启用客户端日志记录
默认情况下已禁用 IIS 高级日志记录中的客户端日志记录。 若要启用此功能,请执行以下操作:
在 IIS Manager 中,在要接收客户端日志的服务器的主页上,双击“高级日志记录”图标。
在“操作”窗格中,单击“启用客户端日志记录”。
使用示例日志记录客户端
IIS 平滑流式处理是 Microsoft 提供的自适应流式处理平台,它使比特率切换能够适应客户端不断变化的资源条件(网络吞吐量和 CPU)。 对于 IIS 高级日志记录,我们可以使用 IIS 平滑流式处理的示例日志记录客户端,该客户端提供丰富的数据收集功能。 本部分介绍如何设置示例日志记录客户端并配置 IIS 高级日志记录以记录客户端分析数据。
设置示例日志记录客户端
若要设置 IIS 平滑流式处理的示例日志记录客户端,请执行以下操作:
下载 IIS 平滑流式处理的示例日志记录客户端。
当系统提示提取示例时,请单击“是”。
当系统提示你接受许可协议时,请单击“是”。
当系统要求指定放置提取文件的位置时,请输入目录路径(例如,C:\LoggingSampleClient)。 如果系统提示创建目录,请单击“是”(仅当目录不存在时,才会显示此提示)。
导航到提取示例的目录时,你会看到名为 SampleClient.xap 的文件。 这是示例日志记录客户端。 可以将现有内容中的 .xap 文件替换为此文件(根据需要进行重命名,或更新引用该文件的 HTML)。
配置示例日志记录客户端
示例日志记录客户端唯一可能的配置是指定日志 URL,该 URL 确定客户端将向何处发送包含收集的统计信息的 HTTP POST 消息。 本部分介绍用于记录平滑流式处理客户端统计信息的两个配置选项。
客户端清单
客户端会读取客户端清单中的 LogUrl 元素,以确定应在其中发送 HTTP POST 的 URL。 多个 LogUrl 元素意味着 HTTP POST 将发送到列表中的所有 URL。 本文的“初始化参数”部分中指定的 URL 将添加到从清单获取的列表中。
用于将 LogUrl 添加到清单的语法为:
MajorVersion="1" MinorVersion="0" Duration="6537916781"> Type="video" Subtype="WVC1" Chunks="327" Url="QualityLevels({bitrate})/Fragments(video={start time})"> 初始化参数 还可以在实例化客户端时使用 PARAM 标记 initparams 来设置日志 URL。 语法如下所示(可以通过分号分隔列表指定多个 LogUrl): 注意 initparams 中的 LogUrl 的值必须是完整的 HTTP URL。 不允许使用相对 URL。 配置日志定义 为了使 IIS 高级日志记录能够利用客户端日志记录功能,必须在配置存储中配置相关字段和日志定义。 虽然可以使用 IIS Manager 中的高级日志记录用户界面执行此操作,但配置日志定义的更简单方法是使用脚本 AddClientConfig.js。 单击此处,以将脚本下载到压缩的文件夹 (ClientConfig_2.zip) 中。 脚本语法为: AddClientConfig.js [/f: 其中 fields.xml 是压缩文件夹中包含的 XML 文件,baseFileName 是要为日志定义提供的名称。 如果未指定 baseFileName,则 IIS 高级日志记录将使用默认日志定义名称:%COMPUTERNAME%-Client。 运行脚本后,请使用 IIS 重置命令行实用工具或通过在 IIS Manager 中重启 Web 服务器来重启 Web 服务器: 在“连接”窗格中,单击 Web 服务器名称。 在“操作” 窗格中,单击“重启” 。 运行 IIS 高级日志记录的 Web 服务器现在可以接收客户端日志。 示例日志记录客户端 - 记录事件 IIS 平滑流式处理的示例日志记录客户端将发布以下事件的日志消息: 播放。 指示播放请求的开始。 IIS 高级日志记录将开始计算统计信息。 Seek。 客户端跳转到新位置。 此事件不会使当前会话失效或创建新会话。 除以下统计信息外的所有其他统计信息将继续累积: c-starttime。 客户端使用 Seek 函数重置为新位置。 上面指定的此字段表示视频中开始播放的时间。 startupTime。 搜寻可能会导致客户端缓冲区再次被填充,因此我们会重置此值。 x-duration。 当 c-starttime 发生更改时,持续时间将重置为 0。 停止。 客户端渐进式下载和播放已停止。 但是,会话 (c-playerid GUID) 不会失效。 重新启动播放将再次从 0 偏移量开始,此时以下字段将继续累积: c-starttime。 重置为 0。 startupTime。 再次计算。 x-duration。 重置为 0。 Pause。 这类似于 Stop,但播放(恢复时)会从暂停的位置继续播放。 在这种情况下,除以下字段外的所有其他字段将继续累积: startupTime。 再次计算 Periodic。 以 30 秒间隔发布的日志数据的快照。 30 秒间隔是从以前的定期日志或从上述任何其他事件创建的另一个日志计算的。 不应错误地理解为此事件每 30 秒发生一次。 当发生另一个事件并发送日志时,下一个定期日志将在 30 秒后发送。 这可确保不会在 30 秒窗口中记录两个事件,除非在该间隔期间发生两个事件。 示例日志记录客户端 - 记录字段 IIS 高级日志记录可以记录以下日志记录字段的客户端数据。 字段 详细信息 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、轻型等。 audioResponseTimeAvg 获取音频区块的平均响应时间。 这是从请求到最后一个字节的时间。 audioResponseTimeMax 获取音频区块的最长响应时间。 这是从请求到最后一个字节的时间。 audioResponseTimeMin 获取音频区块的最短响应时间。 这是从请求到最后一个字节的时间。 videoResponseTimeAvg 获取视频区块的平均响应时间。 这是从请求到最后一个字节的时间。 videoResponseTimeMax 获取视频区块的最长响应时间。 这是从请求到最后一个字节的时间。 videoResponseTimeMin 获取视频区块的最短响应时间。 这是从请求到最后一个字节的时间。 smoothStreamingVersion 平滑流式处理客户端版本 audioDownloadErrors 缺少的音频区块总数(例如 404s)。 这是以分号分隔的 starttime/区块 ID 列表。 videoDownloadErrors 缺少的视频区块总数(例如 404s)。 这是以分号分隔的 starttime/区块 ID 列表 audioPlaybackBitrates 播放期间播放的音频比特率的有序列表。 这是以分号分隔的列表。 此列表按播放顺序排列。 可能存在重复的条目。 videoPlaybackBitrates 播放期间播放的视频比特率的有序列表。 这是以分号分隔的列表。 此列表按播放顺序排列。 可能存在重复的条目。 audioPlaybackBitrateDurations 播放期间播放的每个音频比特率的持续时间的有序列表。 这是以分号分隔的列表。 此列表按播放顺序排列。 可能存在重复的条目。 videoPlaybackBitrateDurations 按顺序播放期间播放的每个视频比特率的持续时间的有序列表。 这是以分号分隔的列表。 此列表按播放顺序排列。 可能存在重复的条目。 audioBandwidthAvg 已下载区块的平均音频比特率 videoBandwidthAvg 已下载区块的平均视频比特率 audioBufferSizeAvg 播放期间的平均音频缓冲区大小(以秒为单位) audioBufferSizeMax 播放期间的最大音频缓冲区大小(以秒为单位) videoBufferSizeAvg 播放期间的平均视频缓冲区大小(以秒为单位) videoBufferSizeMax 播放期间的最大视频缓冲区大小(以秒为单位) audioSwitches 音频比特率开关数 videoSwitches 视频比特率开关数 示例日志记录客户端 - 示例日志消息 下面是 IIS 平滑流式处理的示例日志记录客户端的示例日志: 93333334;20000000;20000000;20000000;20000000;1840000000;669583334;20000000;207916667;20000000; 93333334 636000;936000;1436000;2936000;1936000;336000;2936000;336000;2936000 总结 在本演练中,我们回顾了IIS 高级日志记录功能,并介绍了如何记录客户端数据。 通过客户端日志记录和实时日志记录,可以实时分析日志文件。 你还了解了如何使用 IIS 平滑流式处理示例客户端从平滑流式处理体验中收集有意义的信息。