gpt4 book ai didi

elasticsearch - 将String转换为JSON,以便可以在Kibana/Elasticsearch中搜索

转载 作者:行者123 更新时间:2023-12-02 23:07:56 30 4
gpt4 key购买 nike

我在Windows机器上运行ElasticsearchFilebeatKibanaFilebeat日志具有正确的日志文件,正在侦听路径。当我查看Kibana中的数据时,它看起来还不错。
我的问题是message字段是一个字符串。
一条日志行的示例:

12:58:09.9608 Trace {"message":"No more Excel rows found","level":"Trace","logType":"User","timeStamp":"2020-08-14T12:58:09.9608349+02:00","fingerprint":"226fdd2-e56a-4af4-a7ff-724a1a0fea24","windowsIdentity":"mine","machineName":"NAME-PC","processName":"name","processVersion":"1.0.0.1","jobId":"957ef018-0a14-49d2-8c95-2754479bb8dd","robotName":"NAME-PC","machineId":6,"organizationUnitId":1,"fileName":"GetTransactionData"}
因此,我现在想要的是将String转换为JSON,以便可以在 Kibana中搜索 level字段。
我已经看过 Filebeat了。我在那里尝试启用 LogStash。但是,随后数据不再提供给Elasticsearch。而且日志文件也不会生成到 LogStash文件夹中。
然后我通过 install guide下载了 LogStash,但不幸的是我收到了以下消息:
C:\Users\name\Desktop\logstash-7.8.1\bin>logstash.bat 
Sending
Logstash logs to C:/Users/mine/Desktop/logstash-7.8.1/logs which
is now configured via log4j2.properties ERROR: Pipelines YAML file is
empty. Location:
C:/Users/mine/Desktop/logstash-7.8.1/config/pipelines.yml usage:
bin/logstash -f CONFIG_PATH [-t] [-r] [] [-w COUNT] [-l LOG]
bin/logstash --modules MODULE_NAME [-M
"MODULE_NAME.var.PLUGIN_TYPE.PLUGIN_NAME.VARIABLE_NAME=VALUE"] [-t]
[-w COUNT] [-l LOG] bin/logstash -e CONFIG_STR [-t] [--log.level
fatal|error|warn|info|debug|trace] [-w COUNT] [-l LOG] bin/logstash
-i SHELL [--log.level fatal|error|warn|info|debug|trace] bin/logstash -V [--log.level fatal|error|warn|info|debug|trace]
bin/logstash --help
[2020-08-14T15:07:51,696][ERROR][org.logstash.Logstash ]
java.lang.IllegalStateException: Logstash stopped processing because
of an error: (SystemExit) exit
编辑:
我尝试仅使用 Filebeat。我在这里设置:
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
- add_docker_metadata: ~
- add_kubernetes_metadata: ~
- dissect:
tokenizer: '"%{event_time} %{loglevel} %{json_message}"'
field: "message"
target_prefix: "dissect"
- decode_json_fields:
fields: ["json_message"]
但这给了我:

dissect_parsing_error


删除 tokenizer上的“”的提示很有帮助。然后我得到:
index issue
我只是刷新了索引,消息消失了。真好
但是现在的问题是,如何在新字段中过滤某些内容?
kibana filter

最佳答案

消息说,您的管道配置为空。似乎您尚未配置任何管道。 Logstash可以解决这个问题(JSON filter plugin),但是Filebeat在这里就足够了。如果您不想引入其他服务,这是更好的选择。
它具有decode_json_fields选项,可将事件中包含JSON的特定字段转换为。这是documentation
对于将来的情况,您的整个事件是JSON,则可以在filebeat中进行解析,以配置json.message_key和相关的json.*选项。
编辑-将filebeat片段作为processorsdissecting示例添加到日志行,分为三个字段(event_time,loglevel,json_message)。然后,最近提取的字段json_message(其值是编码为字符串的JSON对象)将被decoded转换为JSON结构:

 ... 

filebeat.inputs:
- type: log
paths:
- path to your logfile

processors:
- dissect:
tokenizer: '%{event_time} %{loglevel} %{json_message}'
field: "message"
target_prefix: "dissect"

- decode_json_fields:
fields: ["dissect.json_message"]
target: ""

- drop_fields:
fields: ["dissect.json_message"]


...
如果要练习filebeat处理器,请尝试设置正确的事件时间戳记,该时间戳记来自已编码的json,并使用 timestamp processor写入@timestamp。

关于elasticsearch - 将String转换为JSON,以便可以在Kibana/Elasticsearch中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63413555/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com