跳转至

WAF3.0 API

POST 查询高级监控数据

POST /prod-api/waf/wafv3/statistic/describeMostData

按 WAF 访问日志,一次请求可在 action 中声明多个维度,每个维度独立分页。常用于控制台「概览」页的 IP、域名、URL、状态码等排行榜。

Body 请求参数

{
  "action": [
    {
      "metricName": "oid",
      "pageNo": 1,
      "pageSize": 5
    },
    {
      "metricName": "client_ip",
      "pageNo": 1,
      "pageSize": 5
    },
    {
      "metricName": "http_user_agent",
      "pageNo": 1,
      "pageSize": 5
    },
    {
      "metricName": "domain",
      "pageNo": 1,
      "pageSize": 5
    }
  ],
  "otherFilter": [
    {
      "oneVal": "oid",
      "twoVal": "eq",
      "threeVal": ["20240412279097884616"]
    }
  ],
  "params": {
    "beginTime": "2026-05-17 17:40:32",
    "endTime": "2026-05-20 17:40:32"
  }
}

控制台通常固定 otherFilteroid = 当前套餐 ID($route.query.oid),并分批每次提交 4 个 metricName(与页面图表分组一致)。

Body 字段说明

字段 类型 必选 说明
action array 要统计的维度列表,每项含 metricNamepageNopageSize
otherFilter array 日志筛选条件;不筛选可传 []
params object 时间范围,必须包含 beginTimeendTime

action[] 单项

字段 类型 必选 说明
metricName string 统计维度,见下表「支持的 metricName」
pageNo integer 页码,从 1 开始
pageSize integer 每页条数(控制台常用 5

支持的 metricName

与后端 WafV3LogFieldEnums 一致(大小写不敏感,建议小写):

metricName 含义
client_ip 客户端 IP
http_user_agent User-Agent
domain 请求 Host(域名)
url 请求 URI
status HTTP 响应状态码
request_method 请求方法
server_port 服务端口
ua_os_name 客户端操作系统
ua_name 客户端/browser 名称
rule_tags 命中规则标签
client_country_name 客户端国家
client_city_name 客户端城市
oid 套餐/订单 ID

otherFilter[] 单项

字段 类型 必选 说明
oneVal string 日志字段名,与 metricName 使用同一套枚举(如 oiddomainstatusclient_ip
twoVal string 比较方式,本接口仅支持 eq(等于)、ne(不等于)
threeVal string[] 比较值列表

示例:仅统计某套餐日志 — oneVal: "oid", twoVal: "eq", threeVal: ["20240412279097884616"]

params 时间范围

字段 类型 必选 说明
beginTime string 开始时间,格式 yyyy-MM-dd HH:mm:ss
endTime string 结束时间,格式 yyyy-MM-dd HH:mm:ss
  • 未传 params 或缺少时间字段时返回错误「请选择时间范围」。

请求参数

名称 位置 类型 必选 中文名 说明
Authorization header string 鉴权 Bearer Token
body body object 请求体 见上文

返回示例

200 Response

无命中数据时(各维度 list 为空):

{
  "msg": "成功",
  "code": 200,
  "data": [
    {
      "metricName": "oid",
      "list": [],
      "total": 0,
      "termsCount": 0
    },
    {
      "metricName": "client_ip",
      "list": [],
      "total": 0,
      "termsCount": 0
    },
    {
      "metricName": "http_user_agent",
      "list": [],
      "total": 0,
      "termsCount": 0
    },
    {
      "metricName": "domain",
      "list": [],
      "total": 0,
      "termsCount": 0
    }
  ]
}

有数据时(示例):

{
  "msg": "成功",
  "code": 200,
  "data": [
    {
      "metricName": "client_ip",
      "list": [
        { "name": "203.0.113.10", "value": 1280 },
        { "name": "198.51.100.2", "value": 640 }
      ],
      "total": 5000,
      "termsCount": 42
    }
  ]
}

返回结果

状态码 状态码含义 说明
200 OK 成功
401 Unauthorized 未授权
403 Forbidden 无权限

返回数据结构

状态码 200

名称 类型 说明
code integer 200 表示成功
msg string 提示信息
data array 与请求 action 顺序对应的统计结果列表

data[] 单项(每个 metricName 一条)

字段 类型 说明
metricName string 与请求中一致
list array 当前页的 Top 排行项
total integer 该维度下日志总命中数(文档计数)
termsCount integer 该维度去重后的桶数量(不同取值个数,用于分页 total)