本文译自
https://www.brianchristner.io/how-to-setup-docker-monitoring/
作者:Brian Christner
Brian’s spent a large portion of his career in the casino industry where he made sure the house always won. Brian is a nominated member of the Docker Captain’s program and a seasoned cloud architect.
随着我们提供的 Docker 主机和容器越来越多,Docker 对服务器和容器的监控变得越发必要。本教程将指导你如何将几个不同的组件粘合在一起来实现 Docker 监控。
Docker 监控组件
首先,我们假设在开始之前 Docker 已经安装、配置和运行在你的主机上。请确保你可以使用内网或公网 IP 通过 Web 浏览器连接到你的 Docker 主机。
本教程的其余部分将作为 DockerIP 参考。
以下组件将用于创建 Docker 监控解决方案。
-
cAdvisor
– Google 一直在使用容器,并创建了 cAdvisor 来帮助监控其基础架构。它不仅可以监控 Docker 容器,还可以通过在 Docker 主机上运行 cAdvisor 来监控 Docker 主机,而无需任何配置。请查看
cAdvisor GitHub
相关 API 和不同配置选项的更多文档。 -
InfluxDB
– InfluxDB 是一个分布式时间序列数据库。cAdvisor 只显示实时信息,不存储指标。我们需要存储 cAdvisor 提供的监视信息,以显示实时以外的时间范围。 -
Grafana
– Grafana 仪表板可以把所有的东西都放在一起可视化。这个强大的仪表板允许我们对 InfluxDB 运行查询,并以非常漂亮的布局对它们进行图表化展示。
Docker 监控的安装
现在我们已经对 Docker 监控安装中涉及到的不同组件有了大致的了解,现在开始将这些组件整合到一起。
首先从 InfluxDB 开始,为连接 cAdvisor 做准备。
下载 influxdb 镜像:
docker pull influxdb
1. 安装 InfluxDb。我们使用下面的缺省设置,并命名容器 influxsrv,稍后将使用它来进行连接。
sudo docker run -d \
-p 8083:8083 \
-p 8086:8086 \
--expose 8090 \
--expose 8099 \
--name influxsrv \
influxdb
快速地测试一下 InfluxDB 是否正确安装。访问
http://DockerIP:8083
,使用下面用户名和密码登录 InfluxDB。
Username – root
Password – root
2. 建立 cadvisor 数据库
登录 InfluxDB 后,单击屏幕顶部的“Query”链接。 输入 cadvisor 作为数据库名并建立数据库。
# 建立数据库
CREATE DATABASE "cadvisor"
# 创建用户
CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES
3. 安装 cadvisor 容器并将其链接到 InfluxDB 容器。
docker pull google/cadvisor
sudo 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 \
--link influxsrv:influxsrv \
--name=cadvisor \
google/cadvisor:latest \
-storage_driver=influxdb \
-storage_driver_db=cadvisor \
-storage_driver_host=influxsrv:8086
一旦 cAdvisor 容器已经安装并运行,可以访问 http:// DockerIP:8080,例如
http://192.168.10.1:8080
可以在 Docker 主机和容器上看到 cAdvisor 收集统计信息。
4. 安装 Grafana 仪表板并将其链接到 InfluxDB 容器
docker pull grafana/grafana
sudo docker run -d \
-p 3000:3000 \
-e INFLUXDB_HOST=localhost \
-e INFLUXDB_PORT=8086 \
-e INFLUXDB_NAME=cadvisor \
-e INFLUXDB_USER=root \
-e INFLUXDB_PASS=root \
--link influxsrv:influxsrv \
--name grafana \
grafana/grafana
5. 登录 Grafana 并配置数据源
http://DockerIP:3000
Username – admin
Password – admin
6. 将 InfluxDB 连接到 Grafana 仪表板
单击“Add data source”
Name:influxdb
Type:influxDB
Default: checked
-
Http settings
Url:
http://influxsrv:8086
Access:proxy -
HTTP Auth
Basic Auth: checked -
Basic Auth Details
User: admin
Password: admin -
InfluxDB Details
Database:cadvisor
User:root
Password:root
7. 建立 dashboard
单击“New dashboard”
选择“Graph”–> 点击“Panel Title”–>“Edit”
Panel Data Source 选择“influxdb”
“Metrics”–> “select measurement”
配置完后,点击上面的“保存”图标。
Docker 监控总结
现在我们已经构建了一个单一的 Grafana 仪表板,其中包含了我们的 Filesystem 统计信息。正如你所看到的,创建多个图形来监控 Docker 主机和容器是非常简单的。
请务必查看
Grafana Docs
,来更深入地了解 Grafana 的查询和功能。
下面的截图显示了一些非常有趣的图形(带宽、每个容器的CPU使用率、内存使用情况和文件系统的限制/使用情况)。