不为失败找理由,要为成功找方法。

logstash收取日志反向计算问题。

Logstash | 作者 wreeg | 发布于2020年11月25日 | 阅读数:1405

logstash在收取日志中有个PRI部分(一个数值),这部分是由facility和severity两部分组成的。方法是facility*8+severity。现在,在日志中得到一个数值,怎么在logstash中把severity部分计算出来?
比如:PRI=30=二进制0001 11100 其中serverity部分只最后三位 110=十进制6,我需要这个6。有什么方法可以把这个值在logstash中计算出来?
已邀请:

locatelli

赞同来自: wreeg

用ruby filter,在里面写一行ruby code就行了

wreeg - 上吧,不要怂。

赞同来自:

处理方法:
    ruby {

       code => "
            service = event.to_hash      #把event对象转换为hash对象
            a = service['syslog-num']   #读取日志的PRI值syslog-num
            b = Integer(a)                    #把PRI值转换成整数
            x = b.to_s(2)                      #把PRI值转换为二进制
            y = x[-3..-1]                       #读取二进制的最后三位,得到severity
            z = '0b' + y                        #把二进制值转化为机器认识的二进制码
            q = Integer(z)                     #把二进制转换为十进制
            event.set('syslog-num',q)    #把severity值写回syslog-num中
        "
    }
谢谢楼上和一只菜鸟的知乎分享。
 

要回复问题请先登录注册