我有一个AWS Kinesis数据流,叫做“otelpoc”。
在Logstash中,我使用的是Kinesis输入插件--请看这里。
我的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,这是相当旧的,但我不认为这是问题...
1条答案
按热度按时间g6baxovj1#
使用AWS CLI向Kinesis发布消息时,我从未解决此问题,但对于我的特定用例,我尝试使用开放遥测(OTEL)收集器代理的
awskinesis
导出器向Kinesis发送日志-请参见here。如果我使用
otlp_json
编码,它工作,例如.