在Kibana中将Filebeat消息字段拆分为多个字段

问题描述

我有message字段的以下数据,这些数据已通过文件信号传送到elasticseatch。我在这里不使用Logstash

2020-09-20 15:44:23 ::1 get / - 80 - ::1 mozilla/5.0+(windows+nt+10.0;+win64;+x64)+windows/537.36+(khtml,+like+gecko)+chrome/85.0.4183.102+chrome/537.36 - 200 0 0 10

我想在每个空间分割以上数据,并将它们分配到不同的字段,新字段应该在kibana发现门户网站中得到体现。

我们该怎么做?

我尝试在kibana中使用脚本化字段,但由于不了解脚本化字段查询,因此无法实现。

解决方法

您可以在Elasticsearch中设置接收管道,并使用Grok处理器将message字段解析为多个字段。参考:https://www.elastic.co/guide/en/elasticsearch/reference/master/grok-processor.html

例如,根据您的日志:

POST _ingest/pipeline/_simulate
{
  "pipeline": {
    "description" : "...","processors": [
      {
        "grok": {
          "field": "message","patterns": ["%{DATESTAMP:timestamp} %{DATA} %{WORD:request.method} %{DATA:request.url} - %{NUMBER:port} %{GREEDYDATA:useragent} - %{NUMBER:response.status_code} %{GREEDYDATA}"]
        }
      }
    ]
  },"docs":[
    {
      "_source": {
        "message": "2020-09-20 15:44:23 ::1 get / - 80 - ::1 mozilla/5.0+(windows+nt+10.0;+win64;+x64)+windows/537.36+(khtml,+like+gecko)+chrome/85.0.4183.102+chrome/537.36 - 200 0 0 10"
      }
    }
  ]
}