如何总结每项服务的指标?

时间:2019-09-09 10:01:45

标签: kubernetes prometheus

例如,kubelet(cAdvisor)container_cpu_usage_seconds_total的值带有某些参数(例如pod,命名空间)。

我想知道如何将此类值汇总到Service中(例如,每个服务的CPU使用率)?我了解Service是一组Pod,因此只能将每个Pod的这些值汇总到服务中,但是我不知道如何?

是否有任何可用于服务的汇总方法?还是process_cpu_seconds_total是每项服务的“ container_cpu_usage_seconds_total”汇总值?

谢谢您的帮助!

2 个答案:

答案 0 :(得分:1)

sum(rate(container_cpu_usage_seconds_total{job="kubelet", cluster="", namespace="default", pod_name=~"your_pod_name.*"}[3m]))

取自kubernetes-mixin

答案 1 :(得分:1)

通常,cAdvisor收集有关容器的指标,而对服务一无所知。如果要按服务进行汇总,则需要手动选择属于该服务的Pod的指标。

例如,如果您的cAdvisor指标位于Prometheus中,则可以使用以下PromQL查询:

sum(rate(container_cpu_usage_seconds_total{pod_name=~"myprefix-*"}[2m]))

这将汇总名称以myprefix-开头的所有Pod的所有容器的CPU使用率。

或者如果您启用了Resource Metrics API(即安装了Metrics Server),则可以使用以下命令查询特定Pod的CPU使用率(仅占CPU内核的一部分):

kubectl get --raw="/apis/metrics.k8s.io/v1beta1/namespaces/{namespace}/pods/{pod}"

要获得某项服务的总使用率,您需要遍历该服务的所有Pod,提取值,然后将它们加在一起。

通常,服务是Kubernetes的概念,cAdvisor中并不存在Service,这是一个独立的项目,恰好在Kubernetes中使用。