我收到以下日志消息:
Jul 23 09:24:16 mmr mmr-core[5147]: Aweg3AOMTs_1563866656876839.mt GetProvider_v4
我将其运送到elasticsearch。
我想在logstash过滤器中对其进行解析,并从Aweg3AOMTs_1563866656876839.mt中创建id字段,除了我不想包含字母或其他字符,并且在id中仅包含数字!
到目前为止,我已经完成了:
%{SYSLOGTIMESTAMP:logtimestamp} %{HOSTNAME:hostname} %{DATA:type} %{USERNAME:id} %{GREEDYDATA:rest}
"logtimestamp": "Jul 23 09:24:16",
"hostname": "mmr",
"id": "Aweg3AOMTs_1563866656876839.mt",
"type": "mmr-core[5147]:"
如何跳过id字段中的字母和字符?
谢谢您的帮助!
答案 0 :(得分:0)
据我了解,您只需要1563866656876839
字段中的id
吗?您可以将Aweg3AOMTs_1563866656876839.mt
字符串分成三个字段:id_prefix
,id
和id_suffix
,然后remove不需要的部分。
尝试Grok Debugger的方式:
%{SYSLOGTIMESTAMP:logtimestamp}\s%{HOSTNAME:hostname}\s%{DATA:type}\s%{USERNAME:id_prefix}_%{NUMBER:id}\.%{GREEDYDATA:id_suffix}\s%{GREEDYDATA:rest}
Logstash配置:
# logstash.conf
…
filter {
grok {
match => {
"message" => "%{SYSLOGTIMESTAMP:logtimestamp}\s%{HOSTNAME:hostname}\s%{DATA:type}\s%{USERNAME:id_prefix}_%{NUMBER:id}\.%{GREEDYDATA:id_suffix}\s%{GREEDYDATA:rest}"
}
}
mutate {
remove_field => ["id_prefix", "id_suffix"]
}
}
…