访问日志记录 - Amazon Elemental MediaPackage

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

访问日志记录

MediaPackage Gage 提供了访问日志,该访问日志可捕获有关发送到 MediaPackage Cage 频道或打包组的请求的详细信息。MediaPackage Gage 生成入口访问日志用于发送到通道输入端点的请求,出口访问日志,以获取发送到您渠道的终端节点或打包组资产的请求。每个日志都包含信息 (例如,收到请求的时间、客户端的 IP 地址、延迟、请求路径和服务器响应)。您可以使用这些访问日志分析服务性能并解决问题。它们还可以帮助您了解您的客户群并了解您的 MediaPackage Cage 账单。

访问日志记录是 MediaPackage Gage 的一项可选功能,默认情况下已禁用此功能。启用访问日志记录后,MediaPackage 会捕获日志并将它们保存到您在创建或管理访问日志记录时指定的 CloudWatch 日志组。此时将按普通 CloudWatch Logs 收费。

将访问日志发布到 CloudWatch 权限

当您启用访问日志记录时,MediaPackage 会创建一个 IAM 服务链接的角色,AWSServiceRoleForMediaPackage,在您的AWSaccount. 此角色允许 MediaPackage 将访问日志发布到 CloudWatch。有关 MediaPackage Gage 如何使用服务相关角色的信息,请参阅将服务相关角色用于 MediaPackage

启用访问日志记录

您可以使用 AWS Management Console或 AWS CLI 启用访问日志。

使用控制台为现有频道启用访问日志

  1. 从打开 MediaPackage MediaPackage 控制台https://console.aws.amazon.com/mediapackage/

  2. 选择您的频道。

  3. 配置访问日志部分中,执行以下操作:

    1. 选择启用入口访问日志或者启用出口访问日志,或同时使用这两者。

    2. 您可以指定自定义 CloudWatch 控日志组名称。如果留空,则使用默认组。

使用控制台为现有打包组启用访问日志

  1. 从打开 MediaPackage MediaPackage 控制台https://console.aws.amazon.com/mediapackage/

  2. Select打包组从导航部分。

  3. 选择您的打包组。

    1. Select编辑在导航栏中。

    2. 访问日志记录部分中,选择启用出口访问日志

    3. 您可以指定自定义 CloudWatch 控日志组名称。如果留空,则使用默认组。

  4. 选择 Save Changes (保存更改)

使用为频道启用访问日志AWS CLI

使用配置日志命令与--ingress-access-logs参数、--egress-access-logs参数,或同时启用访问日志记录。您可以将 CloudWatch 日志组名称包含--ingress-access-logs--egress-access-logs参数。如果您未指定日志组名称,将使用 MediaPackage 默认日志组。对于入口日志,默认日志组为/aws/MediaPackage/IngressAccessLogs,而对于出口日志,默认日志组为/aws/MediaPackage/EgressAccessLogs

使用以下命令可以使用默认日志组同时启用入口日志和访问日志:

aws mediapackage configure-logs --id channel-name --ingress-access-logs {} --egress-access-logs {}

此命令没有返回值。

使用启用打包组的访问日志AWS CLI

使用配置日志命令与--egress-access-logs参数启用访问日志记录。您可以将 CloudWatch 日志组名称包含--egress-access-logs参数。如果您未指定日志组名称,将使用 MediaPackage 默认日志组。对于入口日志,默认日志组为/aws/MediaPackage/IngressAccessLogs,而对于出口日志,默认日志组为/aws/MediaPackage/EgressAccessLogs

使用以下命令可使用默认日志组启用出口访问日志:

aws mediapackage configure-logs --id package-name --egress-access-logs {}

此命令没有返回值。

禁用访问日志记录

您随时可为您的 MediaPackage Cage 频道或打包组禁用访问日志。

使用控制台禁用访问日志记录

  1. 从打开 MediaPackage MediaPackage 控制台https://console.aws.amazon.com/mediapackage/

    选择您的频道或软件包组。

  2. 选择 Edit

  3. 访问日志记录部分,取消选择入口访问日志记录出口访问日志记录,或同时使用这两者。

  4. 选择 Save Changes (保存更改)

使用禁用访问日志记录AWS CLI

使用configure-logs命令禁用访问日志记录。如果一个或多个访问日志参数没有使用configure-logs命令,则禁用相应的访问日志。例如,在以下命令中,将为通道启用出口访问日志,并禁用入口访问日志:

aws mediapackage configure-logs --id channel-name --egress-access-logs {}

此命令没有返回值。

使用禁用打包组的访问日志记录AWS CLI

使用configure-logs命令禁用访问日志记录。如果一个或多个访问日志参数没有使用configure-logs命令,则禁用相应的访问日志。例如,在以下命令configure-logs不包括--egress-access-logs以便禁用出口日志:

aws mediapackage configure-logs --id package-group-name

此命令没有返回值。

访问日志格式

访问日志文件由一系列 JSON 格式的日志记录组成,其中每个日志记录代表一个请求。日志中字段的顺序可能会变化。以下是示例通道出口访问日志:

{ "timestamp": "2020-07-13T18:59:56.293656Z", "clientIp": "192.0.2.0/24", "processingTime": 0.445, "statusCode": "200", "receivedBytes": 468, "sentBytes": 2587370, "method": "GET", "request": "https://aaabbbcccdddee.mediapackage.us-east-1.amazonaws.com:443/out/v1/75ee4f20e5df43e5821e5cb17ea19238/hls_7_145095.ts?m=1538005779", "protocol": "HTTP/1.1", "userAgent": "sabr/3.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Safari/528.17", "account": "111122223333", "channelId": "my_channel", "channelArn": "arn:aws:mediapackage:us-west-2:111122223333:channels/ExampleChannelID", "domainName": "aaabbbcccdddee.mediapackage.us-east-1.amazonaws.com", "requestId": "aaaAAA111bbbBBB222cccCCC333dddDDD", "endpointId": "my_endpoint", "endpointArn": "arn:aws:mediapackage:us-west-2:111122223333:origin_endpoints/ExampleEndpointID" }

以下列表按顺序介绍日志记录字段:

timestamp

收到请求的日期时间。该值是 ISO-8601 日期时间,基于为此请求提供服务的主机的系统时钟。

clientIp

请求客户端的 IP 地址。

处理时间

处理您的请求所 MediaPackage 费的秒数。该值计算从收到您的请求的最后一个字节到发出响应的第一个字节的时间。

statusCode

响应的数字 HTTP 状态代码。

已接收字节

MediaPackage 服务器接收的请求正文中的字节数。

已发送字节

MediaPackage 服务器发送的响应正文中的字节数。此值通常与Content-Length标头这就是随服务器响应一起提供。

方法

用于请求的 HTTP 请求方法:DELETE、GET、HEAD、OPTIONS、PATCH、PST、OPTIONS、

请求

请求 URL。

protocol

用于请求的协议类型,例如 HTTP。

userAgent

标识发出请求的客户端的用户代理字符串(用双引号括起来)。该字符串包含一个或多个产品标识符(产品/版本)。如果字符串长度超过 8 KB,则将被截断。

账户

用于发出请求的账户的 AWS 账户 ID 。

channelId

接收请求的频道的 ID。

channelArn

接收请求的渠道的 Amazon 资源名称 (ARN)。

domainName

TLS 握手期间客户端提供的服务器名称指示域(用双引号括起来)。此值设置为-如果客户端不支持 SNI 或此域与证书不匹配且将向客户端提供默认证书,则此值将提供给客户端。

requestId

由 MediaPackage Gage 生成的字符串,可用于唯一地标识每个请求。

EndpointId

接收请求的终端节点的 ID。

EndpointArn

接收请求的终端节点的 Amazon 资源名称 (ARN)。

日志中字段的顺序可能会发生变化。

阅读访问日志

媒体存储将访问日志写入 Amazon CloudWatch Logs。此时将按普通 CloudWatch Logs 收费。使用CloudWatch Logs (CloudWatch 日志)用于阅读访问日志的见解。有关如何使用 CloudWatch Logs 见解的信息,请参阅使用 CloudWatch Logs Insights 分析日志数据中的AWS CloudWatch Logs Logs 用户指南

注意

访问日志可能需要几分钟才能显示在 CloudWatch 中。如果您没有看到这些日志,请等待几分钟,然后重试。

Examples

本部分包含您可以用于读取 MediaPackage 调试日志数据的查询示例。

例 查看频道的 HTTP 状态代码响应。

使用此查询可以通过 HTTP 状态代码查看频道的响应。您可以使用它来查看 HTTP 错误代码响应,以帮助您解决问题。

fields @timestamp, @message | filter channelId like 'my-channel' | stats count() by statusCode

例 获取通道上每个端点的请求数。

fields @timestamp, @message | filter channelId like 'my-channel' | stats count() by endpointId

例 查看每个资产的状态代码。

fields @timestamp, @message | filter assetArnlike 'my-asset-id' | stats count() by statusCode

例 获取一段时间内打包配置的 P99 响应时间

fields @timestamp, @message | filter packagingConfigArn like 'my-dash-config' | stats pct(processingTime, 99) by bin(5m)