logstash在收取日志中有个PRI部分(一个数值),这部分是由facility和severity两部分组成的。方法是facility*8+severity。现在,在日志中得到一个数值,怎么在logstash中把severity部分计算出来?
比如:PRI=30=二进制0001 11100 其中serverity部分只最后三位 110=十进制6,我需要这个6。有什么方法可以把这个值在logstash中计算出来?
比如:PRI=30=二进制0001 11100 其中serverity部分只最后三位 110=十进制6,我需要这个6。有什么方法可以把这个值在logstash中计算出来?
2 个回复
locatelli
赞同来自: wreeg
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中
"
}
谢谢楼上和一只菜鸟的知乎分享。