我尝试用logstash解析一些json,目前我要输入的文件具有以下结构(简化):
-4: {"audit":{"key1":"value1","key2":"value2"}}
-4: {"audit":{"key1":"value1","key2":"value2"}}
因此,我需要删除-4:前缀,以便使用json正确解析文件。不幸的是,我不能将json编解码器用于输入插件,因为它的格式不正确。因此,我对管道的要求是:
我尝试使用以下管道,这给了我一个解析错误:
input {
tcp {
port => 5001
codec => multiline {
pattern => "^-\d:."
what => previous
}
#codec => json_lines
type => "raw_input"
}
}
filter {
if [type] == "raw_input" {
mutate {
gsub => ["message", "^-\d:.", ""]
}
}
json {
source => "message"
}
mutate {
convert => { "[audit][sequenceNumber]" => "integer" }
add_field => { "test" => "%{[audit][sequenceNumber]}"}
}
}
output {
file {
path => "/var/log/logstash/debug-output.log"
codec => line { format => "%{message}" }
}
}
是否可以使用logstash实现此目的?有什么建议怎么做吗?
答案 0 :(得分:0)
我会使用dissect
filter
if [type] == "raw_input" {
dissect {
mapping => {
"message" => "-%{num}: %{msg}"
}
}
}
json {
source => "msg"
}