

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 存取記錄
<a name="access-logging"></a>

MediaPackage 提供存取日誌，可擷取傳送至 MediaPackage 頻道或封裝群組之請求的詳細資訊。MediaPackage 會針對傳送至頻道輸入端點的請求產生*傳入存取日誌*，並針對傳送至頻道端點或封裝群組資產的請求產生*傳出存取日誌*。每個日誌包含收到請求的時間、用戶端的 IP 地址、延遲、請求路徑和伺服器回應等資訊。您可以使用這些存取日誌來分析服務效能和故障診斷問題。他們也可以協助您了解您的客戶群，並了解您的 MediaPackage 帳單。

 存取記錄是 MediaPackage 的選用功能，預設為停用。啟用存取記錄後，MediaPackage 會擷取日誌，並將其儲存至您在建立或管理存取記錄時指定的 CloudWatch 日誌群組。一般 CloudWatch Logs 會收取費用。

**Topics**
+ [將存取日誌發佈至 CloudWatch 的許可](#permissions)
+ [啟用存取記錄](#enable-access-logging)
+ [停用存取記錄](#disable-access-logging)
+ [存取日誌格式](#access-log-format)
+ [讀取存取日誌](#read-access-logs)

## 將存取日誌發佈至 CloudWatch 的許可
<a name="permissions"></a>

當您啟用存取記錄時，MediaPackage 會在您的帳戶中建立 IAM 服務連結角色 `AWSServiceRoleForMediaPackage` AWS 。此角色允許 MediaPackage 將存取日誌發佈至 CloudWatch。如需有關 MediaPackage 如何使用服務連結角色的資訊，請參閱 [使用 MediaPackage 的服務連結角色](using-service-linked-roles.md)。

## 啟用存取記錄
<a name="enable-access-logging"></a>

您可以使用 AWS 管理主控台 或 啟用存取日誌 AWS CLI。

**使用主控台啟用現有頻道的存取日誌**

1. 在 https：//[https://console.aws.amazon.com/mediapackage/](https://console.aws.amazon.com/mediapackage/) 開啟 MediaPackage 主控台。

1. 選取您的頻道。

1. 在**設定存取日誌**區段中，執行下列動作：

   1. 選擇**啟用輸入存取日誌**或**啟用輸出存取日誌**，或兩者。

   1. 您可以指定自訂 CloudWatch **Log 群組名稱**。如果保留空白，則會使用預設群組。

**使用主控台啟用現有封裝群組的存取日誌**

1. 開啟 MediaPackage 主控台，網址為 https：//[https://console.aws.amazon.com/mediapackage/](https://console.aws.amazon.com/mediapackage/)。

1. 從導覽區段中選取**包裝群組**。

1. 選擇您的封裝群組。

   1. 在導覽列中選取**編輯**。

   1. 在**存取記錄**區段中，選取**啟用輸出存取日誌**。

   1. 您可以指定自訂 CloudWatch **Log 群組名稱**。如果保留空白，則會使用預設群組。

1. 選擇 **Save changes** (儲存變更)。

**使用 啟用頻道的存取日誌 AWS CLI**  
使用 [configure-logs](https://docs.aws.amazon.com/cli/latest/reference/mediapackage/configure-logs.html) 命令搭配 `--ingress-access-logs` 參數、 `--egress-access-logs` 參數或兩者，以啟用存取記錄。您可以包含 `--ingress-access-logs`和 `--egress-access-logs` 參數的 CloudWatch 日誌群組名稱。如果您未指定日誌群組名稱，則會使用 MediaPackage 預設日誌群組。對於傳入日誌，預設日誌群組為 `/aws/MediaPackage/IngressAccessLogs`，而對於傳出日誌，預設日誌群組為 `/aws/MediaPackage/EgressAccessLogs`。

使用以下命令，使用預設日誌群組來啟用傳入和存取日誌：

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

此命令沒有傳回值。

**使用 啟用封裝群組的存取日誌 AWS CLI**  
使用 [configure-logs](https://docs.aws.amazon.com/cli/latest/reference/mediapackage-vod/configure-logs.html) 命令搭配 `--egress-access-logs` 參數來啟用存取記錄。您可以包含 `--egress-access-logs` 參數的 CloudWatch 日誌群組名稱。如果您未指定日誌群組名稱，則會使用 MediaPackage 預設日誌群組。對於傳入日誌，預設日誌群組為 `/aws/MediaPackage/IngressAccessLogs`，而對於傳出日誌，預設日誌群組為 `/aws/MediaPackage/EgressAccessLogs`。

使用以下命令，使用預設日誌群組啟用輸出存取日誌：

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

此命令沒有傳回值。

## 停用存取記錄
<a name="disable-access-logging"></a>

您可以隨時停用 MediaPackage 頻道或封裝群組的存取日誌。

**使用主控台停用存取記錄**

1. 在 https：//[https://console.aws.amazon.com/mediapackage/](https://console.aws.amazon.com/mediapackage/) 開啟 MediaPackage 主控台。

   選取您的頻道或套件群組。

1. 選擇**編輯**。

1. 在**存取記錄**區段中，取消選取**輸入存取記錄**、**輸出存取記錄**或兩者。

1. 選擇 **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
```

此命令沒有傳回值。

## 存取日誌格式
<a name="access-log-format"></a>

存取日誌檔是由一系列的 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 地址。

*processingTime*  
MediaPackage 處理請求所花費的秒數。此值是從收到您要求的最後位元組的時間開始，計算到回應傳送出第一組位元組的時間。

*statusCode*  
回應的數字 HTTP 狀態碼。

*receivedBytes*  
MediaPackage 伺服器在請求內文中接收的位元組數。

*sentBytes*  
回應內文中 MediaPackage 伺服器傳送的位元組數。此值通常與伺服器回應中包含的`Content-Length`標頭值相同。

*方法*  
用於請求的 HTTP 請求方法：DELETE、GET、HEAD、 OPTIONS、PATCH、POST 或 PUT。

*請求*  
請求 URL。

*protocol*  
用於請求的通訊協定類型，例如 HTTP。

*userAgent*  
使用者代理程式字串，可識別發出請求的用戶端，以雙引號括住。字串包含一或多個產品識別符、產品/版本。如果字串超過 8 KB，則會截斷。

*account*  
用於提出請求的帳戶的帳戶 AWS ID。

*channelId*  
接收請求的頻道 ID。

*channelArn*  
接收請求之頻道的 Amazon Resource Name (ARN)。

*domainName*  
用戶端在 TLS 交握期間提供的伺服器名稱指示網域，以雙引號括住。`-` 如果用戶端不支援 SNI 或網域不符合憑證，且預設憑證會呈現給用戶端，則此值會設為 。

*requestId*  
MediaPackage 產生的字串，可唯一識別每個請求。

*endpointId*  
接收請求的端點 ID。

*endpointArn*  
接收請求之端點的 Amazon Resource Name (ARN)。

日誌中欄位的順序可能有所不同。

## 讀取存取日誌
<a name="read-access-logs"></a>

MediaPackage 會將存取日誌寫入 Amazon CloudWatch Logs。一般 CloudWatch Logs 會收取費用。使用 CloudWatch Logs Insights 讀取存取日誌。如需有關如何使用 CloudWatch Logs Insights 的資訊，請參閱 [CloudWatch Logs 使用者指南中的使用 CloudWatch Logs Insights 分析日誌資料](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html)。 *AWS CloudWatch *

**注意**  
存取日誌可能需要幾分鐘的時間才會出現在 CloudWatch 中。如果您沒有看到日誌，請等待幾分鐘，然後再試一次。

### 範例
<a name="query-examples"></a>

 本節包含可用來讀取 MediaPackage 除錯日誌資料的範例查詢。

**Example 檢視頻道的 HTTP 狀態碼回應。**  
 使用此查詢，依頻道的 HTTP 狀態碼檢視回應。您可以使用它來檢視 HTTP 錯誤碼回應，以協助您疑難排解問題。  

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

**Example 取得頻道上每個端點的請求數量。**  

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

**Example 檢視每個資產的狀態碼。**  

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

**Example 取得隨著時間的封裝組態的 P99 回應時間**  

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