gpt4 book ai didi

elasticsearch - 无法将多行事件从Filebeat S3输入推送到Logstash

转载 作者:行者123 更新时间:2023-12-02 23:43:19 24 4
gpt4 key购买 nike

我正在ELK上进行PoC,遇到了一个问题。我看过关于describe.elastic.co和StackOverflow的许多主题,但似乎没有任何帮助。
我试图通过Filebeat(使用S3输入)配置多行事件,并在Logstash中使用它们。我面临的问题是,即使在Filebeat中设置了多行配置之后,我仍然将Stacktrace的行视为Logstash中的单个事件。
由于Logstash接收到的不是堆栈跟踪的行而是单个行,因此最终导致_grokparsefailure,这是完全可以理解的,因为FB在将这些行发送到Logstash之前应该将这些行合并到同一事件中。
其他单行事件有望正常运行,我能够在Kibana上对其进行可视化。
filebeat.yml:

filebeat.inputs:

- type: s3
queue_url: https://sqs.aaaaa.amazonaws.com/xxxxxxxx/zzzzzz
visibility_timeout: 300s
multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
multiline.negate: true
multiline.match: after
Logstash配置:
input {
beats {
port => 5044
host => "0.0.0.0"
}
}

filter {
grok {
match => {"message" => "%{TIMESTAMP_ISO8601:timestamp} %{GREEDYDATA:logType} %{LOGLEVEL:logLevel}%{SPACE}\[%{GREEDYDATA:key1}\] \[%{GREEDYDATA:key2}\] \[%{GREEDYDATA:key3}\] \[%{GREEDYDATA:sourceIP}\] %{GREEDYDATA:message}"}
overwrite => [ "message" ]
}

date {
match => ["timestamp", "yyyy-MM-dd HH:mm:ss,SSS"]
}
}
这是两个示例日志语句,其中第二个我试图合并为一个事件:
2020-08-18 00:30:52,481 detailed_logs ERROR    [abc] [xyz] [def] [127.0.0.1] Exception raised. Trace:
2020-08-18 00:30:52,483 detailed_logs ERROR Traceback (most recent call last):
File "/Users/vvv/Documents/ttt.py", line 93, in get
x = y.perform(abc)
File "/Users/vvv/Documents/ttt.py", line 283, in operate
raise exception
File "/Users/vvv/Documents/ttt.py", line 169, in operate
d["abb"] = n["xy"]
AttributeError: 'model' object has no attribute 'create1d_on'
我的直觉告诉我,Filebeat S3输入可能不支持多行,因为我无法在 official doc中找到相同的提及,而其 Log input counterpart显然提到了相同的提及。但是话又说回来,我可能是错的。
不胜感激朝着正确的方向前进。

最佳答案

我正在回答我自己的问题,并以说这不是对我提出的问题的有效答案作为开头,但是这是解决了我的迫切要求并已部署的解决方法。
由于用于S3输入的Filebeat多行不能按预期方式工作,并且Logstash多行编解码器不是Elastic强烈推荐的(标记为IMPORTANT here的段落),我最终通过使用以下命令创建一个实用程序来平整整个应用程序的堆栈跟踪目的的近似结构:

dictionary = {}
counter = 0

for line in lines:
if line and line.strip():
dictionary[counter] = line.strip()
counter += 1

return json.dumps(dictionary)
无论何时使用 traceback.format_exc()将异常转储到日志中,该跟踪都将作为参数传递给上述实用程序,然后记录为ERROR。
当然,在整个应用程序范围内进行更改都需要一定的人工,但是现在,根据要求,当在Kibana中查看时,以下构造将作为单个事件出现:
{"0": "Traceback (most recent call last):", "1": "File "/Users/vvv/Documents/ttt.py", line 93, in get", "2": "x = y.perform(abc)", "3": "File "/Users/vvv/Documents/ttt.py", line 283, in operate", "4": "raise exception", "5": "File "/Users/vvv/Documents/ttt.py", line 169, in operate", "6": "d["abb"] = n["xy"]", "7": "AttributeError: 'model' object has no attribute 'create1d_on'"}
任何反馈,建议和建议都非常欢迎。

关于elasticsearch - 无法将多行事件从Filebeat S3输入推送到Logstash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63469076/

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