排除HTTP端点故障 - Amazon Kinesis Data Firehose
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

排除HTTP端点故障

本节介绍处理时的常见故障排除步骤 Kinesis Data Firehose 向通用HTTP端点目的地和合作伙伴目的地(包括Datadog)交付数据, MongoDB、和新信物。在本节中,所有适用的目的地都被称为HTTP端点。

注意

本节中的信息不适用于以下目的地: 斯普朗克, ElasticSearch、S3和Redshift。

CloudWatch 日志

强烈建议您启用 CloudWatch 消防记录. 日志仅在发送到目标时出错时才发布。

目的地例外

ErrorCode: HttpEndpoint.目的地例外

{ "deliveryStreamARN": "arn:aws:firehose:us-east-1:123456789012:deliverystream/ronald-test", "destination": "custom.firehose.endpoint.com...", "deliveryStreamVersionId": 1, "message": "The following response was received from the endpoint destination. 413: {\"requestId\": \"43b8e724-dbac-4510-adb7-ef211c6044b9\", \"timestamp\": 1598556019164, \"errorMessage\": \"Payload too large\"}", "errorCode": "HttpEndpoint.DestinationException", "processor": "arn:aws:lambda:us-east-1:379522611494:function:httpLambdaProcessing" }

目的地例外情况表明Firehose 能够建立与端点的连接并发出HTTP请求,但 没有 接收200个响应代码。2xx个不是200s的响应也会导致目的地例外。 Kinesis Data Firehose 将从配置的端点接收的响应代码和截短响应有效负载记录到 CloudWatch 记录。因为 Kinesis Data Firehose 记录响应代码和有效负载,无需修改或解释,由端点提供拒绝的确切原因 Kinesis Data Firehose的HTTP发送请求。以下是这些例外最常见的故障排除建议:

  • 400间: 表示由于您的 Kinesis Data Firehose. 确保您拥有正确的 乌尔, 常用属性, 内容编码, 访问键,和 缓冲提示 目的地。请参阅所需配置中的目的地特定文档。

  • 401年: 表示您为交付流配置的访问密钥不正确或缺少。

  • 403间: 表示您为发送流配置的访问密钥没有向配置的端点发送数据的权限。

  • 413年: 表示请求有效负载 Kinesis Data Firehose 发送到端点太大,端点无法处理。尝试 降低缓冲提示 为目的地推荐尺寸。

  • 429年: 表示 Kinesis Data Firehose 正在以高于目的地处理的速率发送请求。通过增加缓冲时间和/或增加缓冲大小(但仍在目的地的限制范围内),微调缓冲提示。

  • 5xx年: 表示目标存在问题。的 Kinesis Data Firehose 服务仍然正常工作。

重要

重要: 虽然这些是常见的故障排除建议,但特定端点提供响应代码的原因可能不同,应该首先遵循端点的特定建议。

无效响应

ErrorCode: HttpEndpoint.无效响应自目标

{ "deliveryStreamARN": "arn:aws:firehose:us-east-1:123456789012:deliverystream/ronald-test", "destination": "custom.firehose.endpoint.com...", "deliveryStreamVersionId": 1, "message": "The response received from the specified endpoint is invalid. Contact the owner of the endpoint to resolve the issue. Response for request 2de9e8e9-7296-47b0-bea6-9f17b133d847 is not recognized as valid JSON or has unexpected fields. Raw response received: 200 {\"requestId\": null}", "errorCode": "HttpEndpoint.InvalidResponseFromDestination", "processor": "arn:aws:lambda:us-east-1:379522611494:function:httpLambdaProcessing" }

无效响应异常表明 Kinesis Data Firehose 从所述端点目的地接收到无效响应。响应必须符合 响应规格 或 Kinesis Data Firehose 将考虑发送尝试失败,并将重新发送相同的数据,直到超过配置的重试持续时间。 Kinesis Data Firehose 将不遵循响应规范的响应视为失败,即使响应的状态是200。如果您正在开发 Kinesis Data Firehose 兼容端点,请遵循响应规范,以确保数据成功交付。

以下是一些常见的无效答案类型以及如何修复它们:

  • JSON或意外字段无效: 表示响应无法正确解序列化为JSON或具有意外字段。确保响应不是内容编码的。

  • 缺失 RequestId: 表示响应不包含 requestId.

  • RequestId 不匹配: 表示 requestId 响应中的与拨出 requestId.

  • 缺少时间戳: 表示响应不包含时间戳字段。时间戳字段必须为数字而非字符串。

  • 缺少内容类型标题: 表示响应不包含“内容类型:应用程序/json”标题。不接受其他内容类型。

重要

重要: Kinesis Data Firehose 只能向遵循Firehose请求的端点传送数据,并且 响应规格. 如果您要将目的地配置为第三方服务,请确保使用正确的 Kinesis Data Firehose 兼容端点,其可能与公共摄取端点不同。例如,Datadog Kinesis Data Firehose 终点是 https://aws-kinesis-http-intake.logs.datadoghq.com/ 而其公共终点是 https://api.datadoghq.com/.

其他常见错误

其他错误代码和定义如下所示。

  • 错误代码: HttpEndpoint.请求超时 -表示端点响应需要3分钟以上。如果您是目标的所有者,请减少目标端点的响应时间。如果您不是目的地的所有者,请联系所有者并询问是否可以采取任何措施来降低响应时间(即减少缓冲提示,以便每个请求处理的数据更少)。

  • 错误代码: HttpEndpoint.响应过大 -表示响应太大。回答必须小于1 MiB 包括标题。

  • 错误代码: HttpEndpoint.连接失败 -表示无法与配置的端点建立连接。这可能是由于配置的URL中的拼写错误,端点无法访问 Kinesis Data Firehose,或者端点响应连接请求需要太长时间。

  • 错误代码: HttpEndpoint.连接复位 -表示连接已建立,但端点重置或提前关闭。

  • 错误代码: HttpEndpoint.SSLHandshake故障 -表示无法通过配置的端点成功完成SSL握手。