使用监控 Kinesis Data FirehoseCloudWatch日志 - Amazon Kinesis Data Firehose
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用监控 Kinesis Data FirehoseCloudWatch日志

Amazon Kinesis Data Firehose 与亚马逊集成CloudWatch日志,以便在数据转换或数据传输的 Lambda 调用失败时查看特定错误日志。当您创建传输流时,可以启用 Kinesis Data Firehose 错误日志记录。

如果在 Kinesis Data Firehose 控制台中启用 Kinesis Data Firehose 错误日志记录时,系统会代表您为传输流创建日志组和相应的日志流。日志组名称的格式为 /aws/kinesisfirehose/delivery-stream-name,其中,delivery-stream-name 是相应的传输流的名称。日志流名称为S3 交付RedshiftDelivery,或者AmazonOpenSearchService已送达,具体取决于交货目的地。用于数据转换的 Lambda 调用错误还会记录到用于数据传输错误的日志流。

例如,如果您创建传输流”MyStream“以 Amazon Redshift 作为目标并启用 Kinesis Data Firehose 错误日志记录时,系统会代表您创建以下各项:一个名为的日志组。aws/kinesisfirehose/MyStream和两个名为的日志流S3 交付RedshiftDelivery. 在该示例中,日志流 S3Delivery 用于记录与传输到中间 S3 存储桶失败有关的错误。这些区域有:RedshiftDelivery日志流用于记录与 Lambda 调用失败和传输到 Amazon Redshift 集群失败有关的错误。

你可以通过启用 Kinesis Data Firehose 错误日志记录Amazon CLI、API 或Amazon CloudFormation使用CloudWatchLoggingOptions配置。为此,请提前创建日志组和日志流。我们建议您将该日志组和日志流专门用于 Kinesis Data Firehose 错误记录。此外,还应确保关联的 IAM 策略具有"logs:putLogEvents"权限。有关更多信息,请参阅 使用 Amazon Kinesis Data Firehose 控制访问权限

注意,Kinesis Data Firehose 不保证将所有传输错误日志都发送到。CloudWatch日志。在传输故障率很高的情况下,Kinesis Data Firehose 先对传输错误日志进行采样,然后将它们发送到CloudWatch日志。

对于发送到的错误日志,需要象征性的费用。CloudWatch日志。有关更多信息,请参阅 Amazon CloudWatch 定价

数据传输错误

下面是针对每个 Kinesis Data Firehose 目标的数据传输错误代码和消息的列表。每个错误消息还描述了修复问题所应采取的适当操作。

Amazon S3 数据传输错误

Kinesis Data Firehose 可以向发送以下与 Amazon S3 相关的错误CloudWatch日志。

错误代码 错误消息和信息
S3.KMS.NotFoundException

"The provided Amazon KMS key was not found. If you are using what you believe to be a valid Amazon KMS key with the correct role, check if there is a problem with the account to which the Amazon KMS key is attached."

S3.KMS.RequestLimitExceeded

"The KMS request per second limit was exceeded while attempting to encrypt S3 objects. Increase the request per second limit."

有关更多信息,请参阅 。限制中的Amazon Key Management Service开发人员指南.

S3.AccessDenied "Access was denied. Ensure the trust policy the the the the IAM 角色的信任策略允许 Kinesis Data Firehose 担任该角色,并且访问策略允许访问 S3 存储桶。”
S3.AccountProblem “你的存在问题Amazon帐户,以防止操作成功完成。联系人AmazonSupport。
S3.AllAccessDisabled "Access to the account provided has been disabled. 联系人AmazonSupport。
S3.InvalidPayer "Access to the account provided has been disabled. 联系人AmazonSupport。
S3.NotSignedUp “该账户尚未注册 Amazon S3。Sign the account up or use a different account."
S3.NoSuchBucket "The specified bucket does not exist. Create the bucket or use a different bucket that does exist."
S3.MethodNotAllowed "The specified method is not allowed against this resource. 修改存储桶策略,允许正确的 Amazon S3 操作权限。”
InternalError "An internal error occurred while attempting to deliver data. Delivery it the retried; if the error 仍然存在, then toAmazon为了解决。

Amazon Redshift 数据传输错误

Kinesis Data Firehose 可以向发送以下与 Amazon Redshift 相关的错误。CloudWatch日志。

错误代码 错误消息和信息
Redshift.TableNotFound

"The table to which to load data was not found. Ensure that the specified table exists."

Amazon Redshift 中的目标表未找到应从 S3 将数据复制到的目标表。注意,Kinesis Data Firehose 不存在并不会创建 Amazon Redshift 表。

Redshift.SyntaxError "The COPY command contains a syntax error. Retry the command."
Redshift.AuthenticationFailed "The provided user name and password failed authentication. Provide a valid user name and password."
Redshift.AccessDenied "Access was denied. 确保提供的 IAM 角色的信任策略允许 Kinesis Data Firehose 代入该角色。”
Redshift.S3BucketAccessDenied "The COPY command was unable to access the S3 bucket. Make sure the IAM 角色的访问策略允许访问 S3 存储桶。”
Redshift.DataLoadFailed "Loading data into the table failed. Check STL_LOAD_ERRORS system table for details."
Redshift.ColumnNotFound "A column in the COPY command does not exist in the table. Specify a valid column name."
Redshift.DatabaseNotFound “找不到在 Amazon Redshift 目标配置或 JDBC URL 中指定的数据库。Specify a valid database name."
Redshift.IncorrectCopyOptions

"Conflicting or redundant COPY options were provided. Some options are not compatible in certain combinations. Check the COPY command reference for more info."

有关更多信息,请参阅 。Amazon Redshift COPY 命令中的Amazon Redshift 数据库开发人员指南.

Redshift.MissingColumn "There is a column defined in the table schema as NOT NULL without a DEFAULT value and not included in the column list. 不包括此列,确保加载的数据始终为此列提供值,或向 Amazon Redshift 模式添加该表的默认值。”
Redshift.ConnectionFailed “连接到指定的 Amazon Redshift 集群失败。确保安全性设置允许 Kinesis Data Firehose 连接、Amazon Redshift 目标配置或 JDBC URL 中指定的集群或数据库正确无误,以及集群可用。”
Redshift.ColumnMismatch "The number of jsonpaths in the COPY command and the number of columns in the destination table should match. Retry the command."
Redshift.IncorrectOrMissingRegion “Amazon Redshift to to use the 错误的区域终端点访问S3 bucket. 要么在 COPY 命令选项中指定正确的区域值,或确保 S3 存储桶与 Amazon Redshift 数据库位于同一个区域。”
Redshift.IncorrectJsonPathsFile "The provided jsonpaths file is not in a supported JSON format. Retry the command."
Redshift.MissingS3File “Amazon Redshift to in S3 bucket in S3 bucket. Check the S3 bucket policies to remove any automatic deletion of S3 files."
Redshift.InsufficientPrivilege "The user does not have permissions to load data into the table. 检查 Amazon Redshift 用户权限以获取 INSERT 权限。”
Redshift.ReadOnlyCluster "The query cannot be executed because the system is in resize mode. Try the query again later."
Redshift.DiskFull "Data could not be loaded because the disk is full. ”
InternalError "An internal error occurred while attempting to deliver data. Delivery it the retried; if the error 仍然存在, then toAmazon为了解决。

Splunk 数据传输错误

Kinesis Data Firehose 可以向发送以下与 Splunk 相关的错误CloudWatch日志。

错误代码 错误消息和信息
Splunk.ProxyWithoutStickySessions

“If if 您具有Kinesis Data Firehose 和 HEC node 之间的代理(ELB 或其他代理),则必须启用粘性会话以支持 HEC ACKs。”

Splunk.DisabledToken "The HEC token is disabled. Enable the token to allow data delivery to Splunk."
Splunk.InvalidToken "The HEC token is invalid. Update Kinesis Data Firehose 使用有效的 HEC token.”
Splunk.InvalidDataFormat "The data is not formatted correctly. To see how to properly format data for Raw or Event HEC endpoints, see Splunk Event Data."
Splunk.InvalidIndex "The HEC token or input is configured with an invalid index. Check your index configuration and try again."
Splunk.ServerError "Data delivery to Splunk failed due to a server error from the HEC node. Kinesis Data Firehose 将重试发送数据,如果 Kinesis Data Firehose 的重试持续时间大于 0。If all retries fail, Kinesis Data Firehose 会将数据备份到 Amazon S3。”
Splunk.DisabledAck "Indexer acknowledgement is disabled for the HEC token. Enable indexer acknowledgement and try again. For more info, see Enable indexer acknowledgement."
Splunk.AckTimeout "Did not receive an acknowledgement from HEC before the HEC acknowledgement timeout expired. Despite the acknowledgement timeout, it's possible the data was indexed successfully in Splunk. Kinesis Data Firehose 将备份到 Amazon S3 Data S3 数据,而且确认超时已过期。”
Splunk.MaxRetriesFailed

"Failed to deliver data to Splunk or to receive acknowledgment. Check your HEC health and try again."

Splunk.ConnectionTimeout "The connection to Splunk timed out. This might be a transient error and the request will be retried. Kinesis Data Firehose 会将数据备份到 Amazon S3,如果所有重试失败,则会将数据备份到 Amazon S3。”
Splunk.InvalidEndpoint "Could not connect to the HEC endpoint. Make 确保HEC 端点URL is valid and the Kinesis data Firehose.”
Splunk.ConnectionClosed "Unable to send data to Splunk due to a connection failure. This might be a transient error. Inreesis Data Firehose 配置中的重试duration in Kinesis Data Firehose 配置可以防止此类瞬时失败。”
Splunk.SSLUnverified "Could not connect to the HEC endpoint. 主机与对等项提供的证书不匹配。请确保证书和主机是有效的。
Splunk.SSLHandshake "Could not connect to the HEC endpoint. 请确保证书和主机是有效的。

HTTPS 端点数据传输错误

Kinesis Data Firehose 可以向发送以下与 HTTP 终端节点相关的错误。CloudWatch日志。如果这些错误都不与您遇到的问题匹配,则默认错误如下:"An internal error occurred while attempting to deliver data. Delivery it the retried; if the error 仍然存在, then toAmazon为解决方案。”

错误代码 错误消息和信息
HttpEndpoint.RequestTimeout

在收到回复之前,送达已超时,将重试。如果错误仍然存在,请联系AmazonFirehose 服务团队。

HttpEndpoint.ResponseTooLarge “从终端节点收到的响应太大。要解决此问题,请联系终端节点的拥有者。”
HttpEndpoint.InvalidResponseFromDestination “从指定终端节点收到的响应无效。要解决此问题,请联系终端节点的拥有者。”
HttpEndpoint.DestinationException “从终端目标收到了以下响应。”
HttpEndpoint.ConnectionFailed “Upconnect to connect to point. 要解决此问题,请联系终端节点的拥有者。”
HttpEndpoint.ConnectionReset “无法维护与终端节点的连接。要解决此问题,请联系终端节点的拥有者。”
HttpEndpoint.ConnectionReset “维护与终端节点的连接遇到问题。要联系终端节点的拥有者。”

亚马逊OpenSearch服务数据传输错误

对于OpenSearch服务目的地,Kinesis Data Firehose 将错误发送到CloudWatch返回的日志OpenSearch服务 。

Lambda 调用错误

Kinesis Data Firehose 可以向发送以下 Lambda 调用错误CloudWatch日志。

错误代码 错误消息和信息
Lambda.AssumeRoleAccessDenied

"Access was denied. 确保提供的 IAM 角色的信任策略允许 Kinesis Data Firehose 代入该角色。”

Lambda.InvokeAccessDenied

"Access was denied. 确保访问策略允许访问 Lambda 函数。”

Lambda.JsonProcessingException

“在解析来自 Lambda 函数的返回记录时出错。Kinesis Data Firehose 要求的状态模型,请确保返回的记录。”

有关更多信息,请参阅 数据转换和状态模型

Lambda.InvokeLimitExceeded

“The Lambda 并发执行限制已超过。Increase the concurrent execution limit."

有关更多信息,请参阅 。AmazonLambda 限制中的Amazon Lambda开发人员指南.

Lambda.DuplicatedRecordId

"Multiple records were returned with the same record ID. 确保 Lambda 函数为每条记录返回唯一的记录 ID。”

有关更多信息,请参阅 数据转换和状态模型

Lambda.MissingRecordId

"One or more record IDs were not returned. 确保 Lambda 函数返回所有收到的记录 ID。”

有关更多信息,请参阅 数据转换和状态模型

Lambda.ResourceNotFound

“The 指定的 Lambda 函数不存在。Use a different function that does exist."

Lambda.InvalidSubnetIDException

“Lambda 函数 VPC 配置中指定的子网 ID 无效。Ensure that the subnet ID is valid."

Lambda.InvalidSecurityGroupIDException

“Lambda 函数 VPC 配置中指定的安全组 ID 无效。Ensure that the security group ID is valid."

Lambda.SubnetIPAddressLimitReachedException

"Amazon Lambda由于配置的一个或多个子网没有可用的 IP 地址,因此无法为 Lambda 函数设置 VPC 访问权限。Increase the IP address limit."

有关更多信息,请参阅 。亚马逊 VPC 限制-VPC 和子网中的Amazon VPC User Guide.

Lambda.ENILimitReachedException

"Amazon Lambda无法在 VPC 中创建作为 Lambda 函数配置的一部分指定的弹性网络接口 (ENI),因为已达到网络接口限制。Increase the network interface limit."

有关更多信息,请参阅 。亚马逊 VPC 限制-网络接口中的Amazon VPC User Guide.

访问CloudWatchKinesis Data Firehose 的日志

您可以使用 Kinesis Data Firehose 控制台或CloudWatch控制台。下面的过程介绍如何使用这两种方法访问错误日志。

要使用 Kinesis Data Firehose 控制台访问错误日志

  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Kinesis 控制台:https://console.aws.amazon.com/kinesisvideo/home

  2. 在导航窗格中选择 Data Firehose (数据 Firehose)

  3. 在导航栏上,选择Amazon区域。

  4. 选择传输流名称,转到传输流详细信息页面。

  5. 选择 Error Log 查看与数据传输故障有关的错误日志的列表。

使用 CloudWatch 控制台访问错误日志

  1. 打开 CloudWatch 控制台 (https://console.aws.amazon.com/cloudwatch/)。

  2. 在导航栏中,选择一个区域。

  3. 在导航窗格中,选择日志

  4. 选择日志组和日志流,查看与数据传输故障有关的错误日志的列表。