【问题标题】:Encoding issue when streaming logs from AWS Kinesis to ElasticSearch via Logstash通过 Logstash 将日志从 AWS Kinesis 流式传输到 ElasticSearch 时出现编码问题
【发布时间】:2022-07-25 08:08:57
【问题描述】:

我有一个名为“otelpoc”的 AWS Kinesis 数据流。

在 Logstash 中,我使用的是 Kinesis 输入插件 - 请参阅 here。

我的 Logstash 配置如下:

input {
   kinesis {
      kinesis_stream_name => "otelpoc"
      region => "ap-southeast-2"
      codec => json { }
   }
}
output {
   elasticsearch {
      hosts => ["elasticsearch:9200"]
      index => "otelpoc-logstash-%{+YYYY.MM.dd}"
   }
}

我可以使用 AWS CLI 将事件发送到 Kinesis,如下所示: aws kinesis put-record --stream-name otelpoc --data file://payload.json --partition-key 1

payload.json 看起来像这样:

{
  "message": "this is a test",
  "level": "error"
}

...但是当我这样做时,我在 Logstash 中看到如下错误: Received an event that has a different character encoding than you configured. {:text=>"\\x99\\xEB,j\\a\\xAD\\x86+\\\"\\xB1\\xAB^\\xB2\\xD9^\\xBD\\xE9^\\xAE\\xBA+", :expected_charset=>"UTF-8"}

有趣的是,消息仍然会输出到 Elastic,我可以在 Kibana 中查看它,如下所示:

不确定我应该对字符编码做什么...我在 Logstash 中尝试了几件事,但没有成功,例如将 kinesis 输入中的编解码器更改为以下内容

codec => plain {
   charset => "UTF-8"
}

...但没有运气...我尝试在一些在线解码器中解码编码文本,但不确定我要解码的内容...任何人都可以提供帮助吗?

编辑:使用 ELK 堆栈的 v6.7.1,它已经很老了,但我认为这不是问题......

【问题讨论】:

    标签: encoding logstash amazon-kinesis


    【解决方案1】:

    在使用 AWS CLI 向 Kinesis 发布消息时,我从未解决此问题,但对于我的特定用例,我尝试使用开放遥测 (OTEL) 收集器代理的 awskinesis 导出器将日志发送到 Kinesis - 请参阅 @987654321 @。

    如果我使用otlp_json 编码,它可以工作,例如

      awskinesis:
        aws:
          stream_name: otelpoc
          region: ap-southeast-2
        encoding:
          name: otlp_json
    

    【讨论】:

      猜你喜欢
      • 2018-08-29
      • 1970-01-01
      • 2018-08-10
      • 2018-03-09
      • 1970-01-01
      • 2020-05-26
      • 2016-12-24
      • 2021-08-27
      • 1970-01-01
      相关资源
      最近更新 更多