Logstash Filter 中文解读
grok可以解析任意的文本并将其结构化。
该工具在针对syslog, apache或者其他的webserver或者例如mysql跟其他一些杂七杂八的东西会特别好用=- =。而且对log的格式化仅仅是为了数据显示更加人性化,不会增加计算消耗。
Logstash本身针对不同语言有120种默认的匹配模式(实际上很容易看到是正则表达式),你也可以写你自己的表达式并且提一个pull request;
Grok 通过将文本标签与log内容进行匹配实现格式化。
格式:%{SYNTAX:SEMANTIC}
SYNTAX是标签的名字,SEMANTIC是通过标签映射得到的数据的存放变量。
默认情况下所有字段的存储类型为String,如果你希望其他的存储类型
%{NUMBER:num:int} 使用这种匹配将产生int类型的字段
直接用这个就能自定义一个正则把数据存入field_name.
也可以写文件自定义一个pattern
最常用的就是对message字段进行格式化
}
如果想对同一个字段多次格式化
其中"Duration: "是正则直接匹配相对应的字符,%{}是grok的匹配标签,前者为正则后者为字段
没错很好用,每一款filter都可以加这个玩意儿
字面意思, 删除某些字段
值得注意的是某些标签的使用需要在过滤器成功工作的前提下,如果你的标签没有效果,记得检查一下前面的过滤主体(有的标签必须在有过滤得情况下才能起作用)
该过滤器的目的是将多条消息的数据聚合成一条消息,提供"code"字段可以对int属性进行自定义的增加减少,然后丢到某一个最终消息中去,然后进入output过程。
不过为了使用这个过滤器,你需要将Logstash的过滤器参数设置为1 (-w 1 flag)这样该过滤器才能正确工作。否则会掉头发。
总的来说是一个很迷的过滤器,请尽量在来源或者Kibana中完成消息聚合, 使用该Filter极其麻烦。
拒绝翻译这个东西 = =
英文文档
变形(?)过滤器。 允许你对字段做一般的改变。 你可以 改名 , 删除 , 替代 , 修改 收到消息中的参数。
如果你认真读了上面的你会发现grok也提供删除字段的功能。实际上相当多的过滤器提供了大量的重复功能,不过我认为针对不同操作尽量调用相对应的过滤器会令配置简洁明了。
其中涉及到True False有一些转换的规则,详情请从title下面的英文文档链接点进去。(没错自己看吧hhhh)
你会发现有两个反斜杠,这没错,你需要给正则里面的所有反斜杠加反斜杠。。。我知道这有点绕口hhh。
hash也可以merge
反正你自己玩=。=
日期过滤器是一个用来解析日期格式的过滤器,并将解析出来的日期作为logstash的时间戳使用。
栗子
日期过滤器是一个对整理消息重新回填旧数据非常重要的过滤器。如果你没有在你的消息中正确的获取到时间,那么之后对他们的搜索很可能会失去顺序。
如果没有该过滤器并且时间中没有设置时间戳,logstash会根据他首次获取到消息的时间设置时间戳,比如从文件中读取消息,那么每次读取的时间将会作为时间戳。