我想要使用 Amazon CloudWatch 主控台來建立訂閱篩選器,以便將我的 Amazon CloudWatch Logs 串流到 Amazon Kinesis。
簡短說明
使用訂閱篩選器將 CloudWatch 日誌以近乎即時的速度傳送到相同的帳戶,或跨帳戶 Kinesis 或 Amazon Kinesis Data Firehose 目的地。CloudWatch 日誌主控台支援目的地和設定組態。
如需如何使用篩選器模式語法來設定訂閱篩選器的相關資訊,請參閱篩選器和模式語法。
解決方法
相同帳戶或目前帳戶中 Kinesis 資料串流的訂閱組態
**注意:**CloudWatch 日誌的群組和 Kinesis 目的地的 AWS 區域必須相同。
建立訂閱之前,請先完成下列動作:
若要建立自訂 IAM 角色和角色政策,請完成下列步驟:
1. 使用具有管理員權限的使用者開啟 IAM 主控台。
2. 在導覽窗格中選擇政策。
3. 在內容窗格中,選擇建立政策。
4. 在 JSON 索引標籤中輸入下列角色權限政策文件。使用您自己的詳細資料取代 REGION、ACCOUNT_ID 和 STREAM_NAME:
{
"Statement": \[{
"Effect": "Allow",
"Action": "kinesis:PutRecord",
"Resource": "arn:aws:kinesis:REGION:ACCOUNT\_ID:stream/STREAM\_NAME"
}\]
}
5. 開啟 IAM 主控台。
6. 在導覽窗格中,選擇角色,然後選擇建立角色。
7. 選擇自訂信任政策角色類型。
8. 在自訂信任政策區段中,輸入或貼上角色的自訂信任政策。參閱下列範例信任政策:
{
"Statement": {
"Effect": "Allow",
"Principal": {
"Service": "logs.region.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringLike": {
"aws:SourceArn": "arn:aws:logs:REGION:ACCOUNT\_ID:\*"
}
}
}
}
9. 選擇下一步。
10. 選取您在步驟 4 中建立的自訂 IAM 政策。
11. 選擇下一步,然後選擇建立角色。
建立 Kinesis 串流和 IAM 角色後,建立訂閱篩選器:
1. 開啟 CloudWatch 主控台。
2. 選擇日誌群組。
3. 選擇動作、訂閱篩選器。
4. 若要設定目的地,請選擇建立 Kinesis 訂閱篩選器。
5. 選擇目前帳戶。
6. 從下拉式清單中選取 Kinesis 資料串流。
7. 選取您建立的 IAM 角色。
8. 選擇**分配方式:
透過日誌串流:**這驗證了下游取用者可以透過日誌串流彙總日誌事件,但效率可能較低。此方法也可能會產生更高的串流成本,因為它需要更多的碎片。
**隨機:**這會跨 Kinesis 串流碎片分配負載,但下游取用者無法透過日誌串流彙總日誌事件。
9. 設定日誌格式和篩選器:
選取日誌格式。對於由 Amazon VPC、CloudTrail 或 Lambda 發布的日誌,格式可以是 Amazon VPC Flow Logs、AWS CloudTrail 或 AWS Lambda。或者,您可以根據傳入的日誌事件選擇 JSON、空格分隔或其他。
在訂閱篩選器模式區段中定義篩選器模式。
輸入訂閱篩選器的名稱。
10. 使用現有的日誌事件資料驗證您的模式。
11. 驗證後,選擇開始串流。
12. (選擇性) 驗證日誌事件流程,以確認資料串流是否有效。
跨帳戶 Kinesis 資料串流目的地的組態
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請確定您使用的是最新版本的 AWS CLI。
您可以將 CloudWatch 日誌事件傳遞到不同 AWS 帳戶和區域中的 Kinesis 資料串流。若要這樣做,請設定與訂閱的跨帳戶日誌資料共用,並指定「區域」。
在下列範例中,us-east-1 區域中的 CloudWatch 日誌被傳送到 us-west-2 中另一個 AWS 使用者的 Kinesis 資料串流。日誌資料接收者的帳戶 ID 為 222222222222,而日誌資料傳送者的帳戶 ID 為 111111111111。
在接收者帳戶 222222222222 中建立目的地資料串流
使用 IAM 角色和信任策略在資料接收者帳戶中的 Kinesis 中建立目的地資料串流。
**在來源帳戶 111111111111 中建立訂閱篩選器 **
若要建立訂閱篩選器,請完成下列步驟:
1. 選取日誌群組。
2. 選擇動作、訂閱篩選器。
3. 若要選取目的地,請選擇建立,然後選取建立 Kinesis 訂閱篩選器。
4. 選擇其他帳戶。
5. 對於跨帳戶 Kinesis 或 Kinesis 資料 Firehose 目的地,請提供目的地 ARN。
6. 選擇分配方式:
**透過日誌串流:**這驗證了下游取用者可以透過日誌串流彙總日誌事件,但效率可能較低。此方法也可能會產生更高的串流成本,因為它需要更多的碎片。
**隨機:**這會跨 Kinesis 串流碎片分配負載,但下游取用者無法透過日誌串流彙總日誌事件。
7. 設定日誌格式和篩選器:
選取日誌格式。對於由 Amazon VPC、CloudTrail 或 Lambda 發布的日誌,格式可以是 Amazon VPC Flow Logs、CloudTrail 或 AWS Lambda。或者,您可以根據傳入的日誌事件選擇 JSON、空格分隔或其他。
在訂閱篩選器模式區段中定義篩選器模式。
輸入訂閱篩選器的名稱。
8. 使用現有的日誌事件資料驗證您的模式。
9. 驗證後,選擇開始串流。
10. (選擇性) 驗證流程日誌事件,以確認資料串流是否有效。
疑難排解
- 確定您的 Kinesis 串流處於作用中狀態。您可以在 Kinesis 主控台上檢視串流,或使用 DescribeStream API call。
- 確認 CloudWatch 日誌群組和 Kinesis 資料串流區域是否相同。
- 確保有一個 IAM 角色對 logs.yourregion.amazonaws.com 具有信任權限,並允許權限 kinesis:putrecords。
- 確認 IAM 政策中的區域和資源正確無誤。
- 確保在為 Kinesis 資料串流設定訂閱篩選器時沒有選取 Kinesis Firehose。
- 開始串流後,請檢查 訂閲篩選器指標,以確認篩選器模式有效且符合傳入日誌事件。檢閱下列指標: **ForwardedBytes:**轉送到訂閱目的地的壓縮位元組中的日誌事件數量。**ForwardedLogEvents:**轉送到訂閱目的地的日誌事件數量。
- 檢查將日誌事件串流到目的地時是否沒有錯誤。檢閱下列指標: **DeliveryErrors:**CloudWatch 日誌在將資料轉送到訂閱目的地時,收到錯誤的日誌事件數量。**DeliveryThrottling:**指出 CloudWatch 日誌在將資料轉送到訂閱目的地時,受到限制的日誌事件數量。
- 如果您有專用的 Kinesis 串流,請查看串流的指標以確認功能。
- 有關跨帳戶記錄的問題,請參閱疑難排解 CloudWatch 跨帳戶設定。