

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

# 監控 Amazon Kinesis Video Streams
<a name="monitoring"></a>

監控是維護 Amazon Kinesis Video Streams 和 AWS 解決方案可靠性、可用性和效能的重要部分。我們建議您從 AWS 解決方案的所有部分收集監控資料，以便在發生多點失敗時協助您偵錯。在您開始監控 Amazon Kinesis Video Streams 之前，建議您建立監控計畫，其中包含下列問題的答案：
+ 監控目標是什麼？
+ 要監控哪些資源？
+ 監控這些資源的頻率為何？
+ 要使用哪些監控工具？
+ 誰將執行監控任務？
+ 發生問題時應該通知誰？

在您定義監控目標並建立監控計畫後，下一步是在環境中建立正常 Amazon Kinesis Video Streams 效能的基準。您應該在各種時間和不同的載入條件下測量 Amazon Kinesis Video Streams 效能。當您監控 Amazon Kinesis Video Streams 時，請存放您收集的監控資料歷史記錄。您可以將目前的 Amazon Kinesis Video Streams 效能與此歷史資料進行比較，以協助您識別正常效能模式和效能異常，並設計方法來解決可能發生的問題。

**Topics**
+ [使用 CloudWatch 監控 Amazon Kinesis Video Streams 指標](monitoring-cloudwatch.md)
+ [使用 CloudWatch 監控 Amazon Kinesis Video Streams Edge 代理程式](monitoring-edge-cloudwatch.md)
+ [使用 記錄 Amazon Kinesis Video Streams API 呼叫 AWS CloudTrail](monitoring-cloudtrail.md)

# 使用 CloudWatch 監控 Amazon Kinesis Video Streams 指標
<a name="monitoring-cloudwatch"></a>

您可以使用 Amazon CloudWatch 監控 Kinesis 影片串流，該串流會收集來自 Amazon Kinesis Video Streams 的原始資料，並將其處理為可讀且幾近即時的指標。這些統計資料會記錄 15 個月，讓您可以存取歷史資訊，並更清楚 Web 應用程式或服務的效能。

在 [Amazon Kinesis Video Streams 主控台](https://console.aws.amazon.com//kinesisvideo/home/)中，您可以透過兩種方式檢視 Amazon Kinesis 影片串流的 CloudWatch 指標：
+ 在**儀表板**頁面中，選擇**目前區域帳戶層級指標**區段中的**影片串流**索引標籤。
+ 在影片串流詳細資訊頁面中，選擇 **Monitoring (監控)** 索引標籤。

Amazon Kinesis Video Streams 提供下列指標：


| 指標 | Description | 
| --- | --- | 
| ArchivedFragmentsConsumed.Media | 所有 APIs 消耗的片段媒體配額點數量。如需配額點概念的說明，請參閱 [片段中繼資料和片段媒體配額](limits.md#fragment_based_throttling)。單位：Count | 
| ArchivedFragmentsConsumed.Metadata | 所有 APIs 耗用的片段中繼資料配額點數量。如需配額點概念的說明，請參閱 [片段中繼資料和片段媒體配額](limits.md#fragment_based_throttling)。單位：Count | 
|  `PutMedia.Requests` |  指定串流的 `PutMedia` API 請求數量。 單位：Count  | 
|  `PutMedia.IncomingBytes` |  作為 串流一部分接收`PutMedia`的位元組數。 單位：位元組  | 
|  `PutMedia.IncomingFragments` |  作為 `PutMedia` 串流一部分接收的完整片段數量。 單位：Count  | 
|  `PutMedia.IncomingFrames` |  作為 `PutMedia` 串流一部分接收的完整影格數量。 單位：Count  | 
|  `PutMedia.ActiveConnections` |  服務主機的連線總數。 單位：Count  | 
|  `PutMedia.ConnectionErrors` |  建立串流`PutMedia`連線時發生錯誤。 單位：Count  | 
|  `PutMedia.FragmentIngestionLatency` |  Amazon Kinesis Video Streams 收到片段的第一個位元組和最後一個位元組之間的時間差異。 單位：毫秒  | 
|  `PutMedia.FragmentPersistLatency` |  接收和封存完整片段資料所花費的時間。 單位：Count  | 
|  `PutMedia.Latency` |  建立連線時，請求與來自 InletService 的 HTTP 回應之間的時間差異。 單位：Count  | 
|  `PutMedia.BufferingAckLatency` |  Amazon Kinesis Video Streams 收到新片段的第一個位元組與為片段傳送緩衝 ACK 之間的時間差異。 單位：毫秒  | 
|  `PutMedia.ReceivedAckLatency` |  Amazon Kinesis Video Streams 收到新片段的最後位元組與傳送片段的已接收 ACK 之間的時間差異。 單位：毫秒  | 
|  `PutMedia.PersistedAckLatency` |  Amazon Kinesis Video Streams 收到新片段的最後位元組與為片段傳送持久性 ACK 之間的時間差異。 單位：毫秒  | 
|  `PutMedia.ErrorAckCount` |  `PutMedia` 為串流執行 時傳送的錯誤 ACKs 數目。 單位：Count  | 
|  `PutMedia.Success` |  1 代表成功寫入的每個片段；0 代表每個失敗的片段。此指標的平均值表示已傳送多少完整的有效片段。 單位：Count  | 
|  `GetMedia.Requests` |  指定串流的 `GetMedia` API 請求數量。 單位：Count  | 
|  `GetMedia.OutgoingBytes` |  做為指定串流 `GetMedia` API 的一部分，從服務傳出的位元組總數。 單位：位元組  | 
|  `GetMedia.OutgoingFragments` |  `GetMedia` 為串流執行 時傳送的片段數量。 單位：Count  | 
|  `GetMedia.OutgoingFrames` |  在指定串流`GetMedia`上於 期間傳送的影格數。 單位：Count  | 
|  `GetMedia.MillisBehindNow` |  目前伺服器時間戳記與傳送之最後一個片段的伺服器時間戳記之間的時間差異。 單位：毫秒  | 
|  `GetMedia.ConnectionErrors` |  未成功建立的連線數。 單位：Count  | 
|  `GetMedia.Success` |  1 代表成功傳送的每個片段；0 代表每個失敗。平均值表示成功率。  失敗包括 400 個 (使用者) 錯誤和 500 個 (系統) 錯誤。如需啟用請求和回應摘要的詳細資訊，包括 AWS 請求 IDs，請參閱[請求/回應摘要記錄](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。  單位：Count  | 
|  `GetMediaForFragmentList.OutgoingBytes` |  做為指定串流 `GetMediaForFragmentList` API 的一部分，從服務傳出的位元組總數。 單位：位元組  | 
|  `GetMediaForFragmentList.OutgoingFragments` |  做為指定串流 `GetMediaForFragmentList` API 的一部分，從服務送出的片段總數。 單位：Count  | 
|  `GetMediaForFragmentList.OutgoingFrames` |  做為指定串流 `GetMediaForFragmentList` API 的一部分，從服務送出的影格總數。 單位：Count  | 
|  `GetMediaForFragmentList.Requests` |  指定串流的 `GetMediaForFragmentList` API 請求數量。 單位：Count  | 
|  `GetMediaForFragmentList.Success` |  1 代表成功傳送的每個片段；0 代表每個失敗。平均值表示成功率。  失敗包括 400 個 (使用者) 錯誤和 500 個 (系統) 錯誤。如需啟用請求和回應摘要的詳細資訊，包括 AWS 請求 IDs，請參閱[請求/回應摘要記錄](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。  單位：Count  | 
|  `ListFragments.Latency` |  `ListFragments` API 呼叫給定串流名稱的延遲。 單位：毫秒  | 
|  `ListFragments.Requests` |  指定串流的 `ListFragments` API 請求數量。 單位：Count  | 
|  `ListFragments.Success` |  1 代表每個成功的請求；0 代表每個失敗。平均值表示成功率。  失敗包括 400 個 (使用者) 錯誤和 500 個 (系統) 錯誤。如需啟用請求和回應摘要的詳細資訊，包括 AWS 請求 IDs，請參閱[請求/回應摘要記錄](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。  單位：Count  | 
|  `GetHLSStreamingSessionURL.Latency` |  `GetHLSStreamingSessionURL` API 呼叫給定串流名稱的延遲。 單位：毫秒  | 
|  `GetHLSStreamingSessionURL.Requests` |  指定串流的 `GetHLSStreamingSessionURL` API 請求數量。 單位：Count  | 
|  `GetHLSStreamingSessionURL.Success` |  1 代表每個成功的請求；0 代表每個失敗。平均值表示成功率。  失敗包括 400 個 (使用者) 錯誤和 500 個 (系統) 錯誤。如需啟用請求和回應摘要的詳細資訊，包括 AWS 請求 IDs，請參閱[請求/回應摘要記錄](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。  單位：Count  | 
|  `GetHLSMasterPlaylist.Latency` |  `GetHLSMasterPlaylist` API 呼叫指定串流名稱的延遲。 單位：毫秒  | 
|  `GetHLSMasterPlaylist.Requests` |  指定串流的 `GetHLSMasterPlaylist` API 請求數量。 單位：Count  | 
|  `GetHLSMasterPlaylist.Success` |  1 代表每個成功的請求；0 代表每個失敗。平均值表示成功率。  失敗包括 400 個 (使用者) 錯誤和 500 個 (系統) 錯誤。如需啟用請求和回應摘要的詳細資訊，包括 AWS 請求 IDs，請參閱[請求/回應摘要記錄](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。  單位：Count  | 
|  `GetHLSMediaPlaylist.Latency` |  `GetHLSMediaPlaylist` API 呼叫給定串流名稱的延遲。 單位：毫秒  | 
|  `GetHLSMediaPlaylist.Requests` |  指定串流的 `GetHLSMediaPlaylist` API 請求數量。 單位：Count  | 
|  `GetHLSMediaPlaylist.Success` |  1 代表每個成功的請求；0 代表每個失敗。平均值表示成功率。  失敗包括 400 個 (使用者) 錯誤和 500 個 (系統) 錯誤。如需啟用請求和回應摘要的詳細資訊，包括 AWS 請求 IDs，請參閱[請求/回應摘要記錄](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。  單位：Count  | 
|  `GetMP4InitFragment.Latency` |  `GetMP4InitFragment` API 呼叫給定串流名稱的延遲。 單位：毫秒  | 
|  `GetMP4InitFragment.Requests` |  指定串流的 `GetMP4InitFragment` API 請求數量。 單位：Count  | 
|  `GetMP4InitFragment.Success` |  1 代表每個成功的請求；0 代表每個失敗。平均值表示成功率。  失敗包括 400 個 (使用者) 錯誤和 500 個 (系統) 錯誤。如需啟用請求和回應摘要的詳細資訊，包括 AWS 請求 IDs，請參閱[請求/回應摘要記錄](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。  單位：Count  | 
|  `GetMP4MediaFragment.Latency` |  `GetMP4MediaFragment` API 呼叫給定串流名稱的延遲。 單位：毫秒  | 
|  `GetMP4MediaFragment.Requests` |  指定串流的 `GetMP4MediaFragment` API 請求數量。 單位：Count  | 
|  `GetMP4MediaFragment.Success` |  1 代表每個成功的請求；0 代表每個失敗。平均值表示成功率。  失敗包括 400 個 (使用者) 錯誤和 500 個 (系統) 錯誤。如需啟用請求和回應摘要的詳細資訊，包括 AWS 請求 IDs，請參閱[請求/回應摘要記錄](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。  單位：Count  | 
|  `GetMP4MediaFragment.OutgoingBytes` |  做為指定串流 `GetMP4MediaFragment` API 的一部分，從服務傳出的位元組總數。 單位：位元組  | 
|  `GetTSFragment.Latency` |  `GetTSFragment` API 呼叫給定串流名稱的延遲。 單位：毫秒  | 
|  `GetTSFragment.Requests` |  指定串流的 `GetTSFragment` API 請求數量。 單位：Count  | 
|  `GetTSFragment.Success` |  1 代表每個成功的請求；0 代表每個失敗。平均值表示成功率。  失敗包括 400 個 (使用者) 錯誤和 500 個 (系統) 錯誤。如需啟用請求和回應摘要的詳細資訊，包括 AWS 請求 IDs，請參閱[請求/回應摘要記錄](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。  單位：Count  | 
|  `GetTSFragment.OutgoingBytes` |  做為指定串流 `GetTSFragment` API 的一部分，從服務傳出的位元組總數。 單位：位元組  | 
|  `GetDASHStreamingSessionURL.Latency` |  `GetDASHStreamingSessionURL` API 呼叫給定串流名稱的延遲。 單位：毫秒  | 
|  `GetDASHStreamingSessionURL.Requests` |  指定串流的 `GetDASHStreamingSessionURL` API 請求數量。 單位：Count  | 
|  `GetDASHStreamingSessionURL.Success` |  1 代表每個成功的請求；0 代表每個失敗。平均值表示成功率。  失敗包括 400 個 (使用者) 錯誤和 500 個 (系統) 錯誤。如需啟用請求和回應摘要的詳細資訊，包括 AWS 請求 IDs，請參閱[請求/回應摘要記錄](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。  單位：Count  | 
|  `GetDASHManifest.Latency` |  `GetDASHManifest` API 呼叫給定串流名稱的延遲。 單位：毫秒  | 
|  `GetDASHManifest.Requests` |  指定串流的 `GetDASHManifest` API 請求數量。 單位：Count  | 
|  `GetDASHManifest.Success` |  1 代表每個成功的請求；0 代表每個失敗。平均值表示成功率。  失敗包括 400 個 (使用者) 錯誤和 500 個 (系統) 錯誤。如需啟用請求和回應摘要的詳細資訊，包括 AWS 請求 IDs，請參閱[請求/回應摘要記錄](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。  單位：Count  | 
|  `GetClip.Latency` |  指定視訊串流名稱的 GetClip API 呼叫延遲。 單位：毫秒  | 
|  `GetClip.Requests` |  特定影片串流的 GetClip API 請求數量。 單位：Count  | 
|  `GetClip.Success` |  1 代表每個成功的請求；0 代表每個失敗。平均值表示成功率。  失敗包括 400 個 (使用者) 錯誤和 500 個 (系統) 錯誤。如需啟用請求和回應摘要的詳細資訊，包括 AWS 請求 IDs，請參閱[請求/回應摘要記錄](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。 單位：Count  | 
|  `GetClip.OutgoingBytes` |  做為指定影片串流 GetClip API 的一部分，從服務傳出的位元組總數。 單位：位元組  | 

## CloudWatch 指標指引
<a name="monitoring-cloudwatch-guidance"></a>

CloudWatch 指標可協助尋找下列問題的答案：

**Topics**
+ [資料是否到達 Amazon Kinesis Video Streams 服務？](#monitoring-cloudwatch-guidance-incoming)
+ [為什麼 Amazon Kinesis Video Streams 服務未成功擷取資料？](#monitoring-cloudwatch-guidance-errors)
+ [為什麼無法以從生產者傳送的相同速率從 Amazon Kinesis Video Streams 服務讀取資料？](#monitoring-cloudwatch-guidance-rate)
+ [為什麼主控台沒有影片，或為何影片播放會發生延遲？](#monitoring-cloudwatch-guidance-novideo)
+ [讀取即時資料時延遲的原因為何，以及為何用戶端落後於串流前頭之後？](#monitoring-cloudwatch-guidance-delay)
+ [用戶端是否從 Kinesis 影片串流讀取資料，並以什麼速率讀取資料？](#monitoring-cloudwatch-guidance-isread)
+ [為什麼用戶端無法從 Kinesis 影片串流讀取資料？](#monitoring-cloudwatch-guidance-noread)

### 資料是否到達 Amazon Kinesis Video Streams 服務？
<a name="monitoring-cloudwatch-guidance-incoming"></a>

**相關指標：**
+ `PutMedia.IncomingBytes`
+ `PutMedia.IncomingFragments`
+ `PutMedia.IncomingFrames`

**動作項目：**
+ 如果這些指標下降，請檢查您的應用程式是否仍在將資料傳送至服務。
+ 檢查網路頻寬。如果您的網路頻寬不足，可能會降低服務接收資料的速率。

### 為什麼 Amazon Kinesis Video Streams 服務未成功擷取資料？
<a name="monitoring-cloudwatch-guidance-errors"></a>

**相關指標：**
+ `PutMedia.Requests`
+ `PutMedia.ConnectionErrors`
+ `PutMedia.Success`
+ `PutMedia.ErrorAckCount`

**動作項目：**
+ 如果 增加`PutMedia.ConnectionErrors`，請查看生產者用戶端收到的 HTTP 回應和錯誤代碼，以查看建立連線時發生哪些錯誤。
+ 如果 下降`PutMedia.Success`或增加`PutMedia.ErrorAckCount`，請查看服務傳送的 ack 回應中的 ack 錯誤碼，以了解資料擷取失敗的原因。如需詳細資訊，請參閱 [AckErrorCode.Values](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/kinesisvideo/model/AckErrorCode.Values.html)。

### 為什麼無法以從生產者傳送的相同速率從 Amazon Kinesis Video Streams 服務讀取資料？
<a name="monitoring-cloudwatch-guidance-rate"></a>

**相關指標：**
+ `PutMedia.FragmentIngestionLatency`
+ `PutMedia.IncomingBytes`

**動作項目：**
+ 如果這些指標下降，請檢查連線的網路頻寬。低頻寬連線可能導致資料以較低的速率傳送至服務。

### 為什麼主控台沒有影片，或為何影片播放會發生延遲？
<a name="monitoring-cloudwatch-guidance-novideo"></a>

**相關指標：**
+ `PutMedia.FragmentIngestionLatency`
+ `PutMedia.FragmentPersistLatency`
+ `PutMedia.Success`
+ `ListFragments.Latency`
+ `PutMedia.IncomingFragments`

**動作項目：**
+ 如果 增加`PutMedia.FragmentIngestionLatency`或減少`PutMedia.IncomingFragments`，請檢查網路頻寬以及資料是否仍在傳送中。
+ 如果 中有下降`PutMedia.Success`，請檢查 ack 錯誤代碼。如需詳細資訊，請參閱 [AckErrorCode.Values](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/kinesisvideo/model/AckErrorCode.Values.html)。
+ 如果 `PutMedia.FragmentPersistLatency`或 增加`ListFragments.Latency`，您很可能遇到服務問題。如果條件持續很長一段時間，請洽詢您的客戶服務聯絡人，了解您的服務是否有問題。

### 讀取即時資料時延遲的原因為何，以及為何用戶端落後於串流前頭之後？
<a name="monitoring-cloudwatch-guidance-delay"></a>

**相關指標：**
+ `GetMedia.MillisBehindNow`
+ `GetMedia.ConnectionErrors`
+ `GetMedia.Success`

**動作項目：**
+ 如果 增加`GetMedia.ConnectionErrors`，消費者可能會落後於讀取串流，因為經常嘗試重新連線至串流。查看 `GetMedia` 請求傳回的 HTTP 回應/錯誤代碼。
+ 如果 下降`GetMedia.Success`，這可能是因為服務無法將資料傳送給消費者，這會導致連線中斷，以及從消費者重新連線，從而導致消費者落後於串流前端。
+ 如果 增加`GetMedia.MillisBehindNow`，請查看您的頻寬限制，查看您是否因為頻寬較低而以較慢的速度接收資料。

### 用戶端是否從 Kinesis 影片串流讀取資料，並以什麼速率讀取資料？
<a name="monitoring-cloudwatch-guidance-isread"></a>

**相關指標：**
+ `GetMedia.OutgoingBytes`
+ `GetMedia.OutgoingFragments`
+ `GetMedia.OutgoingFrames`
+ `GetMediaForFragmentList.OutgoingBytes`
+ `GetMediaForFragmentList.OutgoingFragments`
+ `GetMediaForFragmentList.OutgoingFrames`

**動作項目：**
+ 這些指標指出即時和封存資料的讀取速率。

### 為什麼用戶端無法從 Kinesis 影片串流讀取資料？
<a name="monitoring-cloudwatch-guidance-noread"></a>

**相關指標：**
+ `GetMedia.ConnectionErrors`
+ `GetMedia.Success`
+ `GetMediaForFragmentList.Success`
+ `PutMedia.IncomingBytes`

**動作項目：**
+ 如果 增加`GetMedia.ConnectionErrors`，請查看`GetMedia`請求傳回的 HTTP 回應和錯誤代碼。如需詳細資訊，請參閱 [AckErrorCode.Values](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/kinesisvideo/model/AckErrorCode.Values.html)。
+ 如果您嘗試讀取最新或即時資料，請檢查串流`PutMedia.IncomingBytes`中是否有資料可供服務傳送給消費者。
+ 如果 `GetMedia.Success`或 下降`GetMediaForFragmentList.Success`，可能是因為服務無法將資料傳送給消費者。如果條件持續很長一段時間，請洽詢您的客戶服務聯絡人，了解您的服務是否有問題。

# 使用 CloudWatch 監控 Amazon Kinesis Video Streams Edge 代理程式
<a name="monitoring-edge-cloudwatch"></a>

您可以使用 Amazon CloudWatch 監控 Amazon Kinesis Video Streams Edge Agent，該代理程式會收集原始資料並將其處理為可讀且近乎即時的指標。 Amazon CloudWatch 這些統計資料會記錄 15 個月的期間。透過此歷史資訊，您可以更清楚 Web 應用程式或 Amazon Kinesis Video Streams Edge Agent 服務的效能。

若要檢視指標，請執行下列動作：

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 的 CloudWatch 主控台。

1. 在左側導覽的**指標**下，選取**所有指標**。

1. 選擇**瀏覽**索引標籤，然後選取 **EdgeRuntimeAgent** 自訂命名空間。

Amazon Kinesis Video Streams Edge Agent 會在命名空間 下發佈下列指標`EdgeRuntimeAgent`：

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/kinesisvideostreams/latest/dg/monitoring-edge-cloudwatch.html)

## Amazon Kinesis Video Streams Edge Agent 的 CloudWatch 指標指引
<a name="monitoring-edge-qa"></a>

CloudWatch 指標對於尋找下列問題的答案很有用：

**Topics**
+ [Amazon Kinesis Video Streams Edge 代理程式是否有足夠的空間可供記錄？](#monitoring-edge-space)
+ [Amazon Kinesis Video Streams Edge 代理程式是否有效？](#monitoring-edge-alive)
+ [是否有任何運作狀態不佳的任務？](#monitoring-edge-unhealthy)
+ [是否有任何任務需要外部介入？](#monitoring-edge-intervention)

### Amazon Kinesis Video Streams Edge 代理程式是否有足夠的空間可供記錄？
<a name="monitoring-edge-space"></a>

**相關指標：** `PercentageSpaceUsed`

**動作：**不需要任何動作。

### Amazon Kinesis Video Streams Edge 代理程式是否有效？
<a name="monitoring-edge-alive"></a>

**相關指標：** `Alive`

**動作：**如果您在任何時候停止接收此指標，這表示 Amazon Kinesis Video Streams Edge 代理程式遇到下列**一或多個**情況：
+ 應用程式執行期問題：記憶體或其他資源限制、錯誤等
+ 代理程式在關機、當機或終止時正在執行 AWS IoT 的裝置
+  AWS IoT 裝置沒有網路連線

### 是否有任何運作狀態不佳的任務？
<a name="monitoring-edge-unhealthy"></a>

**相關指標：**
+ `RecordJobs.UnhealthyJobCount`
+ `UploadJobs.UnhealthyJobCount`

**動作：**檢查日誌並尋找`FatalError`指標。
+ 如果`FatalError`**指標**存在，則遇到嚴重錯誤，您需要手動重新啟動任務。檢查日誌並修正問題，再使用 `StartEdgeConfigurationUpdate`手動重新啟動任務。
+ 如果`FatalError`**指標不存在**，則遇到暫時性 （非嚴重） 錯誤，Amazon Kinesis Video Streams Edge Agent 正在重試任務。

**注意**  
若要讓代理程式重新嘗試嚴重發生錯誤的任務，請使用 [StartEdgeConfigurationUpdate](API_StartEdgeConfigurationUpdate.md)。

### 是否有任何任務需要外部介入？
<a name="monitoring-edge-intervention"></a>

**相關指標：**
+ `PercentageSpaceUsed` – 如果超過特定值，則記錄任務會暫停，並只在有可用空間 （媒體停止保留時） 時繼續。您可以傳送具有更高版本的更新組態`MaxLocalMediaSizeInMB`，以立即更新任務。
+ `RecordJob.FatalError` / `UploadJob.FatalError` – 調查客服人員的日誌，並再次傳送組態，讓任務繼續。

**動作：**使用 組態進行 API 呼叫，以重新啟動遇到此問題的任務。

# 使用 記錄 Amazon Kinesis Video Streams API 呼叫 AWS CloudTrail
<a name="monitoring-cloudtrail"></a>

Amazon Kinesis Video Streams 可與 搭配使用 AWS CloudTrail，此服務提供由 Amazon Kinesis Video Streams AWS 服務 中的使用者、角色或 所採取動作的記錄。CloudTrail 會將 Amazon Kinesis Video Streams 的所有 API 呼叫擷取為事件。擷取的呼叫包括來自 Amazon Kinesis Video Streams 主控台的呼叫，以及對 Amazon Kinesis Video Streams API 操作的程式碼呼叫。如果您建立線索，則可以將 CloudTrail 事件持續交付至 Amazon S3 儲存貯體，包括 Amazon Kinesis Video Streams 的事件。即使您未設定追蹤，依然可以透過 CloudTrail 主控台中的**事件歷史記錄**檢視最新事件。您可以使用 CloudTrail 所收集的資訊，判斷對 Amazon Kinesis Video Streams 提出的請求、提出請求的 IP 地址、提出請求的人員、提出請求的時間，以及其他詳細資訊。

若要進一步了解 CloudTrail，包括如何設定及啟用，請參閱*《[AWS CloudTrail 使用者指南》](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)*。

## Amazon Kinesis Video Streams 和 CloudTrail
<a name="akvs-info-in-cloudtrail"></a>

當您建立 AWS 帳戶時，會在您的帳戶上啟用 CloudTrail。當 Amazon Kinesis Video Streams 中發生支援的事件活動時，該活動會與**事件歷史記錄**中的其他 AWS 服務事件一起記錄在 CloudTrail 事件中。您可以在 AWS 帳戶中檢視、搜尋和下載最近的事件。如需詳細資訊，請參閱《使用 CloudTrail 事件歷史記錄檢視事件》[https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)。

若要持續記錄您 AWS 帳戶中的事件，包括 Amazon Kinesis Video Streams 的事件，請建立追蹤。*線索*能讓 CloudTrail 將日誌檔案交付至 Amazon S3 儲存貯體。依預設，當您在主控台中建立追蹤時，該追蹤會套用至所有的 AWS 區域。線索會記錄 AWS 分割區中所有區域的事件，並將日誌檔案傳送到您指定的 Amazon S3 儲存貯體。此外，您可以設定其他 AWS 服務 以進一步分析和處理 CloudTrail 日誌中收集的事件資料。如需詳細資訊，請參閱下列內容：
+ [建立追蹤的概觀](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail 支援的服務和整合](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [設定 CloudTrail 的 Amazon SNS 通知](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [從多個區域接收 CloudTrail 日誌檔案](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html)，以及[從多個帳戶接收 CloudTrail 日誌檔案](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

Amazon Kinesis Video Streams 支援將下列動作記錄為 CloudTrail 日誌檔案中的事件：
+ [CreateStream](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_CreateStream.html)
+ [DeleteStream](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_DeleteStream.html)
+ [DescribeStream](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_DescribeStream.html)
+ [GetDataEndpoint](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_GetDataEndpoint.html)
+ [ListStreams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_ListStreams.html)
+ [ListTagsForStream](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_ListTagsForStream.html)
+ [TagStream](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_TagStream.html)
+ [UntagStream](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_UntagStream.html)
+ [UpdateDataRetention](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_UpdateDataRetention.html)
+ [UpdateStream](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_UpdateStream.html)

每一筆事件或日誌專案都會包含產生請求者的資訊。身分資訊可協助您判斷下列事項：
+ 該請求是否使用根或 使用者登入資料提出
+ 提出該請求時，是否使用了特定角色或聯合身分使用者的臨時安全憑證
+ 該請求是否由另一項 AWS 服務服務提出。

如需詳細資訊，請參閱 [CloudTrail userIdentity 元素](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)。

## 範例：Amazon Kinesis Video Streams 日誌檔案項目
<a name="understanding-service-name-entries"></a>

 追蹤是一種組態，能讓事件以日誌檔案的形式交付到您指定的 Amazon S3 儲存貯體。CloudTrail 日誌檔案包含一或多個日誌專案。一個事件為任何來源提出的單一請求，並包含請求動作、請求的日期和時間、請求參數等資訊。CloudTrail 日誌檔並非依公有 API 呼叫的堆疊追蹤排序，因此不會以任何特定順序出現。

下列範例顯示示範 [CreateStream](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_CreateStream.html) 動作的 CloudTrail 日誌項目。

```
{
    "Records": [
        {
            "eventVersion": "1.05",
            "userIdentity": {
                "type": "IAMUser",
                "principalId": "EX_PRINCIPAL_ID",
                "arn": "arn:aws:iam::123456789012:user/Alice",
                "accountId": "123456789012",
                "accessKeyId": "EXAMPLE_KEY_ID",
                "userName": "Alice"
            },
            "eventTime": "2018-05-25T00:16:31Z",
            "eventSource": " kinesisvideo.amazonaws.com",
            "eventName": "CreateStream",
            "awsRegion": "us-east-1",
            "sourceIPAddress": "127.0.0.1",
            "userAgent": "aws-sdk-java/unknown-version Linux/x.xx",
            "requestParameters": {
                "streamName": "VideoStream",
                "dataRetentionInHours": 2,	
                "mediaType": "mediaType",
                "kmsKeyId": "arn:aws:kms::us-east-1:123456789012:alias",
		"deviceName": "my-device"
      		},
            "responseElements": {
		"streamARN":arn:aws:kinesisvideo:us-east-1:123456789012:stream/VideoStream/12345"
             },
            "requestID": "db6c59f8-c757-11e3-bc3b-57923b443c1c",
            "eventID": "b7acfcd0-6ca9-4ee1-a3d7-c4e8d420d99b"
        },
        {
            "eventVersion": "1.05",
            "userIdentity": {
                "type": "IAMUser",
                "principalId": "EX_PRINCIPAL_ID",
                "arn": "arn:aws:iam::123456789012:user/Alice",
                "accountId": "123456789012",
                "accessKeyId": "EXAMPLE_KEY_ID",
                "userName": "Alice"
            },
            "eventTime": "2018-05-25:17:06Z",
            "eventSource": " kinesisvideo.amazonaws.com",
            "eventName": "DeleteStream",
            "awsRegion": "us-east-1",
            "sourceIPAddress": "127.0.0.1",
            "userAgent": "aws-sdk-java/unknown-version Linux/x.xx",
            "requestParameters": {
                "streamARN": "arn:aws:kinesisvideo:us-east-1:012345678910:stream/VideoStream/12345",
                "currentVersion": "keqrjeqkj9"
             },
            "responseElements": null,
            "requestID": "f0944d86-c757-11e3-b4ae-25654b1d3136",
            "eventID": "0b2f1396-88af-4561-b16f-398f8eaea596"
        },
        {
            "eventVersion": "1.05",
            "userIdentity": {
                "type": "IAMUser",
                "principalId": "EX_PRINCIPAL_ID",
                "arn": "arn:aws:iam::123456789012:user/Alice",
                "accountId": "123456789012",
                "accessKeyId": "EXAMPLE_KEY_ID",
                "userName": "Alice"
            },
            "eventTime": "2014-04-19T00:15:02Z",
            "eventSource": " kinesisvideo.amazonaws.com",
            "eventName": "DescribeStream",
            "awsRegion": "us-east-1",
            "sourceIPAddress": "127.0.0.1",
            "userAgent": "aws-sdk-java/unknown-version Linux/x.xx",
            "requestParameters": {
                "streamName": "VideoStream"
             },
            "responseElements": null,
            "requestID": "a68541ca-c757-11e3-901b-cbcfe5b3677a",
            "eventID": "22a5fb8f-4e61-4bee-a8ad-3b72046b4c4d"
        },
        {
            "eventVersion": "1.05",
            "userIdentity": {
                "type": "IAMUser",
                "principalId": "EX_PRINCIPAL_ID",
                "arn": "arn:aws:iam::123456789012:user/Alice",
                "accountId": "123456789012",
                "accessKeyId": "EXAMPLE_KEY_ID",
                "userName": "Alice"
            },
            "eventTime": "2014-04-19T00:15:03Z",
            "eventSource": "kinesisvideo.amazonaws.com",
            "eventName": "GetDataEndpoint",
            "awsRegion": "us-east-1",
            "sourceIPAddress": "127.0.0.1",
            "userAgent": "aws-sdk-java/unknown-version Linux/x.xx",
            "requestParameters": {
                "streamName": "VideoStream",
                "aPIName": "LIST_FRAGMENTS"
"
            },
            "responseElements": null,
            "requestID": "a6e6e9cd-c757-11e3-901b-cbcfe5b3677a",
            "eventID": "dcd2126f-c8d2-4186-b32a-192dd48d7e33"
        },
        {
            "eventVersion": "1.05",
            "userIdentity": {
                "type": "IAMUser",
                "principalId": "EX_PRINCIPAL_ID",
                "arn": "arn:aws:iam::123456789012:user/Alice",
                "accountId": "123456789012",
                "accessKeyId": "EXAMPLE_KEY_ID",
                "userName": "Alice"
            },
            "eventTime": "2018-05-25T00:16:56Z",
            "eventSource": "kinesisvideo.amazonaws.com",
            "eventName": "ListStreams",
            "awsRegion": "us-east-1",
            "sourceIPAddress": "127.0.0.1",
            "userAgent": "aws-sdk-java/unknown-version Linux/x.xx",
            "requestParameters": {
                "maxResults": 100, 
                "streamNameCondition": {"comparisonValue":"MyVideoStream" comparisonOperator":"BEGINS_WITH"}}
            }, 
            "responseElements": null,
            "requestID": "e9f9c8eb-c757-11e3-bf1d-6948db3cd570",
            "eventID": "77cf0d06-ce90-42da-9576-71986fec411f"
        }
    ]
}
```