

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

# 將 AWS Elemental MediaTailor 日誌直接寫入 Amazon CloudWatch Logs
<a name="monitoring-cw-logs"></a>

MediaTailor 會產生日誌，其中包含工作階段活動和廣告決策伺服器互動的詳細資訊，並將其寫入 Amazon CloudWatch。日誌提供工作階段期間所發生活動的循序描述。

MediaTailor 也可以使用付費日誌，在日誌交付和磁碟區折扣定價方面獲得靈活性。如需付費日誌的相關資訊，請參閱 [使用 vended 日誌](vended-logs.md)。

**Topics**
+ [Amazon CloudWatch Logs 的許可](monitoring-permissions.md)
+ [AWS Elemental MediaTailor 頻道組件的「即執行」日誌](as-run-log.md)
+ [AWS Elemental MediaTailor Amazon CloudWatch Logs Insights 中的 ADS 日誌分析](monitor-cloudwatch-ads-logs.md)

# Amazon CloudWatch Logs 的許可
<a name="monitoring-permissions"></a>

使用 AWS Identity and Access Management (IAM) 建立可存取 Amazon CloudWatch AWS Elemental MediaTailor 的角色。您必須執行這些步驟，才能為您的帳戶發佈 CloudWatch Logs。CloudWatch 會自動發佈您帳戶的指標。

**允許 MediaTailor 存取 CloudWatch**

1. 前往 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在 IAM 主控台的導覽窗格中，選擇**角色**，然後選擇**建立角色**。

1. 選擇**另一個 AWS 帳戶**角色類型。

1. 針對**帳戶 ID**，輸入 AWS 您的帳戶 ID。

1. 選取 **Require external ID (需要外部 ID)**，然後輸入 **Midas**。此選項會自動新增條件到信任政策，讓服務只在請求包含正確的 `sts:ExternalId` 時才擔任該角色。

1. 選擇**下一步：許可**。

1. 新增指定此角色可以完成之動作的許可政策。選取以下其中一個選項，然後選擇 **Next: Review (下一步：檢閱)**：
   + **CloudWatchLogsFullAccess** 提供 Amazon CloudWatch Logs 的完整存取權
   + **CloudWatchFullAccess** 提供 Amazon CloudWatch 的完整存取權

1. 針對**角色名稱**，輸入 **MediaTailorLogger**，然後選擇**建立角色**。

1. 請在 **Roles (角色)** 頁面上，選擇您剛剛建立的角色。

1. 若要更新委託人，請編輯該信任關係：

   1. 在角色的 **Summary (摘要)** 頁面上，選擇 **Trust relationship (信任關係)** 標籤。

   1. 選擇**編輯信任關係**。

   1. 在政策文件中，將主體變更為 MediaTailor 服務。它應該如下所示：

      ```
      "Principal": {
         "Service": "mediatailor.amazonaws.com"
      },
      ```

      整個政策看起來應該如下所示：

   1. 選擇 **Update Trust Policy** (更新信任政策)。

# AWS Elemental MediaTailor 頻道組件的「即執行」日誌
<a name="as-run-log"></a>

CloudWatch 日誌群組中的*「即執行*」`MediaTailor/Channel/AsRunLog`日誌會在播放時顯示程式和廣告休息時間的相關資訊。

當您建立頻道時，依預設會停用「執行」日誌。使用 主控台或 AWS Command Line Interface (AWS CLI)，您可以啟用和停用帳戶中每個頻道的「執行」日誌狀態。

當您啟用 As Run 日誌時，MediaTailor 會自動建立服務連結角色，允許 MediaTailor 在您的 CloudWatch Logs 帳戶中寫入和管理 As Run 日誌。如需服務連結角色的詳細資訊，請參閱[使用 MediaTailor 的服務連結角色](using-service-linked-roles.md)。

**注意**  
As Run Log 目前僅支援預設程式。目前它不支援程式規則建立的 alternateMedia。這表示它目前不會產生 alternateMedia 的 As Run Log。

**Topics**
+ [啟用 As Run 日誌](enabling-as-run-log.md)
+ [停用 As Run 日誌](disabling-as-run-log.md)

# 啟用 As Run 日誌
<a name="enabling-as-run-log"></a>

若要啟用 As Run 日誌，請指定頻道名稱，並啟用該頻道的 *As Run *日誌類型。

------
#### [ Console ]

**在建立頻道時啟用 As Run 日誌**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/mediatailor/](https://console.aws.amazon.com/mediatailor/) 開啟 MediaTailor 主控台。

1. 在導覽窗格中，選擇**頻道組件** > **頻道**。

1. 在導覽列上，選擇**建立頻道**。

1. 在**設定頻道詳細資訊**、**設定輸出**和**存取控制**窗格中，視需要設定您的頻道。

1. 在**存取控制**窗格中，選擇**下一步**。

1. 在**記錄**窗格的**日誌類型**下，選取**啟用為執行**，以啟用為執行日誌。

**在更新頻道時啟用 As Run 日誌**
**注意**  
如果頻道目前正在執行中，您必須先停止該頻道，才能進行更新。停止頻道後，您可以選擇**動作** > **編輯**以開始更新頻道。

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/mediatailor/](https://console.aws.amazon.com/mediatailor/) 開啟 MediaTailor 主控台。

1. 在導覽窗格中，選擇**頻道組件** > **頻道**。

1. 選擇您要更新的頻道，以啟用執行中日誌。

1. 選擇 **Actions** (動作) > **Edit** (編輯)。

1. 在**設定頻道詳細資訊**、**設定輸出**和**存取控制**窗格中，視需要更新您的頻道組態。

1. 在**存取控制**窗格中，選擇**下一步**。

1. 在**記錄**窗格的**日誌類型**下，選取**啟用為執行**，以啟用為執行日誌。

**從記錄索引標籤啟用 As Run ****日誌**
**注意**  
如果頻道目前正在執行中，您必須使用**記錄**索引標籤，而不是選擇**動作** > **編輯**，以啟用「執行」日誌。

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/mediatailor/](https://console.aws.amazon.com/mediatailor/) 開啟 MediaTailor 主控台。

1. 在導覽窗格中，選擇**頻道組件** > **頻道**。

1. 選擇您要啟用 As Run 日誌的頻道。

1. 在頻道名稱下的導覽列中，選擇**記錄**。

1. 在**記錄** > **日誌類型**下，選取**執行時**以啟用執行中日誌。

------
#### [ AWS Command Line Interface (AWS CLI) ]

**啟用 As Run 日誌**

執行 [configure-logs-for-channel](https://docs.aws.amazon.com/cli/latest/reference/mediatailor/configure-logs-for-channel.html) 命令，並指定所需參數的適當值。

此範例已針對 Linux、macOS 或 Unix 格式化，並使用反斜線 (\$1) 行接續字元來改善可讀性。

```
$ aws mediatailor configure-logs-for-channel \
--channel-name MyChannel \
--log-types AS_RUN
```

此範例已針對 Microsoft Windows 進行格式化，並使用八進制 (^) 換行字元來改善可讀性。

```
C:\> aws mediatailor configure-logs-for-channel ^
--channel-name MyChannel ^
--log-types AS_RUN
```

其中：
+ `MyChannel` 是您擁有並想要啟用「執行」日誌的頻道名稱。

如果此命令成功執行，您會收到類似如下的輸出。

```
{
    "ChannelName": "MyChannel",
    "LogTypes": [
       "AS_RUN"
    ]
}
```

------

# 停用 As Run 日誌
<a name="disabling-as-run-log"></a>

若要停用已啟用該頻道的 As Run 日誌，請指定頻道名稱並停用該頻道的 *As Run *日誌類型。

------
#### [ Console ]

**在更新頻道時停用 As Run 日誌**
**注意**  
如果頻道目前正在執行，您必須先停止該頻道，才能更新頻道。停止頻道後，您可以選擇**動作** > **編輯**以開始更新頻道。

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/mediatailor/](https://console.aws.amazon.com/mediatailor/) 開啟 MediaTailor 主控台。

1. 在導覽窗格中，選擇**頻道組件** > **頻道**。

1. 選擇您要更新的頻道，以啟用其「執行」日誌。

1. 選擇 **Actions** (動作) > **Edit** (編輯)。

1. 在**設定頻道詳細資訊**、**設定輸出**和**存取控制**窗格中，視需要更新您的頻道組態。

1. 在**存取控制**窗格中，選擇**下一步**。

1. 在**記錄**窗格的**日誌類型**下，清除**啟用為執行**以停用即執行日誌。

**從記錄索引標籤停用 As Run ****日誌**
**注意**  
如果頻道目前正在執行，您必須使用**記錄**索引標籤，而不是選擇**動作** > **編輯**以停用「執行」日誌。

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/mediatailor/](https://console.aws.amazon.com/mediatailor/) 開啟 MediaTailor 主控台。

1. 在導覽窗格中，選擇**頻道組件** > **頻道**。

1. 選擇您要停用執行中日誌的頻道。

1. 在頻道名稱下的導覽列中，選擇**記錄**。

1. 在**記錄** > **日誌類型**下，清除**「執行**」以停用「執行」日誌。

------
#### [ AWS Command Line Interface (AWS CLI) ]

**停用 As Run 日誌**

執行 [configure-logs-for-channel](https://docs.aws.amazon.com/cli/latest/reference/mediatailor/configure-logs-for-channel.html) 命令，並指定所需參數的適當值。

此範例已針對 Linux、macOS 或 Unix 格式化，並使用反斜線 (\$1) 行接續字元來改善可讀性。

```
$ aws mediatailor configure-logs-for-channel \
--channel-name MyChannel \
--log-types
```

此範例已針對 Microsoft Windows 進行格式化，並使用八進制 (^) 換行字元來改善可讀性。

```
C:\> aws mediatailor configure-logs-for-channel ^
--channel-name MyChannel ^
--log-types
```

其中：
+ `MyChannel` 是您擁有並想要停用「執行」日誌的頻道名稱。

如果此命令成功執行，您會收到類似如下的輸出。

```
{
    "ChannelName": "MyChannel",
    "LogTypes": []
}
```

------

# AWS Elemental MediaTailor Amazon CloudWatch Logs Insights 中的 ADS 日誌分析
<a name="monitor-cloudwatch-ads-logs"></a>

您可以使用 AWS Elemental MediaTailor Amazon CloudWatch Logs Insights 檢視和查詢廣告決策伺服器 (ADS) 日誌。MediaTailor 會將事件日誌傳送至 CloudWatch，以取得正常處理和錯誤條件。這些日誌遵循 JSON 結構描述。透過 CloudWatch Logs Insights，您可以依時間範圍選取日誌，然後對它們執行查詢。

如需一般資訊，請參閱[使用 CloudWatch Logs 洞察分析日誌資料](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html)。

**注意**  
若要存取日誌，您需要存取 Amazon CloudWatch 的許可。如需說明，請參閱[Amazon CloudWatch Logs 的許可](monitoring-permissions.md)。

**使用 CloudWatch 主控台檢視和查詢 ADS 日誌**

1. 在 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 ​CloudWatch 主控台。

1. 在導覽窗格的 **Logs (日誌)** 下，選擇 **Insights (深入分析)**。

1. 在搜尋列中，輸入 **AdDec**，然後從下拉式清單中選取 `MediaTailor/AdDecisionServerInteractions`。

1. (選用) 調整您要研究的時段。

1. (選用) 在對話方塊中變更查詢。如需一般指引，請參閱 [CloudWatch Logs 洞察查詢語法](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html)。如需 MediaTailor ADS 的查詢範例，請參閱 [查詢 ADS 日誌](querying-the-ads-logs.md)。

1. 選擇 **Run query** (執行查詢)。查詢可能需要幾秒鐘的時間，在此期間會出現 **Cancel (取消)** 來取代 **Run query (執行查詢)**。

1. (選用) 若要將結果匯出為 CSV 檔案，請選擇 **Actions (動作)**，然後選擇 **Download query results (CSV) (下載查詢結果 (CSV))**。

**注意**  
主控台會限制在查詢結果中傳回和匯出的記錄數量，因此對於大量資料，請使用 API、 AWS Command Line Interface (AWS CLI) 或 SDK。

**Topics**
+ [查詢 ADS 日誌](querying-the-ads-logs.md)

# 查詢 ADS 日誌
<a name="querying-the-ads-logs"></a>

CloudWatch Logs Insights 提供一組豐富的選項來查詢您的日誌。如需查詢語法的詳細資訊，請參閱 [CloudWatch Logs Insights 查詢語法](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html)。本節提供常見查詢範例，以協助您開始使用 ADS 日誌查詢。針對目前時間範圍設定的日誌執行所有查詢。

以下查詢會從 ADS 日誌擷取所有資訊。

```
fields @timestamp, eventType, sessionId, requestId, @message
| sort sessionId, @timestamp asc
```

以下查詢會擷取對 ADS 的所有請求。此查詢顯示擷取 MediaTailor 日誌請求標頭內容的方法。

```
fields @timestamp, adsRequestUrl, requestHeaders.0.value as @userAgent, requestHeaders.1.value as @xForwardedFor, sessionId, requestId
| filter eventType = "MAKING_ADS_REQUEST"
| sort @timestamp asc
```

下列查詢會擷取為指定工作階段插入的 MediaTailor 廣告。

```
fields @timestamp, sessionId, requestId, @message
| filter eventType = "FILLED_AVAIL"
| sort @timestamp asc
```

下列查詢會擷取 MediaTailor 代表玩家呼叫的追蹤 URLs。

```
fields @timestamp, beaconInfo.trackingEvent, beaconInfo.beaconUri, beaconInfo.headers.0.value as @userAgent, beaconInfo.headers.1.value as @xForwardedFor, sessionId, requestId
| filter eventType = "BEACON_FIRED"
| sort @timestamp asc
```

以下查詢會依 `sessionId` 篩選結果，擷取特定播放工作階段的資訊。

```
fields @timestamp, eventType, sessionId, requestId, @message
| filter sessionId = "0aaf6507-c6f9-4884-bfe7-f2f841cb8195"
| sort @timestamp asc
```

以下查詢會依 `requestId` 篩選結果，擷取單一請求的資訊。

```
fields @timestamp, eventType, sessionId, requestId, @message
| filter requestId = "f5d3cf39-6258-4cf1-b3f6-a34ff8bf641d"
| sort @timestamp asc
```

以下查詢會擷取每個已記錄事件類型的日誌項目計數。

```
fields eventType
| stats count() as @eventCount by eventType
```

以下查詢會擷取所有已略過廣告之時段的時段 ID 和略過廣告清單。

```
fields avail.availId
| parse @message '"skippedAds":[*]' as @skippedAdsList
| filter ispresent(@skippedAdsList)
```