怎样设置 Docker 监控

来源:互联网 发布:js中input设置默认值 编辑:程序博客网 时间:2024/06/05 20:39

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

这里写图片描述