如何疑難排解 CloudWatch 中的跨帳戶記錄問題?

上次更新日期:2022 年 5 月 12 日

我想要疑難排解使用我的 Amazon CloudWatch 帳戶跨帳戶記錄的問題。該如何進行?

簡短描述

您可以將帳戶內的 CloudWatch Logs 以近乎即時的速度,傳送到另一個 AWS 帳戶。與另一個 AWS 帳戶共用您的日誌或接收其日誌,稱為跨帳戶記錄。您可以使用 Amazon Kinesis 或 Amazon Kinesis Data Firehose 串流來設定跨帳戶記錄。或者,您也可以使用訂閱篩選條件,將資料串流至 Amazon OpenSearch。CloudWatch 主控台支援所有這些選項。如需使用跨帳戶記錄的詳細資訊,請參閱下列文章:

解決方案

疑難排解作為目標的 Kinesis Data Stream/Kinesis Data Firehose 交付串流

1.    確定您的 Kinesis 串流或 Kinesis Data Firehose 處於作用中狀態。您可以在 Kinesis 主控台上檢視狀態,也可以使用 DescribeStreamDescribeDeliveryStream API 呼叫。

2.    檢查 CloudWatch 日誌群組區域和 Kinesis 資料串流區域是否相符。

3.    檢查您是否已建立具有正確信任許可的 AWS Identity and Access Management (IAM) 角色。IAM 角色必須允許您的 CloudWatch Logs 將日誌事件傳送到 Kinesis Data Streams 或 Kinesis Data Firehose。

在此範例中,日誌資料收件者帳戶的 AWS 帳戶 ID 為 999999999999。日誌資料寄件者 AWS 帳戶 ID 為 111111111111。請確定 Kinesis Data Streams 或 Kinesis Data Firehose 串流的收件者帳戶信任政策中允許帳戶 111111111111。以下是 Kinesis Data Streams 或 Kinesis Data Firehose 交付串流的 IAM 信任政策範例:

{
  "Statement": {
    "Effect": "Allow",
    "Principal": {
      "Service": "logs.region.amazonaws.com"
    },
    "Condition": {
      "StringLike": {
        "aws:SourceArn": [
          "arn:aws:logs:region:sourceAccountId:*",
          "arn:aws:logs:region:recipientAccountId:*"
        ]
      }
    },
    "Action": "sts:AssumeRole"
  }
}

此範例顯示 Kinesis Data Streams 的 IAM 角色政策:

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "kinesis:PutRecord",
      "Resource": "arn:aws:kinesis:region:999999999999:stream/RecipientStream"
    }
  ]
}
 
IAM role policy for kinesis Firehose stream.
 
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "firehose:*"
      ],
      "Resource": [
        "arn:aws:firehose:region:999999999999:*"
      ]
    }
  ]
}

4.    驗證 IAM 政策中的區域和資源 ARN 正確。

5.    確認您在設定用於 Kinesis Data Streams 的訂閲篩選條件時,沒有選取 Kinesis Firehose。

6.    開始串流後,檢查訂閱篩選條件的指標。確認篩選條件模式有效且符合傳入日誌事件。如需詳細資訊,請參閱使用 CloudWatch 指標進行監控。使用這些指標:

  • ForwardedBytes - 轉發到訂閲目的地的日誌事件磁碟區大小 (以壓縮位元組為單位)。
  • ForwardedLogEvents - 轉發到訂閲目的地的日誌事件數量。

7.    若要確認將日誌事件串流至目的地時沒有發生錯誤,請檢查這些指標是否有目的地錯誤。您可能會找到資料點,確認在將日誌事件串流至目的地時,日誌事件收到錯誤。

  • DeliveryErrors - CloudWatch Logs 在將資料轉發到訂閲目的地時,收到錯誤的日誌事件數量。
  • DeliveryThrottling - CloudWatch Logs 在將資料轉發到訂閲目的地時受到調節的日誌事件數量。

8.    如果您有專用串流可提供 Kinesis Data Streams 功能的洞察,請查看 Kinesis Data Streams 或 Kinesis Firehose 的指標。如需詳細資訊,請參閱使用 Amazon CloudWatch 監控 Amazon Kinesis Data Streams 服務使用 CloudWatch 指標監控 Kinesis Data Firehose

疑難排解作為目的地目標的 OpenSearch

1.    檢查 OpenSearch 網域允許公開存取還是 VPC 存取。如需建立網域的詳細資訊,請參閱建立和管理 Amazon OpenSearch Service 網域

2.    確定 AWS Lambda 函數具有 IAM 執行角色,該角色與 lambda.amazonaws.com 具有下列角色政策的信任關係:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "es:*"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:es:region:account-id:domain/target-domain-name/*"
    }
  ]
}

3.    如果目標 OpenSearch 網域使用 VPC 存取,請檢查該角色是否已連接 AWSLambdaVPCAccessExecutionRole 政策。


此文章是否有幫助?


您是否需要帳單或技術支援?