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

如何获取Kubernetes Jobs、CronJobs等的CPU与内存Prometheus指标

自动采集Kubernetes各类Job的CPU/内存指标方案

可以通过Prometheus自动采集Jobs、CronJobs、Batch Jobs及KedaJobs的CPU、内存指标,核心思路是采集Pod级资源指标+关联Job元数据,无需手动逐个配置Job,具体方案如下:

1. 正确利用kubelet内置的cadvisor采集Pod指标

你之前单独部署cadvisor无效的原因是:Kubernetes已将cadvisor集成在每个节点的kubelet组件中,单独部署的cadvisor无法获取集群内所有Pod的运行时指标。正确做法是采集每个节点kubelet的/metrics/cadvisor端点。

通过Prometheus的Kubernetes自动发现功能,无需手动配置节点,自动采集所有节点的kubelet指标:

scrape_configs:
  - job_name: 'kubernetes-cadvisor'
    kubernetes_sd_configs:
      - role: node
    scheme: https
    tls_config:
      ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
    relabel_configs:
      - source_labels: [__address__]
        regex: '(.*):10250'
        target_label: __address__
        replacement: '${1}:10250'
      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)

这个配置会自动发现集群所有节点,采集kubelet的cadvisor指标,包含所有Pod(包括各类Job创建的Pod)的CPU、内存使用数据。

2. 用kube-state-metrics关联Pod与Job元数据

仅采集Pod指标无法直接关联到所属的Job,需要部署kube-state-metrics,它会暴露Pod与上层控制器(Job/CronJob/KedaJob)的关联关系。

部署后,可通过以下PromQL查询过滤出Job对应的Pod资源指标:

  • CPU使用率(按Job聚合):
    sum(rate(container_cpu_usage_seconds_total{container!="POD",container!=""}[5m])) by (pod_name, namespace)
    * on(pod_name, namespace) group_left(owner_name) kube_pod_owner{owner_kind="Job"}
    
  • 内存使用量(按Job聚合):
    sum(container_memory_working_set_bytes{container!="POD",container!=""}) by (pod_name, namespace)
    * on(pod_name, namespace) group_left(owner_name) kube_pod_owner{owner_kind="Job"}
    

3. KedaJobs的特殊过滤

KedaJobs由Keda管理,会带有专属标签(如app.kubernetes.io/managed-by=keda),可在PromQL中加入标签条件区分:

sum(rate(container_cpu_usage_seconds_total{container!="POD",container!=""}[5m])) by (pod_name, namespace)
* on(pod_name, namespace) group_left(owner_name, owner_kind) kube_pod_owner{owner_kind="Job"}
* on(namespace, owner_name) group_left() kube_job_labels{label_app_kubernetes_io_managed_by="keda"}

4. 关键注意事项

  • 确保Prometheus Pod有足够权限访问kubelet的10250端口(默认需要RBAC权限,可通过绑定system:node相关角色实现)
  • 所有新增的Job无需手动配置采集规则,Prometheus会通过自动发现机制实时采集其Pod指标
  • 若需要可视化,可将上述PromQL导入Grafana,创建Job资源使用的监控面板

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:15:16