如何在Datadog中统计Kubernetes Pod的运行时长?
Datadog 按自定义业务标签统计Running状态Pod运行时长方案
需求背景
需按自定义业务逻辑标签,聚合统计状态为Running的Pod运行时长,用于计算对应服务的运行成本。
已尝试路径的问题说明
- 尝试使用
docker.uptime指标统计,结果不符合预期:该指标为节点维度的Docker运行时长,单节点可并行运行多个容器,无法对应到单个Pod的运行时长统计需求 - 已知Datadog KSM集成提供
pods.age、pods.uptime两个指标,但默认配置下这两个指标不会出现在Datadog指标浏览器中
原生Datadog实现方案
无需引入Prometheus/Grafana组件,通过调整Datadog配置即可实现需求:
方案1:基于KSM指标采集实现
- 调整KSM集成配置
编辑Datadog Agent的kube_state_metrics.d/conf.yaml配置文件,在pods采集器的metrics列表中,确保开启kube_pod_start_time、kube_pod_status_phase两个指标的采集。
配置生效后重启Datadog Agent,等待指标上报即可。 - 构造统计查询
在Datadog指标查询/监控面板中,使用如下逻辑构造查询:- 筛选维度:
kube_pod_status_phase{phase:Running},关联你自定义的业务标签(如service、app等Pod上标注的业务标签) - 单Pod运行时长计算:
now() - kube_pod_start_time,单位为秒 - 按业务标签做sum聚合,即可得到对应业务维度下所有Running Pod的累计运行时长,乘以节点单位时长成本即可得到对应服务的运行成本。
- 筛选维度:
方案2:基于容器采集指标实现(无需修改KSM配置)
如果已经开启Datadog的容器运行时采集,可直接使用container.uptime指标统计:
- 筛选维度:
container.uptime{pod_name:*,status:running},关联Pod对应的自定义业务标签 - 按业务标签聚合去重后求和,即可得到对应业务维度的Pod累计运行时长
内容的提问来源于stack exchange,提问作者Jason Cheng
相关产品推荐
相关产品推荐

