博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Logstash使用grok插件解析Nginx日志
阅读量:6075 次
发布时间:2019-06-20

本文共 2477 字,大约阅读时间需要 8 分钟。

grok表达式的打印复制格式的完整语法是下面这样的:

%{PATTERN_NAME:capture_name:data_type}

data_type 目前只支持两个值:int 和 float。

在线gork正则的地址:http://grokdebug.herokuapp.com/

Logstash基础正则地址:https://github.com/elastic/logstash/blob/v1.4.2/patterns/grok-patterns

也可以在你的安装路径下查找grok-patterns内置的正则表达式:

/usr/local/logstash-6.2.4/vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns/grok-patterns

例如:

URIPATH (?:/[A-Za-z0-9$.+!*'(){},~:;=@#%&_\-]*)+URIPARAM \?[A-Za-z0-9$.+!*'|(){},~@#%&/=:;_?\-\[\]<>]*

-----------------------------------------------------------------------------------------

logstash-filter-mutate 插件是Logstash 另一个重要插件,它提供了丰富的基础类型数据处理能力,包括类型转换,字符串处理和字段处理等

可以设置的转换类型包括:"integer","float" 和 "string"。示例如下:

filter {
    mutate {
        convert => ["request_time", "float"]
    }
}
注意:mutate 除了转换简单的字符值,还支持对数组类型的字段进行转换,即将 ["1","2"] 转换成 [1,2]。但不支持对哈希类型的字段做类似处理。

对已有索引进行修改并且平滑过渡

mutate {            convert => [ "request_time", "float" ]            add_field => [ "response_time", "%{request_time}" ]            remove_field => [ "request_time" ]                 }

--------------------------------------------------------------------------------

在线grok表达式解析地址:http://grokdebug.herokuapp.com/  NGINXACCESS为规则名称,测试时不用填入)

 

根据已经生成的日志记录逐个参数进行调试即可。

需要注意的是当日志或可能出现“-”时,必须在NGINXACCESS中指定,例如: (?:%{NUMBER:serverelapsed}|-)

需要修改的文件位置:/usr/local/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns/grok-patterns

如果找不到的话,grep -rw NGINXACCESS /usr/local/logstash

默认的参数为:

NGUSERNAME [a-zA-Z\.\@\-\+_%]+NGUSER %{NGUSERNAME}NGINXACCESS %{IPORHOST:clientip} %{NGUSER:ident} %{NGUSER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response}  (?:%{NUMBER:bytes}|-) (?:"(?:%{URI:referrer}|-)"|%{QS:referrer}) %{QS:agent} %{QS:xforwardedfor} %{IPORHOST:host} %{BASE10NUM:request_duration}

 我这边设置的是:

#nginxWZ ([^ ]*)NGINXACCESS %{IP:remote_ip} \- \- \[%{HTTPDATE:timestamp}\] "%{WORD:method} %{WZ:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:status} %{NUMBER:bytes} (?:%{QS:referer}|-) %{QS:agent} %{NUMBER:elapsed} (?:%{NUMBER:serverelapsed}|-) %{QS:xforward}

 或拆分请求的uri和请求参数:

#nginxWZ ([^ ]*)NGINXACCESS %{IP:remote_ip} \- \[%{HTTPDATE:timestamp}\] "%{WORD:method} (%{URIPATH:uri}|-|)(%{URIPARAM:param}|-) HTTP/%{NUMBER:httpversion}" %{NUMBER:status} %{NUMBER:bytes} (?:%{QS:referer}|-) %{QS:agent} %{NUMBER:elapsed} (?:%{NUMBER:serverelapsed}|-)

 

自定义规则时也可以在/usr/local/logstash主目录下新建一个目录:patterns,并在该目录下新建一个grok的表达式解析文件nginx,内容同上,也可以实现相同的目的。

 

转载地址:http://jtxgx.baihongyu.com/

你可能感兴趣的文章
PPT制造精巧水晶收获组织机构图好看的ppt模板下载
查看>>
【零基础手把手教你学Python】02 与Python的第一次亲密接触——HelloWorld
查看>>
我的友情链接
查看>>
mysql数据库基础知识
查看>>
mysql中 ${param}与#{param}区别
查看>>
docker基础
查看>>
Java代码实现发送邮件
查看>>
IBM将宣布建立英国数据中心,跻身世界一流AI阵营
查看>>
电脑调整分区后分区不见的数据找回方法
查看>>
SD卡操作
查看>>
机械硬盘显示位置不可用要怎样办啊
查看>>
Apache构建虚拟Web主机
查看>>
nmcli命令使用以及网卡绑定bond
查看>>
06: Zabbix基础 、 Zabbix监控实战 、 Zabbix报警机制
查看>>
Ubuntu 18.04安装apache-tomcat7.0.53
查看>>
第一周学习总结
查看>>
路由类型笔记整理
查看>>
常用设计模式 Java 实现
查看>>
APP测试中工程师应注意哪些事项-干货分享!
查看>>
pyhanlp 两种依存句法分类器
查看>>