热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用于logstash的grok的条件匹配

如何解决《用于logstash的grok的条件匹配》经验,为你挑选了2个好方法。

我有这种格式的PHP日志

[Day Mon DD HH:MM:SS YYYY] [Log-Type] [client ] : 
[Day Mon DD HH:MM:SS YYYY] [Log-Type] [client ] : 
[Day Mon DD HH:MM:SS YYYY] [Log-Type] [client ] 

这是我试图通过logstash处理后发送到Graylog2.在这里使用这篇文章,我能够开始.现在我想得到一些额外的字段,以便我的最终版本看起来像这样.

{
       "message" => "",
      "@version" => "1",
    "@timestamp" => "converted timestamp from Day Mon DD HH:MM:SS YYYY",
          "host" => "",
       "logtime" => "Day Mon DD HH:MM:SS YYYY",
      "loglevel" => "Log-Type",
      "clientip" => "",
      "php_error_type" => ""
      "file_name_from_the_log" => "/path/of/a/file || /path/of/a/php/script/file.php"
      "errormsg" => ""
}

我有个别行的表达式,或者至少我认为这些应该能够使用grokdebugger进行解析.这样的事情:

%{DATA:php_error_type}: %{DATA:message_part1}%{URIPATHPARAM:file_name}%{GREEDYDATA:errormsg}
%{DATA:php_error_type}: %{GREEDYDATA:errormsg}
%{DATA:message_part1}%{URIPATHPARAM:file_name}%{GREEDYDATA:errormsg}

但不知何故,我发现很难让它适用于整个日志文件.

有什么建议吗?此外,不确定日志文件中是否会出现任何其他类型的错误消息.但目的是为所有人提供相同的格式.有任何建议如何处理这些日志以获得上述格式?



1> Magnus Bäck..:

所述神交滤波器可以使用多种模式来配置:

grok {
  match => [
    "message", "%{DATA:php_error_type}: %{DATA:message_part1}%{URIPATHPARAM:file_name}%{GREEDYDATA:errormsg}",
    "message", "%{DATA:php_error_type}: %{GREEDYDATA:errormsg}",
    "message", "%{DATA:message_part1}%{URIPATHPARAM:file_name}%{GREEDYDATA:errormsg}"
  ]
}

(而不是具有多个模式的单个过滤器,您可以使用多个grok过滤器,但是您可能希望禁用_grokparsefailure标记tag_on_failure => [].)



2> Calumah..:

如果某些时候丢失了日志行的某些部分,则可以使用以下语法:

(?:%{PATTERN1}|%{PATTERN2})

要么

(?:%{PATTERN1}|)

允许PATTERN1 OR ''.(空)

使用此功能,您只能管理一种模式:

grok {
   match => [
      "message", "(?:%{DATA:php_error_type}: |)(?:%{DATA:message_part1}:)(?:%{URIPATHPARAM:file_name}|)%{GREEDYDATA:errormsg}",
   ]
}

如果您遇到问题,可以用%{DATA}更严格的模式替换.

你也可以使用这种语法(更像正则表达式)

(?:%{PATTERN1})?

要调试复杂的grok模式,我建议:

https://grokconstructor.appspot.com/do/match(多行选项+多个输入行同时+其他选项)

https://grokdebug.herokuapp.com/(更易于使用)


推荐阅读
author-avatar
mobiledu2502872283
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有