本文译自
    
     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/cadvisorsudo 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/grafanasudo 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使用率、内存使用情况和文件系统的限制/使用情况)。
     
   
 
