怎样设置 Docker 监控

  • Post author:
  • Post category:其他


本文译自

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

这里写图片描述