主要内容:
Step1: 修改 Prometheus 配置信息,添加 cadvisor 访问地址:
Step2: 重新加载配置,访问 http://localhost:9090/targets 你将看到新加的 cadvisor 已经生效。
Step3: 此时访问 Prometheus 的 graph 页面 http://localhost:9090/graph ,搜索 container 你将看到容器相关数据。
CPU 使用率查询:
内存使用量:
网络入口流量
网络出口流量
磁盘使用量:
51reboot K8s课程11.9日,详情WeChat17812796384 去了解
cAdvisor最棒的一点在于它运行起来非常简单。因为它本身就是运行在容器里,所以你可以像运行其他任何容器一样把它运行起来,运行的结果是可预知并且始终一致的。它也可以和一些在容器外的storage driver打包使用。当你指定了storage driver参数的时候,它会自动把资源指标导出到对应的storage driver上。比如,下面的命令会在任意一个Docker主机上创建一个cAdvisor实例,然后把资源指标导出到一个StatsD服务器上:docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest \
-storage_driver=statsd \
-storage_driver_host=your_statsd_host:8125 \
-storage_driver_db=docker001
在Wavefront中查看容器指标
最近,我们把之前用来做演示的服务以及相关功能整合到新的服务器上。当我们开始做这件事时,我们想要用Docker重新部署。通过把每个服务隔离在容器中,我们可以简化部署和扩展的流程。我们也能够用cAdvisor隔离每个容器的资源指标。当你在同一个主机上运行多个容器的时候,这就特别有用,和我们的情况一样。
通过上面的命令,cAdvisor就可以立即输出指标到StatsD服务器上。这些指标已下面的命令格式创建:
stats.gauges.<storage_driver_db>.<container name>.<metric name>
Kubernetes的kubelet组件内置了cadvisor,将Node上容器的指标以Prometheus支持的格式展示,可以通过这些指标计算得到更多有用的数据。
在Prometheus的配置文件中,配置了相关的Target之后,这些指标就可以从Prometheus中查询到。
直接访问Kubelet的apiserver接口,可以读取以Prometheus支持的格式呈现的指标:
从 man top 手册中找到了CPU使用率的定义:
即在过去的一段时间里进程占用的CPU时间与CPU总时间的比率,如果有多个CPU或者多核,需要将每个CPU的时间相加。
kubelet中的cadvisor采集的指标与含义,见: Monitoring cAdvisor with Prometheus 。
其中有几项是:
container_cpu_usage_seconds_total是container累计使用的CPU时间,用它除以CPU的总时间,就得到了容器的CPU使用率。
Pod 在1s内累计使用的CPU时间为:
container_spec_cpu_quota 是容器的CPU配额,它的值是:为容器指定的CPU个数*100000。
故,Pod在1s内CPU的总时间为:Pod的CPU核数 * 1s:
将上面两个公式的结果相除,就得到了容器的CPU使用率:
Pod 内存使用率的计算就简单多了,直接用内存实际使用量除以内存限制使用量即可:
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)