有时我们希望能够监控Docker中每个容器的CPU或内存使用情况,但使用SSH连接到终端,再执行Docker stats
命令太过繁琐。同时这个命令无法查看历史监控数据,没有可视化展示面板。最好有个图形化的界面能直观展示CPU内存的变化情况。今天我在调研时发现了 cAdvisor这个开源项目。这里记录一下如何使用
# 参考网页
- https://github.com/google/cadvisor
- https://blog.csdn.net/qq_34556414/article/details/109754026
- https://cloud.tencent.com/developer/article/2378733
# 通过cAdvisor提供监控数据
cAdvisor 是谷歌开源的一款通用的容器监控解决方案。cAdvisor 不仅可以采集机器上所有运行的容器信息,还提供了基础的查询界面和 HTTP 接口,更方便与外部系统结合。并且 Kubernetes 也集成了 cAdvisor 作为容器监控指标的默认工具。
配置与启动:在需要监控Docker的宿主机上,拉取cAdvisor就可运行监控并暴露到端口供外部查询。可以查询官方github查看如何启动,这里我放一个基于docker-compose启动的例子
例子如下
|
|
注意
- docker 镜像必须为gcr.io/cadvisor/cadvisor,cAdvisor曾经更新过一次镜像地址,导致网上一些老的教程出错
- cAdvisor占用了一个很常见的端口8080,可以根据实际情况将其挂载为别的端口防止冲突
- 访问:
http://ip地址:8080
查看cAdvisor的web页面 - 访问:
http://ip地址:8080/containers/
查看主机监控 - 访问:
http://ip地址:8080/docker/
查看容器监控
# 使用Prometheus进行数据采集
Prometheus的配置教程网上有很多,这里不再赘述。简单记录一下如何使用Prometheus采集cAdvisor的数据
在Prometheus的配置yml中加入如下job内容。将ip address替换为你的cAdvisor地址
|
|
查看Prometheus ip地址:9090/targets
确保 Prometheus成功开始监控cAdvisor提供的数据
# 使用Grafana展示数据
Grafana的配置教程网上也有很多,这里不再赘述。这里简单记录一下如何快速配置Grafana展示Docker中的数据
- Grafana的data sources中添加 Prometheus
- 在Grafana的Dashboard中选择import Dashboard
- 引入 id = 11600的面板,来源于:https://grafana.com/grafana/dashboards/11600-docker-container/
- 可以看到Grafana中已经可以正确展示Docker中的数据