我打算使用logstash对记录到文本文件中的json数据执行转换。
Logstash配置代码片段:
filter {
mutate {
gsub => [
# replace all '::~~' with '\r\n'
"alert.explanation.cnc-services.cnc-service.channel", "\:\:~~", "\\r\\n"
# "channel", "~~", "n"
]
}
}输入json:
{
"alert": {
"explanation": {
"cnc-services": {
`enter code here`"cnc-service": {
"channel": "TEXT1 TEXT2::~~TEXT3::~~TEXT4::~~TEXT5::~~TEXT6::~~::~~"
}
}
}
}
}所需输出:
{
"alert": {
"explanation": {
"cnc-services": {
"cnc-service": {
"channel": "TEXT1 TEXT2\r\nTEXT3\r\nTEXT4\r\nTEXT5\r\nTEXT6\r\n\r\n"
}
}
}
}
}输入的数据只是整个json文档的一部分,可能还有其他字段,但我只需要修改这个字段。此数据是由另一个应用程序生成的,不能修改。我在logstash上看到的文章中没有一篇谈到做这样的事情。
编辑:这里是logstash配置的输入部分
input {
# Read from log file
file {
codec => "json"
type => "fireeye"
path => ["/var/log/app/events.json"]
}
}发布于 2014-09-24 17:35:29
一些试验和错误表明,gsub数组中的键应该具有以下格式。
first_level[second_level][third_level]...所以在你的例子中:
filter {
mutate {
gsub => ["alert[explanation][cnc-services][cnc-service][channel]", "whatever"]
}
}我不知道它背后的逻辑是什么,但它是有效的。
https://stackoverflow.com/questions/20411216
复制相似问题