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

如何用Grok Filter筛选格式化带***标记的应用日志并导入Kibana?

如何用Grok Filter处理带标记的应用日志并导入Kibana?

针对你的需求,我来帮你一步步实现这个日志处理流程,用Logstash的Grok Filter结合条件判断就能搞定,具体步骤如下:

1. 先筛选目标日志行

首先我们要过滤掉所有不带***标记的日志,只保留需要处理的行。在Logstash的filter块里用条件判断实现:

if "***" not in [message] {
  drop {} # 直接丢弃无关日志行,减少不必要的处理
}

2. 编写Grok模式解析字段

观察你的日志示例,带***的行分两种类型:带主叫/被叫号码的Answer call行,以及无号码的Hangup call行。我们需要分别编写Grok模式来匹配这两种情况,精准提取你需要的字段:

完整的Filter配置

filter {
  # 第一步:过滤掉不带***的日志
  if "***" not in [message] {
    drop {}
  } else {
    # 第二步:用Grok解析日志字段
    grok {
      match => { "message" => [
        # 匹配带号码的Answer call日志,提取所有目标字段
        "%{TIMESTAMP_ISO8601:Logtimestamp} %{NUMBER:Channel_id:int} :Answer call from %{NUMBER:Source_number} for %{NUMBER:Destination_Number} %{GREEDYDATA}***",
        # 匹配Hangup call日志,仅提取时间和Channel_id
        "%{TIMESTAMP_ISO8601:Logtimestamp} %{NUMBER:Channel_id:int} :Hangup call ***"
      ] }
      # 可选:移除原始message字段,减少数据冗余
      remove_field => ["message"]
    }

    # 可选:给无号码的日志行设置默认值(避免Kibana中字段缺失)
    if ![Source_number] {
      mutate {
        add_field => {
          "Source_number" => "N/A"
          "Destination_Number" => "N/A"
        }
      }
    }

    # 关键:将提取的Logtimestamp转换为Kibana默认识别的时间字段@timestamp
    date {
      match => ["Logtimestamp", "yyyy-MM-dd HH:mm:ss"]
      target => "@timestamp"
    }
  }
}

配置细节说明

  • Grok模式拆解:
    • %{TIMESTAMP_ISO8601:Logtimestamp}:匹配标准时间格式,映射到Logtimestamp字段
    • %{NUMBER:Channel_id:int}:匹配数字类型的Channel ID,并指定为整数类型(方便后续聚合分析)
    • %{NUMBER:Source_number}和%{NUMBER:Destination_Number}:精准提取主叫和被叫号码
    • %{GREEDYDATA}:匹配日志中号码到***之间的任意内容(比如路径信息),确保不会因为额外内容导致匹配失败
  • 日期转换:Kibana默认使用@timestamp字段作为时间轴,所以用date插件把我们提取的Logtimestamp转成这个字段,方便后续做时间范围筛选
  • 默认值处理:对于Hangup call这类无号码的行,用mutate插件给缺失的字段设置默认值N/A,避免Kibana中出现字段缺失的情况

3. 测试配置正确性

在启动Logstash之前,建议先测试配置的语法和匹配效果:

bin/logstash -f your_config_file.conf --config.test_and_exit

也可以用Logstash自带的Grok调试界面,单独验证你的Grok模式是否能正确匹配目标日志行。

4. 导入到Kibana

配置好Logstash的output块(输出到你的Elasticsearch集群),启动Logstash后,在Kibana中创建对应的索引模式,就能看到结构化的日志数据了——你可以直接按Logtimestamp、Channel_id等字段进行筛选、聚合和分析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:57:20