如何使用filebeat读取json文件并通过logstash发送到elasticsearch

Posted

技术标签:

【中文标题】如何使用filebeat读取json文件并通过logstash发送到elasticsearch【英文标题】:How to read json file using filebeat and send it to elasticsearch via logstash 【发布时间】:2019-10-31 17:24:48 【问题描述】:

这是我的 json 日志文件。我正在尝试通过我的 logstash 将文件存储到我的弹性搜索中。

"message":"IM: Orchestration","level":"info"
"message":"Investment Management","level":"info"

这是我的文件beat.yml

filebeat.inputs:
- type: log
  enabled: true
  paths:
   - D:/Development_Avecto/test-log/tn-logs/im.log
  json.keys_under_root: true
  json.add_error_key: true
processors:
 - decode_json_fields:
     fields: ["message"]
output.logstash:
  hosts: ["localhost:5044"]

input
    beats 
        port => "5044"
    


filter 
    json 
      source => "message"
       
   

output
    elasticsearch
        hosts => ["localhost:9200"]
        index => "data"
    

在 elasticserach 中无法查看。无法找到错误。 文件节拍日志

2019-06-18T11:30:03.448+0530 INFO registrar/registrar.go:134 从 D:\Development_Avecto\filebeat-6.6.2-windows-x86_64\data\registry 加载注册商数据 2019-06-18T11:30:03.448+0530 INFO registrar/registrar.go:141 从注册商加载的状态:10 2019-06-18T11:30:03.448+0530 WARN beater/filebeat.go:367 Filebeat 无法加载已配置模块的摄取节点管道,因为未配置/启用 Elasticsearch 输出。如果您已经加载了 Ingest Node 管道或正在使用 Logstash 管道,则可以忽略此警告。 2019-06-18T11:30:03.448+0530 INFO crawler/crawler.go:72 加载输入:1 2019-06-18T11:30:03.448+0530 INFO log/input.go:138 配置路径:[D:\Development_Avecto\test-log\tn-logs\im.log] 2019-06-18T11:30:03.448+0530 INFO input/input.go:114 开始输入类型:log;编号:16965758110699470044 2019-06-18T11:30:03.449+0530 INFO crawler/crawler.go:106 加载和启动输入已完成。启用输入:1 2019-06-18T11:30:34.842+0530 INFO [monitoring] log/log.go:144 过去 30 秒内的非零指标 "monitoring": "metrics": "beat":"cpu": "system":"ticks":312,"time":"ms":312,"total":"ticks":390,"time":"ms":390,"value ":390,"user":"ticks":78,"time":"ms":78,"handles":"open":213,"info":"ephemeral_id" :"66983518-39e6-461c-886d-a1f99da6631d","正常运行时间":"ms":30522,"memstats":"gc_next":4194304,"memory_alloc":2963720,"memory_total":4359488," rss":22421504,"filebeat":"events":" added":1,"done":1,"harvester":"open_files":0,"running":0," libbeat":"config":"module":"running":0,"output":"type":"logstash","pipeline":"clients":1,"events" :"active":0,"filtered":1,"total":1,"registrar":"states":"current":10,"update":1,"writes": "success":1,"total":1,"system":"cpu":"cores":4 2

【问题讨论】:

您是否在同一台机器上运行所有服务?还要检查 logstash 和 elasticsearch 日志是否有任何错误。 您好,先生,是的,在同一台机器上运行所有服务。在 elasticsearch 和 logstash 中我都没有看到任何错误。当我直接连接到弹性搜索时,我能够查看弹性中的数据。 filebeat.inputs:-类型:启用日志:真实路径:-D:/Development_Avecto/test-log/tLog-file.log input_type:日志 json.keys_under_root:真实 json.add_error_key:真实处理器:-drop_fields:字段:[' beat.hostname'] output.elasticsearch: hosts: ["localhost:9200"] index: "data" 当我尝试连接以下代码的logstash时,它不起作用并且日志中没有显示任何错误。输入beats port => "5044" filter json source => "message" output elasticsearch hosts => ["localhost:9200"] index => "data" 即使我也面临同样的问题 【参考方案1】:

https://www.elastic.co/guide/en/ecs-logging/dotnet/master/setup.html

检查页面底部的第 3 步,了解您需要放入 filebeat.yaml 文件的配置:

filebeat.inputs:
- type: log
  paths: /path/to/logs.json
  json.keys_under_root: true
  json.overwrite_keys: true
  json.add_error_key: true
  json.expand_keys: true

【讨论】:

嘿,我非常感谢你!!!我试图让这个工作好几天。在您的帮助下,它就可以工作了……太好了。是的,我可以阅读文档......有点不清楚我还需要什么。它实际上需要这条线......太棒了!您可以免费享用一杯咖啡 (helloguest-solutions.com/de/index.html) 大家...这是一种将filebeat json直接注入弹性搜索的解决方案。我不需要logstash。

以上是关于如何使用filebeat读取json文件并通过logstash发送到elasticsearch的主要内容,如果未能解决你的问题,请参考以下文章

Filebeat中文指南

使用 filebeat 和 logstash 将 syslog 转换为 json

通过 filebeats 或 nxlog 等日志收集器读取 XEL(SQL Server 扩展事件文件)

FileBeats配置应用详解

如何仅使用 JavaScript 正确读取 json 文件 [重复]

如何读取 JSON 文件并传输到 Flask 组织的 HTML 中的 Javascript?