追逐繁星的孩子

お帰りなさい

首页 标签 归档 分类 关于
Logstash问题整理(filter)
日期 2018-04-26   |    标签 Logstash   |    评论

logstash,一款常用的用于解析、格式化日志的开源工具。目前最新稳定版本为(6.2.X)。

记录一下这段时间在研究学习logstash中碰到的问题(主要针对filter)。

  • dissect
    • dissect插件很强大,可以根据需要自己定义截取日志并为之命名,自由度蛮高的。不过要注意该插件在1.1.1版本之前存在BUG,对于空字符的对应会错位。故建议选择插件版本在1.1.1以上的logstash版本中使用该插件(最好使用最新版本logstash)

输入:message=>"aa^^cc^:"

解析:mapping=>"{"message"=>"%{a}^%{b}^%{c}^%{d}:%{e}"}"

输出:a=>"aa",b=>"",c=>"cc",d=>"",e=>""

  • csv
    • csv插件顾名思义用于解析CSV格式的日志。不过要注意CSV解析出空字符会默认赋nil(空)而不是""(空字符串)

输入:message=>"aa^"

解析:csv {separator => "^"}

输出:column1=>"aa",column2=>nil

  • kv
    • kv插件会处理k=v..的日志格式。不过要注意kv在解析时,1、若=右边为空,则解析结果会把之后的内容加上(具体看下述例子)2、若=右边为""(空字符串),目前版本不会解析该kv(具体看下述例子)

1、

输入:message=>"a=1,b=2,c=,d=3"

解析:kv {field_split => ","}

输出:a=>"1",b=>"2",c=>",d=3"

2、

logstash-6.2.X:

输入:message=>"a=1,b=2,c="",d=3"

解析:kv {field_split => ","}

输出:a=>"1",b=>"2",d=>"3"

logstash-5.6.X:

输入:message=>"a=1,b=2,c="",d=3"

解析:kv {field_split => ","}

输出:a=>"1",b=>"2",c=>"\"\"",d=>"3"

故处理1情况的时候,可以把 =, 替换成 ="", 进行处理

  • ruby
    • ruby插件并没有过多研究,对ruby不熟。
    • 举个例子好了:时间字符串date(XXXX-XX-XXTXX:XX:XX.XXXZ)转时间戳。

ruby {code => "require 'date';event.set('date', DateTime.parse(event.get('date')).strftime('%s%L'))"}

  • mutate
    • 无法在mutate插件中先添加字段后对字段进行重命名(不支持)。

后期碰到继续更新!!!