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

如何通过Datadog REST API将整段时间区间聚合为单个数据点?

Datadog REST API 聚合时间区间为单个数据点的实现方案

问题解答

Datadog REST API完全支持将指定时间区间内的指标数据聚合为单个数据点,针对你提到的成功率计算场景,可以通过以下方式构造查询请求:

核心逻辑

你的指标用1表示成功、0表示失败,成功率等价于该指标在时间区间内的平均值(平均值=成功次数/总上报次数)。只需在查询中使用聚合函数,并将时间粒度设置为整个目标区间的长度,就能得到单个聚合数据点。

请求构造步骤

使用Datadog的/api/v1/query端点(POST方法),具体参数如下:

  1. 请求头:必须包含认证信息

    • DD-API-KEY: 你的Datadog API密钥
    • DD-APPLICATION-KEY: 你的Datadog应用密钥
  2. 请求体参数:

    • start: 过去一个月的起始时间戳(单位:秒,例如当前时间减去30天的时间戳)
    • end: 当前时间戳(单位:秒)
    • query: 聚合查询语句,格式为:
      avg:你的指标名称{*}.rollup(avg, 2592000)
      
      其中:
      • avg:你的指标名称{*}:指定对目标指标应用平均值计算
      • .rollup(avg, 2592000):rollup函数的第二个参数是时间间隔(秒),2592000等于30天的总秒数(30×24×3600),强制API将整个区间的所有原始数据聚合为单个平均值点

请求示例(JSON格式)

{
  "start": 1698844800,
  "end": 1701436800,
  "query": "avg:service.request.success{*}.rollup(avg, 2592000)"
}

替代方案(用总和与计数计算)

如果你想更直观地计算成功率,也可以通过成功次数除以总次数得到,查询语句如下:

sum:你的指标名称{*}.rollup(sum, 2592000) / count:你的指标名称{*}.rollup(sum, 2592000)

这个计算结果和直接取平均值完全一致,适合需要明确拆分统计逻辑的场景。

注意事项

  • 确保start和end的时间戳准确覆盖你需要的过去一个月区间
  • 替换你的指标名称为实际上报的指标标识符
  • 确认API密钥和应用密钥拥有指标查询的权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 00:32:05