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

寻求腾讯云CDN日志适配Logstash的Grok解析格式

腾讯云CDN日志Logstash Grok解析方案

日志字段拆解

先梳理每条日志的字段对应关系:

  • 访问时间戳(格式:yyyyMMddHHmmss)
  • 客户端IP地址
  • CDN加速域名
  • 请求完整URI(含查询参数)
  • 响应内容大小(字节)
  • 响应耗时(毫秒)
  • 未知状态值(示例中为-1)
  • HTTP响应状态码
  • 占位字段(固定为NULL)
  • 缓存命中计数
  • User-Agent(带引号)
  • 请求媒体片段范围(带引号)
  • HTTP请求方法
  • HTTP协议版本
  • 缓存命中状态(hit/miss等)
  • 未知标识字段(示例中为-或0)

对应的Grok模式

%{NUMBER:access_time:date{yyyyMMddHHmmss}} %{IP:client_ip} %{HOSTNAME:cdn_domain} %{URIPATHPARAM:request_uri} %{NUMBER:response_size:int} %{NUMBER:response_time:int} %{NUMBER:unknown_status:int} %{NUMBER:http_status:int} %{DATA:placeholder} %{NUMBER:cache_hit_count:int} %{QS:user_agent} %{QS:segment_range} %{WORD:request_method} %{DATA:http_version} %{WORD:cache_status} %{DATA:last_unknown_field}

Logstash Filter配置示例

在Logstash的filter块中使用该Grok模式:

filter {
  grok {
    match => { "message" => "%{NUMBER:access_time:date{yyyyMMddHHmmss}} %{IP:client_ip} %{HOSTNAME:cdn_domain} %{URIPATHPARAM:request_uri} %{NUMBER:response_size:int} %{NUMBER:response_time:int} %{NUMBER:unknown_status:int} %{NUMBER:http_status:int} %{DATA:placeholder} %{NUMBER:cache_hit_count:int} %{QS:user_agent} %{QS:segment_range} %{WORD:request_method} %{DATA:http_version} %{WORD:cache_status} %{DATA:last_unknown_field}" }
    remove_field => ["message"] # 解析后可移除原始日志字段
  }

  # 可选:将access_time转换为Logstash标准@timestamp字段
  date {
    match => ["access_time", "yyyyMMddHHmmss"]
    target => "@timestamp"
    remove_field => ["access_time"]
  }
}

注意事项

  • 日志中两个未知字段若后续明确含义,可直接修改字段名(如unknown_status、last_unknown_field)
  • 若日志出现特殊字符,可调整URIPATHPARAM或DATA对应的Grok模式适配
  • 测试Grok模式可使用Logstash自带的logstash-plugin logstash-filter-grok test命令,本地调试更安全

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:55:25