完整的多项匹配tomcat access日志的正则
来源:互联网 发布:java文件管理系统源码 编辑:程序博客网 时间:2024/06/08 03:19
<pre name="code" class="html"><pre name="code" class="html"> 多项选择有时候我们会碰上一个日志有多种可能格式的情况。这时候要写成单一正则就比较困难,或者全用 | 隔开又比较丑陋。这时候,logstash 的语法提供给我们一个有趣的解决方式。文档中,都说明 logstash/filters/grok 插件的 match 参数应该接受的是一个 Hash 值。但是因为早期的 logstash 语法中 Hash 值也是用 [] 这种方式书写的,所以其实现在传递 Array 值给 match 参数也完全没问题。所以,我们这里其实可以传递多个正则来匹配同一个字段:match => [ "message", "(?<request_time>\d+(?:\.\d+)?)", "message", "%{SYSLOGBASE} %{DATA:message}", "message", "(?m)%{WORD}"]logstash 会按照这个定义次序依次尝试匹配,到匹配成功为止。虽说效果跟用 | 分割写个大大的正则是一样的,但是可阅读性好了很多。 [elk@dr-mysql01 api-access]$ cat /usr/local/logstash-2.3.4/config/api-access/logstash_access.conf input { file { type => "zj_api_access" path => ["/data01/applog_backup/zjzc_log/zj-api*access*"] } file { type => "wj_api_access" path => ["/data01/applog_backup/winfae_log/wj-api*access*"] } }filter { grok { match => [ "message" , "\s*%{IPORHOST:clientip}\s+\-\s+\-\s+\[%{HTTPDATE:time}\]\s+\"%{WORD:verb}\s+(?<api>(\S+))\?.*\s+HTTP/%{NUMBER:httpversion}\"\s+%{NUMBER:http_status_code}\s+%{NUMBER:bytes}\s+(%{BASE16FLOAT:request_time})\s+%{IPORHOST:remoteip}", "message" ,"\s*%{IPORHOST:clientip}\s+\-\s+\-\s+\[%{HTTPDATE:time}\]\s+\"%{WORD:verb}\s+(?<api>(\S+))\s+HTTP/%{NUMBER:httpversion}\"\s+%{NUMBER:http_status_code}\s+%{NUMBER:bytes}\s+(%{BASE16FLOAT:request_time})\s+%{IPORHOST:remoteip}", "message" ,"\s*%{IPORHOST:clientip}\s+\-\s+\-\s+\[%{HTTPDATE:time}\]\s+\"%{WORD:verb}\s+(?<api>(\S+))\s+HTTP/%{NUMBER:httpversion}\"\s+%{NUMBER:http_status_code}\s+\-\s+(%{BASE16FLOAT:request_time})\s+%{IPORHOST:remoteip}", "message","\s*%{IPORHOST:clientip}\s+\-\s+\-\s+\[%{HTTPDATE:time}\]\s+\"%{WORD:verb}\s+(?<api>(\S+))\s+HTTP/%{NUMBER:httpversion}\"\s+%{NUMBER:http_status_code}\s+\-\s+(%{BASE16FLOAT:request_time})\s+(%{IPORHOST:remoteip}|-)" ] } mutate { convert => [ "request_time", "float"] add_field =>["response_time","%{request_time}"] remove_field =>["request_time"] add_field => [ "[@metadata][zabbix_key]" , "logstash-api-access" ] add_field => [ "[@metadata][zabbix_host]" , "dr-mysql01" ] add_field =>["messager","%{type}-%{message}"] remove_field =>["message"] } date { match => ["time", "dd/MMM/yyyy:HH:mm:ss Z"] } }output { if [response_time] >= 5 { zabbix {zabbix_host => "[@metadata][zabbix_host]"zabbix_key => "[@metadata][zabbix_key]" zabbix_server_host => "192.168.32.55" zabbix_server_port => "10051"zabbix_value => "messager" } } if [type] == "zj_api_access" { redis { host => "192.168.32.67" data_type => "list" key => "zj_api_access:redis" port=>"6379" password => "1234567" }} else if [type] == "wj_api_access"{ redis { host => "192.168.32.67" data_type => "list" key => "wj_api_access:redis" port=>"6379" password => "1234567" } }}
0 0
- 完整的多项匹配tomcat access日志的正则
- Tomcat的多项目部署
- js正则RegExp使用g全文扫描匹配多项模式的坑
- 正则表达式完整匹配
- javascript的正则匹配
- 匹配URL的正则
- 正则匹配的健壮性
- 匹配的正则表达式
- 正则的递归匹配
- Match的正则匹配
- URL的正则匹配
- 常用的正则匹配
- NSString的正则匹配
- 正则表达式的匹配
- 常用的正则匹配
- 正则表达式的匹配
- Qt的正则匹配
- 正则表达式的匹配
- 无营养:iOS开发账号续费后原app上架
- Html5的canvas
- VIM配置及插件入门
- 初次接触struts2的感想
- 多语句表值函数与内联表值函数对比
- 完整的多项匹配tomcat access日志的正则
- linux查看系统编码和修改系统编码的方法
- Tomcat配置之Server.xml结构详解
- 解决MySQL不能更新同一张表查出来的结果…
- 使用Spark分析拉勾网招聘信息(四): 几个常用的脚本与图片分析结果
- Android图片文件选择器
- CSS的基本选择器和优先级
- 算法的五个重要特性
- XML概述