Encoding rsyslog通过tcp发送编码错误(损坏?)的数据(使用logstash接收)

Encoding rsyslog通过tcp发送编码错误(损坏?)的数据(使用logstash接收),encoding,logstash,rsyslog,Encoding,Logstash,Rsyslog,我的rsyslog日志在本地正确记录,但我也希望远程接收日志,因此我添加了规则: *.* @@myIP:5141 到rsyslog.conf的末尾 为了接收输出,我使用配置运行logstash input { tcp { port => 5141 } } output { stdout {} } Logstash期望UTF-8编码,但是我得到了错误 收到的事件的字符编码与您配置的不同 消息本身似乎是乱码,或者是混合编码,例如: \u0016\u0003\u0002\u0000V\u00

我的rsyslog日志在本地正确记录,但我也希望远程接收日志,因此我添加了规则:

*.* @@myIP:5141
到rsyslog.conf的末尾

为了接收输出,我使用配置运行logstash

input { tcp { port => 5141 } }
output { stdout {} }
Logstash期望UTF-8编码,但是我得到了错误

收到的事件的字符编码与您配置的不同

消息本身似乎是乱码,或者是混合编码,例如:

\u0016\u0003\u0002\u0000V\u0001\u0000\u0000R\u0003\u0002S\xB1R\xAB5K\xF6\\\xB9\xB2\xB2\xB4\xB1\xAE0\t\u007F\xDF`5\xF6\u0015\xC8)H\xD7H\xCF+&\xD5T5\u0000\u0000\u00003\u0000E\u00009\u0000\x88\u0000\u0016\u00002\u00008\U00007\X805\u0000A\

注意:一些条目是\u00,而其他条目是\x。甚至有多个反斜杠

我想知道是我把设置搞砸了,还是我和服务器之间有什么东西把消息搞砸了

我还尝试过使用syslog logstash输入,它给出了相同的结果

另一个例子:

\u0016\u0003\u0002\u0000V\u0001\u0000\u0000R\u0003\u0002S\xB1RiZ^\xC3\xD9\u001Cj\a\xD4\xE0\xECr\x8E\xAC\xF5\u001A\xB9+\u07B9\xE5\xF9\xF9\xA3''z\u0018}9\u0000\u00003\u0000E\u00009\u00009\u0000\u0000\x88\u00008\U00007\u0000A\u00003

编辑:
我找到了问题的根源,它与加密有关。不幸的是,我不能透露我做了什么来修复它,只需说John Petrone下面的回答对于未来读者可能遇到的类似问题来说是一个良好的开端。问题是,您正在接收的系统日志源正在以非UTF-8格式发送数据,这会导致Logstash出现问题,这正是它所期望的。你基本上有3个行动方案:

  • 让Rsyslog为您更正此问题:使用Rsyslog mmutf8fix模块 修复无效的UTF-8序列。

  • 更改Logstash以使用更合适的字符集:您可以更改 普通编解码器的默认字符集: . 你需要 做一点实验,我会在这里找到一个起点。

  • 将源代码更改为输出UTF-8:不知道正在使用的源代码 由Rsyslog收集,我无法评论需要做什么 这个变化


  • 我将从选项1开始,如果这不起作用,请转到选项2。

    因此,您得到的看起来编码中断的神奇字符串实际上是SSL握手请求


    我怀疑您所做的(就像我刚才做的)是在logstash中错误配置了tcp输入。具体来说,我忘记添加
    ssl\u enable=>true
    。因此,它正在监听正常的TCP,得到SSL握手,并尽职尽责地将其记录为垃圾。

    基于@docwhat-answer

    nano logstash/pipeline/logstash.conf
    # Or
    nano /path/to/logstash.conf
    input {
     beats {
          port => 5000
          ssl => false
     }
      #tcp {
      #   port => 5000
      #}
    }  
    

    你使用的是什么版本的Logstash?我目前使用的是1.4.2Darn,错过了5分钟的编辑窗口。忘了提到我正在使用rsyslog 7.2.4,我遇到了完全相同的问题。请告诉我发生了什么事……我的头因为整天撞墙而疼。谢谢你的意见,1。(从7.5.4开始提供)看起来很有希望,但我在遥控器上的版本是7.2.4。升级它已经在书上写了很多年了,所以我可能现在就这么做。2.如果我知道会发生什么,改变字符集将是完美的,但我会继续玩下去,看看会发生什么。3.查看rsyslog输出的文件的编码(使用file-bi),它们都声称是utf-8。所以我不确定这是否是rsyslog在写入文件之前所做的转换,或者它的来源指示我刚刚想到,rsyslog是否有可能试图以某种方式加密流量,并且它在我这边被错误解释?似乎更可能是一个编码问题我将接受这个答案,虽然这并不能解决我的具体错误,但对未来的读者来说,这是最好的做法