LogStash 字符串消息解析为 JSON 格式
LogStash String message parse to JSON format
我正在尝试将我的日志消息解析为 JSON 格式。
我在 LogStash 中输入了下一条 JSON 消息:
{
...
field 1: xxx,
message: "----------- SCAN SUMMARY -----------\nKnown viruses: 8520944\nEngine version: 0.102.4\nScanned directories: 408\nScanned files: 1688\nInfected files: 0\nTotal errors: 50\nData scanned: 8.93 MB\nData read: 4.42 MB (ratio 2.02:1)\nTime: 22.052 sec (0 m 22 s)\n",
fieldX: ...
}
我想将消息字段转换为 JSON 格式为:
message:
{
known_viruses: 8520944,
engine_version: 0.102.4
scanned_directories: 408,
...
}
我试过在不同的步骤中做到这一点,首先用“\n”剖析行,但没有用:
dissect {
mapping => {
"message" => "%{removeField}\n%{viruses}\n%{engine_version}"
}
}
也尝试过 whit mutate,但相同(不分裂):
mutate {
split => ["message", "\n"]
}
还有ruby(相同):
ruby {
event["message"] = event["message"].split("\n")
}
知道如何将消息字符串转换为有效的 JSON 格式吗?
如果格式始终采用相同的顺序,您可以考虑使用 grok 过滤器插件:
https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html
我认为模式可以解决问题,如果您想使用时间的数值作为秒数,您可以稍微更改模式以及文件大小...:[=12= ]
----------- SCAN SUMMARY -----------\nKnown viruses: %{NUMBER:known_viruses}\nEngine version: %{DATA:engine_version}\nScanned directories: %{NUMBER:scanned_directories}\nScanned files: %{NUMBER:scanned_files}\nInfected files: %{NUMBER:infected_files}\nTotal errors: %{NUMBER:total_errors}\nData scanned: %{DATA:data_scanned}\nData read: %{DATA:data_read}\nTime: %{DATA:time}\n
我正在尝试将我的日志消息解析为 JSON 格式。
我在 LogStash 中输入了下一条 JSON 消息:
{
...
field 1: xxx,
message: "----------- SCAN SUMMARY -----------\nKnown viruses: 8520944\nEngine version: 0.102.4\nScanned directories: 408\nScanned files: 1688\nInfected files: 0\nTotal errors: 50\nData scanned: 8.93 MB\nData read: 4.42 MB (ratio 2.02:1)\nTime: 22.052 sec (0 m 22 s)\n",
fieldX: ...
}
我想将消息字段转换为 JSON 格式为:
message:
{
known_viruses: 8520944,
engine_version: 0.102.4
scanned_directories: 408,
...
}
我试过在不同的步骤中做到这一点,首先用“\n”剖析行,但没有用:
dissect {
mapping => {
"message" => "%{removeField}\n%{viruses}\n%{engine_version}"
}
}
也尝试过 whit mutate,但相同(不分裂):
mutate {
split => ["message", "\n"]
}
还有ruby(相同):
ruby {
event["message"] = event["message"].split("\n")
}
知道如何将消息字符串转换为有效的 JSON 格式吗?
如果格式始终采用相同的顺序,您可以考虑使用 grok 过滤器插件: https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html
我认为模式可以解决问题,如果您想使用时间的数值作为秒数,您可以稍微更改模式以及文件大小...:[=12= ]
----------- SCAN SUMMARY -----------\nKnown viruses: %{NUMBER:known_viruses}\nEngine version: %{DATA:engine_version}\nScanned directories: %{NUMBER:scanned_directories}\nScanned files: %{NUMBER:scanned_files}\nInfected files: %{NUMBER:infected_files}\nTotal errors: %{NUMBER:total_errors}\nData scanned: %{DATA:data_scanned}\nData read: %{DATA:data_read}\nTime: %{DATA:time}\n