大佬教程收集整理的这篇文章主要介绍了logstash Apache日志的自定义日志过滤器,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
从开始httpD_COMMONLOG
,您可以使用以下模式(可以在grok
tester上进行测试):
grok {
match => {
"message" => "%{IPORHOST:clIEnt_ip} %{httpDUSER:IDent} %{httpDUSER:auth} \[%{httpDATE:timestamp}\] \"(?:%{WORD:methoD} /API/v%{numbER:version}/places/search/Json\?%{NOTSPACE:request}(?: http/%{numbER:httpversion})?|%{DATA:rawrequest})\" %{numbER:response_codE} (?:%{numbER:data_transfereD}|-)"
}
}
一旦grok过滤器提取了请求,就可以在其上使用kv过滤器,该过滤器将提取参数(并忽略参数不是特定于订单的问题)。您必须将fIEld_split
选项设置为&:
kv {
source => "request"
fIEld_split => "&"
}
对于search_query
,根据存在的字段,我们使用@H_386_3@mutate带有add_fIEld
选项的过滤器来创建字段。
filter {
grok {
match => {
"message" => "%{IPORHOST:clIEnt_ip} %{httpDUSER:IDent} %{httpDUSER:auth} \[%{httpDATE:timestamp}\] \"(?:%{WORD:methoD} /API/v%{numbER:version}/.*/Json\?%{NOTSPACE:request}(?: http/%{numbER:httpversion})?|%{DATA:rawrequest})\" %{numbER:response_codE} (?:%{numbER:data_transfereD}|-)"
}
}
kv {
source => "request"
fIEld_split => "&"
}
if [query] {
mutate {
add_fIEld => { "search_query" => "%{query}" }
}
} else if [keyword] {
mutate {
add_fIEld => { "search_query" => "%{keyworD}" }
}
}
if [refLOCATIOn] {
mutate {
rename => { "refLOCATIOn" => "LOCATIOn" }
}
}
}
我是ELK堆栈的新手。我有一个文件拍服务,将日志发送到logstash,并在logstash中使用grok
过滤器,将数据推送到elasticsearch
索引。
我正在使用gork
筛选器@H_386_3@match => { "message" => "%{COMBINEDAPACHelOG}"}来解析数据。
我的问题是,我希望将字段名称及其值存储在elasticsearch索引中。我的日志的不@R_228_11197@如下:
27.60.18.21 - - [27/Aug/2017:10:28:49 +0530] "GET /api/v1.2/places/search/json?username=pradeep.pgu&LOCATIOn=28.5359586,77.3677936&query=atm&explain=true&bridge=true http/1.1" 200 3284
27.60.18.21 - - [27/Aug/2017:10:28:49 +0530] "GET /api/v1.2/places/search/json?username=pradeep.pgu&LOCATIOn=28.5359586,77.3677936&query=atms&explain=true&bridge=true http/1.1" 200 1452
27.60.18.21 - - [27/Aug/2017:10:28:52 +0530] "GET /api/v1.2/places/nearby/json?&refLOCATIOn=28.5359586,77.3677936&keyword=FINATM http/1.1" 200 3283
27.60.18.21 - - [27/Aug/2017:10:29:06 +0530] "GET /api/v1.2/places/search/json?username=pradeep.pgu&LOCATIOn=28.5359586,77.3677936&query=co&explain=true&bridge=true http/1.1" 200 3415
27.60.18.21 - - [27/Aug/2017:10:29:06 +0530] "GET /api/v1.2/places/search/json?username=pradeep.pgu&LOCATIOn=28.5359586,77.3677936&query=cof&explain=true&bridge http/1.1" 200 2476
我想要的弹性索引字段如下:
username=
(在示例日志中为pradeep.pgu)之后的文本这样的事情有可能吗?gork过滤器是否对此有规定?问题是参数不是特定于订单的。
以上是大佬教程为你收集整理的logstash Apache日志的自定义日志过滤器全部内容,希望文章能够帮你解决logstash Apache日志的自定义日志过滤器所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。