You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Logstash如何匹配正则最后一次出现结果以提取Jenkins日志中正确的GIT_COMMIT

解决Logstash提取Jenkins日志最后一次commit_id的方案

方案1:修改Grok正则(最优,无需额外插件)

利用正则的贪婪匹配特性,先匹配所有前面的内容,只保留最后一次Checking out Revision 对应的commit_id,配置如下:

grok {
    match => { "message_string" => ".*Checking out Revision (?<GIT_COMMIT>\w*)" }
}

规则说明:正则开头的.*会贪婪匹配尽可能长的字符串,直到找到最后一次出现的Checking out Revision 字符段,后续提取的\w*自然就是最后一次的commit_id,性能最高、配置最简单,适配现有场景。

方案2:全量捕获后取最后一位(适合需要保留所有commit_id的场景)

如果需要留存所有出现过的commit_id,可以先开启全匹配把所有结果存入数组,再取数组最后一位作为最终值:

  1. 首先修改grok配置开启全匹配:
grok {
    match => { "message_string" => "(?<GIT_COMMIT_ALL>(?<=Checking out Revision )\w*)" }
    match_all => true # 所有符合规则的结果会以数组形式存入GIT_COMMIT_ALL字段
}
  1. 新增ruby过滤器提取数组最后一位:
ruby {
    code => "event.set('GIT_COMMIT', event.get('GIT_COMMIT_ALL')[-1])"
    # 不需要保留全量commit的话可以加上下面的配置删除中间字段
    # remove_field => ["GIT_COMMIT_ALL"]
}

内容的提问来源于stack exchange,提问作者python_help

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 10:18:00