【问题标题】:AWS Cloudwatch logs to ElasticSeacrh via Kinesis FirehoseAWS Cloudwatch 通过 Kinesis Firehose 记录到 ElasticSeacrh
【发布时间】:2017-10-16 08:05:02
【问题描述】:

我正在尝试使用 Kinesis Firehose 将 AWS cloudwatch 日志流式传输到 Amazon ES。但是,我在 ES 错误日志中不断收到以下错误。有什么想法吗?

无法将数据解码为 UTF-8,如 {"attemptsMade":0,"arrivalTimestamp":1494910856979,"errorCod‌​e":"InvalidEncodingE‌​xception","errorMess‌​age":"数据可能不能被解码为UTF-8" , “attemptEndingTimestamp”:1494911157268 “RAWDATA”: “H4S IAAAAAAAAADWO0QqCMBi FX2XsWiJBQ70LUW8sIYU uQmLpnxvpJttMQnz3Ztr lxzmcQj0RXNBWNMkErmk SKoTfZSrmWQLoV1fBQlW S9ZoLHrNUgFQ5u5a8XvY HrBSfM6rWumdHQpDNjtu M7vr333IPnOtZfbxG4pm jTQ5tegEIK1YvxBlEgra ZIPFFtlhgnyzOKmQQqFO zwXM5fj / HcTewAAAA =”, "esDocumentId":null

【问题讨论】:

  • 您是否有理由不使用预构建的 lambda 进行流式传输并改用 Firehose?
  • 嘿,我想同时流式传输到 s3 和 ES,并且正在使用 terraform 来自动化它。我没有找到使用 terraform 和使用控制台上可用的“Stream to ES”方法来自动化的方法。如果你有,请告诉我。
  • 如果我必须使用 terraform(我不会因为我已经使用 Serverless),我会从模板的 aws 控制台创建 lambda 函数,然后将函数代码复制为 [terraform lambda][1 ] 并通过发布到 s3 来扩展它,然后使用 [cloudwatch logs subscription filter][2] 作为您刚刚创建的 lambda 的源。虽然我不熟悉 Terraform,所以这主要是我的猜测。 [1]:terraform.io/docs/providers/aws/r/lambda_function.html [2]:terraform.io/docs/providers/aws/r/…
  • 如果这对您有意义,我可以发布上一条评论作为答案。我看到 cmets 部分弄乱了链接。
  • 感谢您的投入,亚当。

标签: amazon-web-services elasticsearch amazon-kinesis-firehose


【解决方案1】:

这很可能是因为 Cloudwatch 日志被压缩了。您可以使用 Firehose 转换 lambda 蓝图并添加代码以解压缩记录。

【讨论】:

    猜你喜欢
    • 2018-09-24
    • 2016-04-01
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 2021-06-15
    相关资源
    最近更新 更多