配置FileBeat以摄取和解析.ndjson文件

yduiuuwa  于 2022-10-06  发布在  ElasticSearch
关注(0)|答案(1)|浏览(161)

我是ElasticSearch、Kibana和FileBeat这一行的新手。

我使用decode_json_fields配置(在filebeat.yml中,如https://www.elastic.co/guide/en/beats/filebeat/current/decode-json-fields.html[1]所述,并在https://www.elastic.co/guide/en/beats/filebeat/current/filtering-and-enhancing-data.html#decode-json-example[2]中提供了一个示例),获得了有关如何让FileBeat将JSON文件摄取到Elasticearch中的信息。

然而,即使按照[2]中提供的例子,我也没有得到预期的结果。我甚至找到了一个旧条目(https://www.elastic.co/blog/structured-logging-filebeat[3]),但没有更好的结果。

这是以下尝试之一(filebeat.yml):

filebeat.inputs:
- type: filestream
  paths: 
    - c:\tmp\tmf\events-*.ndjson
  json.keys_under_root: true
  json.add_error_key: true
  #json.message_key: event
  fields: ["inner"]

output.elasticsearch:
  hosts: ["localhost:9200"]
  protocol: "https"
  username: ...
  password: ...

..。这是另一个:

filebeat.inputs:
- type: filestream
  paths: 
    - c:\tmp\tmf\events-*.ndjson
  #json.keys_under_root: true
  #json.add_error_key: true
  #json.message_key: event
  #fields: ["inner"]

processors:
  - decode_json_fields:
      fields: [ "outer", "inner" ]
      max_depth: 1
      target: ""
      add_error_key: true

下面是我的样例JSON日志文件:

{ "outer": "value", "inner": "{"data": "value"}" }

下面是通过http://localhost:5601/app/dev_tools#/console:进行查询时的外观

  • 查询:
GET /.ds-filebeat-8.3.2-2022.09.28-000001/_search?_source_excludes=ecs,host,os
{
  "query": {
    "match": {
      "log.file.path": {
        "query": """c:tmptmfevents-20220930-11.ndjson"""
      }
    }
  }
}
  • 返回的文档(文件内容在message字段):
{
  "hits": {
    "hits": [
      {
        "_source": {
          "input": {
            "type": "filestream"
          },
          "@timestamp": "2022-09-30T23:26:01.087Z",
          },
          "message": """{ "outer": "value", "inner": "{"data": "value"}" }""",
        }
      }
    ]
  }
}

无论我如何调整filebeat.yml配置文件,JSON文件都不会被解析。

如有任何帮助,我们不胜感激。

参考资料:
1.https://www.elastic.co/guide/en/beats/filebeat/current/decode-json-fields.html
2.https://www.elastic.co/guide/en/beats/filebeat/current/filtering-and-enhancing-data.html#decode-json-example
3.https://www.elastic.co/blog/structured-logging-filebeat

1zmg4dgp

1zmg4dgp1#

TLDR;

您没有向filebeat提供文件布局的知识。

您可能应该为filebeat提供parser

解决方案

filebeat.inputs:
- type: filestream
  paths: 
    - c:\tmp\tmf\events-*.ndjson
  parsers:
    - ndjson:
      target: ""
      add_error_key: true

相关问题