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

寻求适配特定HTTP响应日志的ElasticSearch Grok匹配模式

适配该HTTP响应日志的Elasticsearch Grok模式

针对你提供的HTTP响应日志,以下是可精准提取各关键字段的Grok模式,涵盖请求ID、响应耗时、HTTP状态、响应头和响应体:

分步拆解的Grok片段

  • 提取响应标识与请求ID:

    Outgoing Response: %{DATA:response_id}
    

    用%{DATA:response_id}捕获CUR-d13cfb432b1064f0这类请求ID。

  • 提取响应耗时:

    Duration: %{NUMBER:duration_ms:int} ms
    

    用%{NUMBER:duration_ms:int}将11转为整数类型的duration_ms字段。

  • 提取HTTP状态行:

    HTTP/%{NUMBER:http_version} %{NUMBER:http_status_code:int} %{DATA:http_status_text}
    

    分别捕获HTTP版本、状态码(转为整数)、状态描述文本。

  • 提取JSON响应体:

    %{GREEDYDATA:response_body}
    

    用%{GREEDYDATA}捕获空行后的完整JSON内容,后续可配合json过滤器将JSON解析为嵌套字段。

完整Grok模式

结合所有片段的完整Grok模式如下(注意需启用多行匹配规则,比如在Filebeat/Logstash中配置以Outgoing Response:作为日志起始行):

Outgoing Response: %{DATA:response_id}\nDuration: %{NUMBER:duration_ms:int} ms\nHTTP/%{NUMBER:http_version} %{NUMBER:http_status_code:int} %{DATA:http_status_text}\n%{GREEDYDATA:response_headers}\n\n%{GREEDYDATA:response_body}

优化建议

如果需要将响应头拆分为独立字段,建议先用Grok捕获所有响应头到response_headers字段,再通过kv过滤器拆分,示例配置如下:

filter {
  grok {
    match => { "message" => "Outgoing Response: %{DATA:response_id}\nDuration: %{NUMBER:duration_ms:int} ms\nHTTP/%{NUMBER:http_version} %{NUMBER:http_status_code:int} %{DATA:http_status_text}\n%{GREEDYDATA:response_headers}\n\n%{GREEDYDATA:response_body}" }
  }
  kv {
    source => "response_headers"
    field_split => "\n"
    value_split => ": "
    prefix => "header_"
  }
  json {
    source => "response_body"
    target => "response_json"
  }
}

配置后会生成header_Access-Control-Allow-Origin、response_json.code等结构化字段,方便后续分析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:25:15