gpt4 book ai didi

json - 使用正则表达式与JSON进行过滤

转载 作者:行者123 更新时间:2023-12-03 01:18:55 26 4
gpt4 key购买 nike

在过滤日志时,Logstash可以使用grok解析接收到的日志文件(假设它是Nginx日志)。使用grok进行解析需要您正确设置字段类型-例如%{HTTPDATE:timestamp}

但是,如果Nginx开始以JSON格式登录,则Logstash几乎不会进行处理。它只是创建索引,然后输出到Elasticseach。这使我相信只有Elasticsearch可以从它获得索引的“方式”中受益。

Elasticseatch具有用Regex和JSON处理过的索引数据是否有任何优势?例如,这是否会影响查询时间?

最佳答案

对于Elasticsearch,解析消息的方式无关紧要,它没有任何信息,您只需要发送一个JSON文档,其中包含要存储的字段并根据索引映射进行搜索。

但是,如何解析消息对于Logstash至关重要,因为它会直接影响性能。

例如,考虑以下消息:

2020-04-17 08:10:50,123 [26] INFO ApplicationName - LogMessage From The Application

如果您希望能够在此消息的每个部分上搜索和应用过滤器,则需要将其解析为字段。
timestamp: 2020-04-17 08:10:50,123
thread: 26
loglevel: INFO
application: ApplicationName
logmessage: LogMessage From The Application

要解析此消息,您可以使用不同的过滤器,其中一个是 grok,它使用正则表达式,但是如果您的消息始终具有相同的格式,则可以使用另一个过滤器,例如 dissect,在这种情况下,两者都可以实现相同的目的,但是虽然 grok使用正则表达式来匹配字段,但是 dissect仅是位置信息,当您每秒具有大量事件时,这会在CPU使用方面产生巨大差异。

现在考虑您具有相同的消息,但格式为JSON。
{ "timestamp":"2020-04-17 08:10:50,123", "thread":26, "loglevel":"INFO", "application":"ApplicationName","logmessage":"LogMessage From The Application" } 

Logstash解析此消息更加轻松快捷,您可以使用 input编解码器在 json中完成此操作,也可以在过滤器块中使用 json过滤器。

如果可以控制如何创建日志消息,请选择不需要使用 grok的选项。

关于json - 使用正则表达式与JSON进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61269396/

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