You need to enable JavaScript to run this app. 如何编写Grok匹配模式实现Logstash日志解析提取指定字段
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Grok匹配模式实现Logstash日志解析提取指定字段

Grok匹配规则编写方案

原始日志样例

FMT="1358  15:41:07W19/03/21 (A) Interlocking Link 116 Restored" STY="A" AMSEQ="LINKFAIL" AMSST="RTN" ALTID="1358" TS="20210319154107" CP="LOC A" CP="LOC X" MP="104.95" MP="104.95" EQ="MDIPRIMARYOFF" POS="TC-NORTH"

目标提取字段

  • Time:值为15:41:07
  • Date:值为19/03/21
  • Message:值为Interlocking Link 116 Restored
  • Location:值为LOC X

完整Logstash Filter配置

filter {
  grok {
    match => { "message" => 'FMT="%{INT:temp_unnamed}  %{TIME:Time}W%{DATE_EU:Date} \(%{WORD}\) %{DATA:Message}" STY="%{DATA}" AMSEQ="%{DATA}" AMSST="%{DATA}" ALTID="%{DATA}" TS="%{DATA}" CP="%{DATA}" CP="%{DATA:Location}" MP="%{DATA}" MP="%{DATA}" EQ="%{DATA}" POS="%{DATA}"' }
    # 清理不需要的临时字段
    remove_field => ["temp_unnamed"]
  }
}

规则说明

  • 开头的%{INT:temp_unnamed}匹配FMT字段开头无实际意义的数字串,后续直接删除即可
  • %{TIME:Time}自动匹配HH:MM:SS格式的时间串,直接存入Time字段
  • 固定字符W是日期和时间的分隔符,直接写死匹配即可
  • %{DATE_EU:Date}适配日/月/年格式的欧洲日期规则,刚好匹配19/03/21存入Date字段
  • \(%{WORD}\)匹配括号包裹的分类标识,不需要提取就无需命名字段
  • %{DATA:Message}匹配FMT字段内剩余的事件正文内容,存入Message字段
  • 按日志属性顺序匹配到第二个CP参数时,直接将取值存入Location字段,刚好对应需要的LOC X值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 06:45:06