当前位置: 首页 > 知识库问答 >
问题:

分析Nginx日志时Logstash_grokparsefailure

劳法
2023-03-14

我正在尝试使用Logstash解析nginx日志,除了用包含nginx$remote\u用户的行获取这个\u grokparsefailure标记外,一切看起来都很好。当$remote_user为“-”(未指定$remote_user时的默认值)时,Logstash将执行此任务,但使用真正的$remote_用户,如user@gmail.com它失败并放置一个\u grokparsefailure标签

127.0.0.1--[17/Feb/2017:23:14:08 0100]"GET/favicon.icoHTTP/1.1"302 169"http://training-hub.tn/trainer/"Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML, like Gecko)Chrome/56.0.2924.87Safari /537.36"

=====

127.0.0.1 - jemlifathi@gmail.com[17/Feb/2017:23:14:07 0100]“GET/trainer/templates/home.tmpl.html HTTP/1.1”304 0http://training-hub.tn/trainer/“Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/56.0.2924.87 Safari/537.36”

=====

我正在使用此配置文件:

input {     
    file {      
        path => "/home/dev/node/training-hub/logs/access_log"       
        start_position => "beginning"       
        sincedb_path => "/dev/null"
        ignore_older => 0
        type => "logs"  
    }
}

filter {    
    if[type] == "logs" {        
        mutate {            
             gsub => ["message", "::ffff:", ""]         
        }       
        grok {          
             match=> [
               "message" , "%{COMBINEDAPACHELOG}+%{GREEDYDATA:extra_fields}",
               "message" , "%{COMMONAPACHELOG}+%{GREEDYDATA:extra_fields}"
             ]
             overwrite=> [ "message" ]
        }

        mutate {
          convert=> ["response", "integer"]
          convert=> ["bytes", "integer"]
          convert=> ["responsetime", "float"]
        }
        geoip {
          source => "clientip"
          target => "geoip"
          database => "/etc/logstash/GeoLite2-City.mmdb"
          add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
          add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]
        }
        mutate {
          convert => [ "[geoip][coordinates]", "float"]
        }

        date {
          match=> [ "timestamp", "dd/MMM/YYYY:HH:mm:ss Z" ]
          remove_field=> [ "timestamp" ]
        }

        useragent {
          source=> "agent"
        }   
     } 
 }

output {    elasticsearch {         hosts => "localhost:9200"   } }

共有1个答案

齐栋
2023-03-14

在使用许多值测试输出后,我意识到Logstash无法解析包含此类$remote\u user的日志行,因为它不是有效的用户名(电子邮件地址),因此我添加mutate gsub过滤器以删除@和邮件地址的其余部分,从而获得有效的$remote\u user

gsub=

现在,它工作得很好

 类似资料:
  • 本文向大家介绍python+pandas分析nginx日志的实例,包括了python+pandas分析nginx日志的实例的使用技巧和注意事项,需要的朋友参考一下 需求 通过分析nginx访问日志,获取每个接口响应时间最大值、最小值、平均值及访问量。 实现原理 将nginx日志uriuriupstream_response_time字段存放到pandas的dataframe中,然后通过分组、数据统

  • Nginx日志文件分析工具有没有推荐的 简单的就行

  • 问题内容: 我正在使用和选项打开gc日志记录。 但是发现只有在4 0r 5后才通过命令打印我的gc日志的实际详细信息! 按照定义,将为每个gc打印应用程序停止时间。 但是我不清楚为什么它会打印如下所示的示例。 是因为 只需在每个安全点到达后打印 (要么) 该日志文件将由其他gc线程记录。我正在使用并发扫描进行完整GC,并为年轻一代使用ParNew 我的应用程序是Web应用程序。 O / p模式-我

  • 本文向大家介绍Python解析nginx日志文件,包括了Python解析nginx日志文件的使用技巧和注意事项,需要的朋友参考一下 项目的一个需求是解析nginx的日志文件。 简单的整理如下: 日志规则描述 首先要明确自己的Nginx的日志格式,这里采用默认Nginx日志格式: 其中一条真实记录样例如下: 其中,客户端型号信息用XXXXXXX代替。 项目中已经按照业务规则对Nginx日志文件进行了

  • 本文向大家介绍NodeJS读取分析Nginx错误日志的方法,包括了NodeJS读取分析Nginx错误日志的方法的使用技巧和注意事项,需要的朋友参考一下 网上很少看到有用NodeJS运维系列文章,后续我会更新一些NodeJS运维相关的内容又或者说让我们更加的深入了解一些服务器的知识以及自动化运维方面的基础知识 为什么要做错误日志分析,因为网上这方面的工具不多我找到一个goaccess但是都是分析成功

  • 本文向大家介绍使用MongoDB分析Nginx日志的方法详解,包括了使用MongoDB分析Nginx日志的方法详解的使用技巧和注意事项,需要的朋友参考一下 本文我们要从日志文件中找出IP访问最多的10条记录,然后判断其是否合法,从而采取对应的措施。感兴趣的朋友们一起来看看吧。 日志解析流程 正常情况下,关于Nginx日志解析的流程如下所示: 一般情况下我们会对要解析的日志提前进行切分,常用的方式是