目录
1、基本概念
既然是对Docker的容器进行监控,我们就不自己单独搭建cAdvisor、InfluxDB、Grarana了,本文中这三个实例,主要以Docker容器方式运行。
本文中的案例会有四台机器,他们的Host和IP地址如下,四台机器的集群搭建可以参考<Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例>
c1 -> 10.0.0.31
c2 -> 10.0.0.32
c3 -> 10.0.0.33
c4 -> 10.0.0.34
1.1、什么是cAdvisor?
cAdvisor 为Docker容器用户提供了了解运行时容器资源使用和性能特征的工具。cAdvisor的容器抽象基于Google的lmctfy容器栈,因此原生支持Docker容器并能够“开箱即用”地支持其他的容器类型。cAdvisor部署为一个运行中的daemon,它会收集、聚集、处理并导出运行中容器的信息。这些信息能够包含容器级别的资源隔离参数、资源的历史使用状况、反映资源使用和网络统计数据完整历史状况的柱状图。
1.2、什么是InfluxDB?
InfluxDB 是一个开源分布式时序、事件和指标数据库。使用 Go 语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。
其主要特色功能
- 基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等)
- 可度量性:你可以实时对大量数据进行计算
基于事件:它支持任意的事件数据
InfluxDB的主要特点
无结构(无模式):可以是任意数量的列
- 可拓展的
- 支持min, max, sum, count, mean, median 等一系列函数,方便统计
- 原生的HTTP支持,内置HTTP API
- 强大的类SQL语法
- 自带管理界面,方便使用
1.3、什么是Grafana?
Graphite 是一款开源的监控绘图工具。可以实时收集、存储、显示时间序列类型的数据(time series data),有些类似Kibana的东西。
以下是官方的说明
- 用于可视化大型测量数据的开源程序,他提供了强大和优雅的方式去创建、共享、浏览数据。dashboard中显示了你不同metric数据源中的数据。
- 常用于因特网基础设施和应用分析,但在其他领域也有机会用到,比如:工业传感器、家庭自动化、过程控制等等。
- 有热插拔控制面板和可扩展的数据源,目前已经支持Graphite、Cloudwatch、Prometheus、InfluxDB、Elasticsearch。
2、开始安装Docker性能监控组件
2.1、创建一个overlay网络
在docker 1.12
以前, swarm集群需要一个额外的key-value
存储(consul, etcd etc). 来同步网络配置, 保证所有容器在同一个网段中. 在docker 1.12
已经内置了这个存储, 集成了overlay networks
的支持。
下面我们创建一个名为logging的overlay网络,用于后面的容器间相互通信。
➜ /Users/lion >docker network create --driver overlay logging
451negncg10ahru13hgn2k9nt
➜ /Users/lion >docker network ls
NETWORK ID NAME DRIVER SCOPE
1299968d22b6 bridge bridge local
60g7y3cbkdfe docker-net overlay swarm
4d7292be91ca docker_gwbridge bridge local
e1b111616be1 host host local
dxo4vcd9mig1 ingress overlay swarm
451negncg10a logging overlay swarm
bc0a8040cae6 none null local
在docker network ls
列表中,可以看到logging
网络的SCOPE
是swarm
,表示在整个swarm
集群是生效的。如果是在多台主机的集群中,overlay
网络在没有被使用的时候,只会在manage节点出现,使用后会自动同步到其他节点。
2.2、安装InfluxDB 0.13
我们第一个先安装 InfluxDB
,在用于收集swarm性能数据
docker service create --network logging \
-p 8083:8083 -p 8086:8086 \
--mount source=influxdb-vol,