0

我的输入具有 Apr20 14:59:41248 Dataxyz 格式的时间戳。现在在我的输出中,我需要以下格式的时间戳:**Day Month Monthday Hour:Minute:Second Year DataXYZ **。我能够从输入中删除时间戳。但我不太确定如何添加新的时间戳。

我在接收输入时使用 grok 匹配了消息: match => ["message","%{WORD:word} %{TIME:time} %{GREEDYDATA:content}"]

我尝试使用 mutate add_field.but 没有成功添加 DAY 的值。add_field => [ "timestamp","%{DAY}"].我得到的输出是单词'DAY'而不是DAY的值。有人可以对错过的内容有所了解。

在此处输入图像描述

4

3 回答 3

0

您需要将其深入到各个命名字段中,然后您可以在 add_field 中引用这些字段。

所以你的 grok 会像这样开始:

%{MONTH:month}%{MONTHDAY:mday}

然后你可以像这样把它们重新组合在一起:

mutate {
    add_field => {
        "newField" => "%{mday} %{month}"
    }
}
于 2015-07-14T01:34:11.000 回答
0

您可以查看我的答案,我认为这对您很有帮助。

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

if "Exception" in [msg] {
 mutate {
  add_field => { "msg_error" => "%{msg}" }
}
}
于 2015-07-14T07:32:47.960 回答
0

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

在此处输入图像描述

您可以类似地提取其他字段并在 mutate 过滤器中重新排列/播放它们。有关详细信息,请参阅自定义模式

于 2015-07-14T16:30:13.470 回答