您的位置:首页 > 运维架构 > Docker

Docker实战系列——第三话–docker 监控(三)– how could we monitoring(3)?

2017-07-30 08:26 716 查看

前言:

Docker监控服务器和容器变得越来越需要我们提供的Docker主机和容器。本教程将引导您了解如何将几个不同的组件粘合在一起,以实现Docker监控。

前置条件:

Docker已经安装,配置并运行在主机上。

请确保您可以使用本地或公共IP上的Web浏览器连接到Docker主机。

Docker监控组件

cAdvisor - Google一直在使用容器,并创建了cAdvisor来帮助监控其基础架构。这个单独的工具是一个惊人的监控工具。它不仅通过在Docker主机上运行cAdvisor容器来监视Docker容器,还可以监视Docker主机,而无需任何配置。请确保查看cAdvisor GitHub有关API和不同配置选项的更多文档

InfluxDB - InfluxDB是一个分布式时间序列数据库。 cAdvisor仅显示实时信息,不存储指标。我们需要存储cAdvisor提供的监视信息,以显示实时以外的时间范围。

Grafana Metrics Dashboard ,Grafana工作面板允许我们将所有的零件拉到一起。这个功能强大的工作面板允许我们针对InfluxDB运行查询,并以非常漂亮的布局对其进行统计。

Docker监控的安装

现在我们对Docker监控设置中涉及的不同组件进行了概述,我们开始将它们全部拉在一起。 我们将首先从InfluxDB开始,并尝试连接到cAdvisor。

1.安装InfluxDb。我们使用下面的默认设置,并命名容器influxsrv,稍后我们将使用它来进行链接。

sudo docker run -d -p 8083:8083 -p 8086:8086 --expose 8090 --expose 8099 --name influxsrv tutum/influxdb


让我们快速测试,我们的InfluxDB安装正确。导航到您的http:// DockerIP:8083使用以下凭据登录InfluxDB。

Username - root

Password - root



2.创建cadvisor 数据库

登录InfluxDB后,单击屏幕顶部的“数据库”链接。键入数据库名称的名称管理员,然后单击创建数据库



3.安装cAdvisor容器并将其链接到InfluxDB容器。

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_db=influxdb -storage_driver_host=influxsrv:8086


一旦安装并运行了cAdvisor容器,您现在可以导航到http:// DockerIP:8080例如http://192.168.10.1:8080 您现在应该可以在Docker主机和容器上查看cAdvisor收集统计信息。



4.安装Grafana仪表板并将其链接到InfluxDB容器:

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工作控制台:

登录后点击GUI的左上角的Grafana图标(Fireball)。这应该弹出一个侧边栏菜单。点击数据源。

接下来,点击屏幕顶部的添加新数据源。 在数据源屏幕中填写以下信息:

数据源设置

名称:influxdb

类型:InfluxDB 0.8.x

一定要检查默认框

Http settings

网址:http:// influxsrv:8086(这是在Grafana容器上创建链接时指定的名称)

Access: proxy

Basic Auth: Enabled

User: admin

Password: admin

InfluxDB Details

Database: cadvisor (Or the name you specified when creating the database in step 2)

User: root

Password: root

您现在应该已经建立了与InfluxDB的连接,我们将在下一节中进行测试。



配置Grafana进行Docker监控

现在有趣的部分。我们设置我们的第一个工作控制台与Grafana,并可视化来自cAdvisor的数据。

1.再次点击Grafana图标(Fireball图标左上角)

2.打开仪表板菜单 - >展开主菜单下拉 - >单击+新建

3.我们现在在Grafana内部创建了一个新的仪表板。我们在这个仪表盘内创建我们的第一个图形。点击绿色垂直线,如下图所示,屏幕截图中以红色圈出。这扩展了仪表板的行选项。

4.单击添加面板 - >图

5.单击您创建的新图形的标题区域,其中显示“无标题(单击此处)”,然后单击编辑

6.现在是写我们的图表的第一个查询。我们将创建一个显示文件系统存储限制和用法的图形。

查询1 - 在图形屏幕中填写以下信息:series:stats 点击“值”,它将显示InfluxDB内部可用系列的下拉列表。


select: mean(fs_limit)

Alias: Limit

查询2 - 在图形底部屏幕是一个+添加查询按钮,允许我们在图表中添加另一个指标。


series: stats

select: mean(fs_usage)

Alias: Usage

7.单击常规菜单并更改图形的标题

8.单击轴和网格菜单

Left Y Unit: Bytes
您的图表现在应以正确的单位显示


9.一旦完成任何其他项目,一定要保存你的工作。点击屏幕顶部的保存图标。

在屏幕截图中看到的查询示例可以在这里找到:Docker Monitoring Queries

Docker监控结论

我们现在已经构建了一个单一的Grafana仪表板,其中包含了我们的Filesystem统计信息。您可以看到创建多个图表来监视我们的Docker主机和容器是非常简单的。

请务必查看Grafana文档,深入了解Grafana的查询和功能。看看下面的屏幕截图,显示了创建一些非常有趣的图形(带宽,每个容器的CPU使用量,内存使用量和文件系统限制/使用)的可能性。



故障排除

如果你有麻烦,这是给你的。弄清楚所有设置,以及Grafana到InfluxDB的连接问题。如果您的图表有问题,我强烈建议您的浏览器中选择一个开发控制台。

使用开发控制台,您很容易看到您的查询或连接到InfluxDB容器的问题。例如:Chrome开发工具 - >更多工具 - > Javascript控制台

另一个解决方法是使用容器的IP地址来解决连接问题。但是,如果您重新启动容器,IP地址更改,因此这只是临时修复。

docker inspect <container name>


在输出中搜索网络设置部分下的IP地址,如下所示:

"NetworkSettings": { "Bridge": "docker0", "Gateway": "172.17.42.1", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAddress": "172.17.0.54",


然后,您可以将我们上面使用的数据源设置中使用的名称替换为解决方法。这对我有用,直到我修复了容器之间的链接。

更新

感谢大家对本文的压倒性回应。由于这篇文章发表了Dale Kate-Murray和Ross Jimenez创建了一个Docker Monitoring Compose文件,以帮助所有人开始使用。

评论中提出的另一个问题是如何构建不同的工作控制台。所以这里是Dashboard中的JSON文件 - https://github.com/vegasbrianc/docker-monitoring

原文链接:https://www.brianchristner.io/how-to-setup-docker-monitoring/

未完,详情请见下一篇,如何设置邮件报警?《Docker实战系列——第三话–docker 监控(三)– how could we monitoring(4)?》

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: