前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >瞎更新,container_cpu_usage_seconds_total{job=“cadvisor“} 怎么没有啦

瞎更新,container_cpu_usage_seconds_total{job=“cadvisor“} 怎么没有啦

作者头像
逝兮诚
发布2023-02-26 14:53:48
1.1K0
发布2023-02-26 14:53:48
举报
文章被收录于专栏:代码人生代码人生

一、 基本介绍

1.1 概论

1.1.1 故事背景

今天在同步其他团队的 grafana 监控大盘时,Prometheus 服务报告说不能找到名为 container_cpu_usage_seconds_total{job=“cadvisor”} 的指标,一般来说可能有几个原因。

  1. 可能是 Prometheus 服务没开启
  2. prometheus.yaml文件可能也没有正确配置
  3. 可能是你的操作系统不兼容,有些操作系统并不兼容 container_cpu_usage_seconds_total 指标

当然我这里不是以上的问题。我的指标 job label 是 kubelet。

1.1.2 介绍 container_cpu_usage_seconds_total 指标

Container_cpu_usage_seconds_total(CCU)是容器资源监控中非常重要的一个指标,它可以帮助用户诊断容器应用程序的负载情况。它是定期统计容器已使用 CPU 时间总和,确切地计算容器中每个核心总体占用时间。这对于监视容器内运行的应用程序和进程的性能、优化性能以及准备扩展到容器集群和大规模架构来说,都是非常有用的。

通过 CCU,可以使用分析法来发现容器内诸如 CPU 过载、内存问题、roofline 带宽限制以及死锁等其他问题,从而有效地为团队提供解决方案,并提高整体系统的吞吐量和资源利用率。 CCU 提供了一种简单有效的方法,可以帮助开发者跟踪某些特定容器中的 CPU 需求,也可以帮助 SRE/DevOps 团队识别和优化容器中运行的应用程序。

Container_cpu_usage_seconds_total 通过谷歌的 cAdvisor 组件采集。

1.1.3 cAdvisor 容器监控介绍

cAdvisor 是一款能够监视容器性能的开源软件,由 Google 开发并维护。它可以用于监视本地的容器以及远程的容器,监测包括 CPU、内存、文件系统等等指标,并提供实时和历史图表。

cAdvisor 不但可以监督容器,它还可以运行在物理机上面,监控物理机的资源情况。另外,cAdvisor 用来支持 Kubernetes 的资源管理系统,使得 Kubernetes 可以更好地处理容器的管理和调度工作。

在这里插入图片描述
在这里插入图片描述

注意,坑来了

从 v1.7 开始,Kubelet metrics API 不再包含 cadvisor metrics,而是提供了一个独立的 API 接口:

● Kubelet metrics: http://127.0.0.1:8001/api/v1/proxy/nodes//metrics ● Cadvisor metrics: http://127.0.0.1:8001/api/v1/proxy/nodes//metrics/cadvisor

这样,在 Prometheus 等工具中需要使用新的 Metrics API 来获取这些数据,比如下面的 Prometheus 自动配置了 cadvisor metrics API: helm install stable/prometheus --setrbac.create=true --name prometheus --namespace monitoring

注意:cadvisor 监听的端口将在 v1.12 中删除,建议所有外部工具使用 Kubelet Metrics API 替代。

也就是说,k8s 默认会携带 cadvisor,在 kubelet 上,但是不同版本,他们的 job 会发生变化(存疑?)。我的 k8s 底座版本是 1.18,我的 container_cpu_usage_seconds_total{job=“kubelet”},而不是在 cadvisor。

我独立安装 cAdvisor,这样 container_cpu_usage_seconds_total{job=“cadvisor”} 就能继续出现,也能比较一下他们的差异。

二、kubelet 和 cAdvisor 暴露的指标有什么区别呢

通过部署独立版 cAdvisor,只查询 container_cpu_usage_seconds_total 这个指标,发现区别还是很大的。

  1. kubelet 暴露的 container_cpu_usage_seconds_total 指标,总长度会精简很多,只有1/4的长度
  2. 查询速度也快的多,耗时小于超过 1/3。

原因是 cAdvisor 导出的指标有20多个label,而kubelet 导出的只有10多个label,且整个指标数据总长度大于4倍。

三、找到这个指标的两个办法

  1. 使用 kubelet 的指标
  2. 部署 cAdvisor

3.1 部署 cAdvisor 方式

  1. 查看官方部署教程:https://github.com/google/cadvisor/tree/master/deploy/kubernetes
  2. 添加 service 和 servicemonitor
代码语言:javascript
复制
# service.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: cadvisor
  name: cadvisor
  # 部署的 namespace
  namespace: cadvisor
spec:
  clusterIP: 10.43.132.12
  ports:
  - name: metric
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: cadvisor
    name: cadvisor
  sessionAffinity: None
  type: ClusterIP


# serviceMonitor.yaml
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  labels:
    release: monitor
  name: cadvisor
  # 部署的 namespace
  namespace: cadvisor
spec:
  endpoints:
  - interval: 30s
    port: metric
  namespaceSelector:
    matchNames:
    - cadvisor
  selector:
    matchLabels:
      app: cadvisor
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-02-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、 基本介绍
    • 1.1 概论
      • 1.1.1 故事背景
      • 1.1.2 介绍 container_cpu_usage_seconds_total 指标
      • 1.1.3 cAdvisor 容器监控介绍
  • 二、kubelet 和 cAdvisor 暴露的指标有什么区别呢
  • 三、找到这个指标的两个办法
    • 3.1 部署 cAdvisor 方式
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档