如何将新的动态值(输入中没有)添加到logstash输出?

如何将新的动态值(输入中没有)添加到logstash输出?,logstash,logstash-configuration,Logstash,Logstash Configuration,我的输入具有Apr20 14:59:41248 Dataxyz格式的时间戳。 现在,在我的输出中,我需要以下格式的时间戳: **日月月日小时:分钟:第二年数据XYZ**。我能够从输入中删除时间戳。但我不太确定如何添加新的时间戳 我在接收输入时使用grok匹配消息: match=>[“message”,“%{WORD:WORD}%{TIME:TIME}%{greedydydata:content}”] 我尝试使用mutate add_字段,但未能成功增加当天的价值add_field=>[“time

我的输入具有Apr20 14:59:41248 Dataxyz格式的时间戳。 现在,在我的输出中,我需要以下格式的时间戳: **日月月日小时:分钟:第二年数据XYZ**。我能够从输入中删除时间戳。但我不太确定如何添加新的时间戳

我在接收输入时使用grok匹配消息:
match=>[“message”,“%{WORD:WORD}%{TIME:TIME}%{greedydydata:content}”]

我尝试使用mutate add_字段,但未能成功增加当天的价值
add_field=>[“timestamp”,“%{DAY}”]
。我得到的输出是单词“DAY”,而不是DAY的值。有人能告诉我们错过了什么吗


您需要将其搜索到各个命名字段中,然后可以在“添加”字段中引用这些字段

因此,您的grok将以如下方式开始:

%{MONTH:month}%{MONTHDAY:mday}
mutate {
    add_field => {
        "newField" => "%{mday} %{month}"
    }
}
然后你可以像这样把它们放在一起:

%{MONTH:month}%{MONTHDAY:mday}
mutate {
    add_field => {
        "newField" => "%{mday} %{month}"
    }
}

你可以核对我的答案,我认为这对你很有帮助

grok { 
  match => { "message" => "%{TIMESTAMP_ISO8601:time} \[%{NUMBER:thread}\] %{LOGLEVEL:loglevel} %{JAVACLASS:class} - %{GREEDYDATA:msg}" } 
}

if "Exception" in [msg] {
 mutate {
  add_field => { "msg_error" => "%{msg}" }
}
}

可以使用自定义grok模式提取/重命名字段


您可以类似地提取其他字段,并在mutate filter中重新排列/播放这些字段。有关更多信息,请参阅。

谢谢您的回复。但我的输入中只有Apr20 14:59:41248。在我的输出中,我需要添加日月月日小时:分钟:第二年。不输入日期。我也不知道如何将4月20日分为月和月两天,因为它将在一起。Apr和20之间没有空格。这就是我必须将它拼成一个单词的原因。请帮助。因为%{MONTH}定义为需要空格,所以请创建您自己的版本(例如%{MONTHNOSPACES})。这不会。我不确定这个答案对我的问题有何帮助。我需要知道如何搜索Apr20**(没有空格),并将其更改为**天-月-月-日格式