来自grok筛选器的Logstash添加字段

来自grok筛选器的Logstash添加字段,logstash,logstash-grok,logstash-configuration,Logstash,Logstash Grok,Logstash Configuration,是否可以使用grok和mutate将消息与logstash中的新字段相匹配 日志示例: "<30>Dec 19 11:37:56 7f87c507df2a[20103]: [INFO] 2018-12-19 16:37:56 _internal (MainThread): 192.168.0.6 - - [19/Dec/2018 16:37:56] \"\u001b[37mGET / HTTP/1.1\u001b[0m\" 200 -\r" 生成的日志文件呈现这种情况,其中cont

是否可以使用grok和mutate将消息与logstash中的新字段相匹配

日志示例:

"<30>Dec 19 11:37:56 7f87c507df2a[20103]: [INFO] 2018-12-19 16:37:56 _internal (MainThread): 192.168.0.6 - - [19/Dec/2018 16:37:56] \"\u001b[37mGET / HTTP/1.1\u001b[0m\" 200 -\r"
生成的日志文件呈现这种情况,其中containerName的值没有从grok引用,它只是一个字符串文字:

"container_id": "%{containerName}" 
我正在尝试让conf创建:

"container_id": "7f87c507df2a"

显然,containerName的价值并没有与grok联系在一起。我想做的事情可能吗

正如评论中所解释的,我的grok模式不正确。对于任何可能在这篇文章中需要grok帮助的人来说,让构建你的模式少花点时间

以下是工作快照:

filter {
  grok {
    match => [ "message", "\A%{SYSLOG5424PRI}%{SYSLOGTIMESTAMP}%{SPACE}%{BASE16NUM:docker_id}%{SYSLOG5424SD}%{GREEDYDATA:python_log_message}" ]
    add_field => { "container_id" => "%{docker_id}" }    
  }  
}

我不确定我是否理解了这个问题,但如果是这样的话,一个简单的
过滤器{mutate{copy=>{“containerName”=>“container\u id”}}
应该做这项工作。另一件事你可以尝试添加
add\u字段=>{“container\u id”=>“%{containerName}
直接到
grok
部分,但是如果是“containerName”在grok模式中不匹配。键/值对未添加到结果中。@Quali也不起作用,是否有更简单的方法来测试我的grok匹配是否正常工作?然而,logstash的日志中似乎没有错误。我用一个示例日志文件更新了这篇文章,我想做的是,您可以使用的模式似乎与example日志行不匹配。
filter {
  grok {
    match => [ "message", "\A%{SYSLOG5424PRI}%{SYSLOGTIMESTAMP}%{SPACE}%{BASE16NUM:docker_id}%{SYSLOG5424SD}%{GREEDYDATA:python_log_message}" ]
    add_field => { "container_id" => "%{docker_id}" }    
  }  
}