我是ELK堆栈的新手。我有一个文件拍服务,将日志发送到logstash,并在logstash中使用grok
过滤器,将数据推送到elasticsearch
索引。
我正在使用gork
筛选器match => { "message" => "%{COMBINEDAPACHELOG}"}
来解析数据。
我的问题是,我希望将字段名称及其值存储在elasticsearch索引中。我的日志的不同版本如下:
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过滤器是否对此有规定?问题是参数不是特定于订单的。
从开始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
,根据存在的字段,我们使用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" }
}
}
}
请帮助我plz为Apache日志添加一个自定义部分,我希望在Apache access中获得以下代码片段的结果。日志,不仅在UI上: 现在我有以下的外出日志 (IP)-[24/Apr/2016:16:55:31 0000]“GET/tt.php?cmd=ls HTTP/1.1“200 331”-“Mozilla/5.0(Macintosh;英特尔Mac OS X 10_10_5)AppleWebK
日志采集配置 在应用详情页中间有一个叫作“日志采集”的模块 点击右边的“添加”按钮,在弹出的对话框中选择日志的路径及正则规则 文件路径:你日志文件的位置 日志规则:如果没有特殊需求的话默认就好 提交后服务会自动重启动。 日志采集 如果配置了上面采集器,那么它会向服务所在的Pod注入一个Filebeat采集器对应用服务的业务日志进行采集。把采集到的日志入到kafka集群,然后logstash进行消息
我有一个要求,其中写入日志文件的日志条目需要具有特定格式。 例如: 2016-01-28 21:42:48,399 INFO field d1: value e1;字段2: value e2;字段3: value e3;字段4: value e4 我们正在使用日志返回进行日志记录。字段的值存储在 java 对象中。有关如何使用自定义附加器/布局或任何其他方法实现这一点的任何建议或指针都将有很大的帮
我试图建立一个应用程序,使用log4j使日志文件。日志文件的位置通过log4j.properties文件提供。 到目前为止,它运行良好,但我想将spark日志与我从代码生成的日志分开。或者至少在日志文件中打印我的日志消息。 有办法吗? log4j.properties
本文向大家介绍magento 自定义日志文件,包括了magento 自定义日志文件的使用技巧和注意事项,需要的朋友参考一下 示例 这将登录到
将PostSharp用于C#应用程序,我有以下场景: Namespace_ACustomLoggingMethod Namespace_B.DoThings thingMethod(实际上是几种不同的方法) DoMomthingMethod调用CustomLoggingMethod,它以所需的格式创建日志条目并且运行良好。正如预期的那样,日志条目将源记录为CustomLoggingMethod,我