【发布时间】:2018-02-09 05:10:03
【问题描述】:
我是 ELK 堆栈的新手。我有一个filebeat服务将日志发送到logstash,并且在logstash中使用grok过滤器,数据被推送到elasticsearch索引。
我正在使用gork 过滤器和match => { "message" => "%{COMBINEDAPACHELOG}"} 来解析数据。
我的问题是,我希望将字段名称及其值存储在弹性搜索索引中。我的不同版本的日志如下:
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
弹性索引中我想要的字段如下:
- client_ip => 类型必须与 kibana 用于 IP 映射的兼容。
- 时间戳 => 日期时间格式。 => 日志的时间
- method => text => 被调用的方法,例如获取、发布
- 版本 => 十进制数 => 例如1.2 / 1.0(在示例日志中为 v1.2)
- username => text =>
username=之后的文本(在示例日志中为 pradeep.pgu) - location =>geo_point type => 该值同时具有纬度和经度,因此 kibana 可以在地图上绘制它们。
- search_query => text => 被搜索的内容(在示例中来自“keyword=”或“query=”这两个字段之一)。这两个字段中的任何一个都将存在,并且存在的一个必须使用它的值。
- response_code => number => 响应的代码。 (在样本中为 200)
- data_transfered => number => 传输的数据量(样本中的最后一个数字)。
这样的事情可能吗? gork 过滤器是否对此有规定?问题是参数不是特定于顺序的。
【问题讨论】:
标签: elasticsearch logstash kibana