在本指南中,我们将学习如何使用 docker-compose 在容器中设置 cAdvisor,将其与 prometheus 连接,并通过 grafana 监控服务器的容器。
CAdvisor 是一种流行的工具,用于收集容器的信息。它是 prometheus 和 grafana 用来抓取信息并将信息以图形、图表、时间序列和其他各种形式可视化的代理。CAdvisor 从容器中收集各种指标,这些信息由 prometheus 抓取,然后 grafana 将数据转换为直观的展现形式。
CAdvisor 是一个独立的应用程序。它具有对 Docker 容器的原生支持,并且还支持其他容器环境,例如开箱即用的 Kubernetes。
在容器中设置 cAdvisor 和 prometheus
配置 docker-compose.yml 文件并启动容器
sudo nano docker-compose.yml
现在将以下代码添加到其中:
cadvisor:
image: gcr.io/cadvisor/cadvisor:latest
container_name: cadvisor
ports:
- "9200:8080"
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
- /dev/disk/:/dev/disk:ro
devices:
- /dev/kmsg
networks:
- prometheus-network
restart: unless-stopped
在 docker compose 文件中,卷已以只读模式映射到容器中。这是收集有关正在运行的容器信息所必需的。配置文件应该是这样的:
需要在 Prometheus 的配置文件中添加一些配置
sudo nano config/prometheus.yml
在其中添加以下代码:
- job_name: 'cadvisor'
static_configs:
- targets: ['cadvisor:8080']
在这里,添加了目标 cadvisor:8080。这个地址只有在 prometheus 和 cAdvisor 容器都在同一个网络中时才有效。对于远程容器监控,只需要设置远程 cadvisor 的地址和端口,因为上面已经分别映射了主机和容器的端口 9200 和 8080。
配置应该如下所示:
现在使用 docker-compose 文件构建的 cAdvisor,然后启动容器:
sudo docker-compose up --build --d
并检查状态:
docker-compose ps
看起来 cAdvior 运行良好。现在访问 http://yourserverip:9090/ 访问 prometheus 并检查 cAdvisor 是否连接到 prometheus:
转到状态-> 目标。
在这里可以看到 cadvisor 已经启动了。
这意味着 prometheus 也可以从 cadvisor 中抓取数据。
登录到 grafana 服务器。
转到 http://yourserverip:3000/
现在为容器监控设置仪表板。
点击导入:
现在粘贴 14282 并单击加载。
此 ID 从 grafana 仪表板库中导出完整的 cadvisor 仪表板。您可以在下面链接中浏览更多仪表板。
点击加载。
设置名称,设置正确的 preometheus 并点击导入。
导入后,您可以看到仪表板。这个仪表板是现成的仪表板,包含很多关于容器的信息。
仪表板已加载各种指标,例如 CPU 利用率、内存利用率、缓存内存、网络流量利用率等。您可以根据需要探索和自定义许多其他各种指标。还可以使用自己的自定义查询创建自定义仪表板。
您还可以从另一台服务器监控容器,只需进行少量修改。此外,您可以设置警报系统,并在您的服务器或容器中检测到异常时向您的电子邮件、微信、钉钉发送警报消息。