Regex 如何在logstash中使用mutate和gsub替换部分值
我的日志文件中有如下内容:Regex 如何在logstash中使用mutate和gsub替换部分值,regex,logstash,Regex,Logstash,我的日志文件中有如下内容: DATATYPE::SERVICEPERFDATA TIMET::1519222690 HOSTNAME::localhost SERVICEDESC::Total Processes SERVICEPERFDATA::procs=59;250;400;0; SERVICECHECKCOMMAND::check_local_procs!250!400!RSZDT HOSTSTATE::UP HOSTSTATETYPE
DATATYPE::SERVICEPERFDATA TIMET::1519222690 HOSTNAME::localhost SERVICEDESC::Total Processes SERVICEPERFDATA::procs=59;250;400;0; SERVICECHECKCOMMAND::check_local_procs!250!400!RSZDT HOSTSTATE::UP HOSTSTATETYPE::HARD SERVICESTATE::OK SERVICESTATETYPE::HARD
我想替换SERVICEPERFDATA::procs=59;250;400;0;代码>我的消息中的这个键值对是这样的
SERVICEPERFDATA::59
因此,我可以使用kv过滤器将数据拆分为键和值
我试过使用Logstash mutate和gsub,但找不到合适的正则表达式来实现我的目标
谢谢,
Charan您可以使用捕获组捕获正则表达式的一部分,并在mutate/gsub配置的替换部分中使用它
mutate {
gsub => ["message","(?<=SERVICEPERFDATA::)procs=(\d+);\S+", "\1"]
}
变异{
gsub=>[“message”,(?Regex:或)(?您可以删除第一个和第三个元素的捕获组:。此外,如果您只想为SERVICEPERFDATA执行此操作::
您可以在前面加上前缀(?@ctwheels)谢谢您的评论。我已经用您的建议更新了我的答案。
mutate {
gsub => [
"fieldname", "procs=([^;]+)\S+", "\1",
]
}