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

SumoLogic中如何在单查询内完成API请求多指标条件聚合

SumoLogic 单查询实现API多指标统计

需求说明

现有两类SumoLogic日志:

  • APIRequestStart:标记API请求发起
  • APIRequestEnd:标记API请求结束,携带time_taken字段记录处理耗时

需按endpoint维度统计以下指标:

  • 请求总数(no_of_api_calls):APIRequestStart日志的数量
  • 成功请求数(successful_api_calls):APIRequestEnd日志的数量
  • 成功率:成功请求数/请求总数的百分比
  • 平均响应时间:所有APIRequestEnd日志的time_taken平均值

完整查询方案

_source=logs
| parse "* - event_type:* - endpoint:* - *" as rest1, event_type, endpoint, rest2
| parse field=rest2 "time_taken:*" as time_taken onlyif(event_type="APIRequestEnd")
| eval 
    api_start = if(event_type="APIRequestStart", 1, 0),
    api_end = if(event_type="APIRequestEnd", 1, 0),
    valid_time = if(event_type="APIRequestEnd", time_taken, null())
| stats
    sum(api_start) as no_of_api_calls,
    sum(api_end) as successful_api_calls,
    avg(valid_time) as avg_response_time,
    round(sum(api_end)/sum(api_start)*100, 2) as success_rate_percent
by endpoint
| sort endpoint

关键步骤解释

  1. 解析核心字段:

    • 第一行parse语句新增解析endpoint字段,确保后续能按该维度分组统计
    • 第二行parse仅在APIRequestEnd类型日志中提取time_taken,避免无效数据干扰
  2. 标记与过滤数据:

    • 通过eval生成三个辅助字段:
      • api_start:标记请求发起日志,用于统计请求总数
      • api_end:标记请求结束日志,用于统计成功请求数
      • valid_time:仅保留结束日志的耗时数据,为计算平均响应时间做准备
  3. 聚合计算指标:

    • 使用stats按endpoint聚合,一次性计算所有需求指标:
      • 求和得到请求总数、成功请求数
      • 求平均值得到平均响应时间
      • 通过除法+百分比转换计算成功率,用round保留两位小数
  4. 排序优化:最后用sort endpoint让结果按接口名排序,提升可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 17:41:14