如何使用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 和 logstash 将 syslog 转换为 json
通过 filebeats 或 nxlog 等日志收集器读取 XEL(SQL Server 扩展事件文件)