Cadvisor是Google用来监测单节点的资源信息的监控工具。它的资源消耗也比较低。但是,它有它的局限性,它只能监控一个Docker主机。因此,如果你是多节点的话,那就比较麻烦了,你得在所有的主机上都安装一个Cadvisor,肯定特别不方便。值得注意的是,如果你使用的是Kubernetes,你可以使用heapster来监控多节点集群。Google的Kubernetes中也缺省地将其作为单节点的资源监控工具,各个节点缺省会被安装上Cadvisor。在免费的世界里,Cadvisor作为一个很不错的工具,越来越多的引起很多人过渡性的关注。以下我们将详细介绍如何创建我们的Docker监控方案。
cAdvisor: Google开源的用于监控基础设施应用的工具,它是一个强大的监控工具,不需要任何配置就可以通过运行在Docker主机上的容器来监控Docker容器,而且可以监控Docker主机。更多详细操作和配置选项可以查看Github上的cAdvisor项目文档。
influxDB: 它是一个分布式时间序列数据库。cAdvisor仅仅显示实时信息,但是不存储监视数据。因此,我们需要提供时序数据库用于存储cAdvisor组件所提供的监控信息,以便显示除实时信息之外的时序数据。
Grafana: Grafana可视化展示平台允许我们可视化地展示监控信息。它允许我们对influxDB进行查询,并通过强大的图表功能进行可视化展示。
【influxdb】
1. 概念
database 数据库
measurement 数据库中的表
points 表里面的一行数据
Point 由时间戳(time)、数据(field)、标签(tags)组成。
series 所有在数据库中的数据,都需要通过图表来展示,而这个series表示这个表里面的数据,可以在图表上画成几条线:通过tags排列组合算出来。具体可以通过SHOW SERIES FROM "表名" 进行查询。
8083: Web admin管理服务的端口, http://localhost:8083
8086: HTTP API的端口
8088: 集群端口(目前还不是很清楚, 配置在全局的bind-address,默认不配置就是开启的)
2. 常用命令
show databases;
create database "cadvisor";
SHOW USERS
# 创建用户
CREATE USER "cadvisor" WITH PASSWORD '123456' WITH ALL PRIVILEGES
grant all on mydb to user
show grants for user
DROP USER "cadvisor"
auth
use cadvisor;
SHOW measurements
# influxdb下的表在插入数据库的时候自动会创建
INSERT t_user,host=serverA,region=us_west value=0.64
SELECT * FROM t_user ORDER BY time DESC LIMIT 3
DROP MEASUREMENT "t_user" //删除表
一般情况下基于时间序列的point数据不会进行直接删除操作,一般我们平时只关心当前数据,历史数据不需要一直保存,不然会占用太多空间。这里可以配置数据保存策略(Retention Policies),当数据超过了指定的时间之后,就会被删除。
SHOW RETENTION POLICIES ON "cadvisor" //查看当前数据库的Retention Policies
CREATE RETENTION POLICY "rp_name" ON "cadvisor" DURATION 30d REPLICATION 1 DEFAULT //创建新的Retention Policies
#注释如下:
rp_name:策略名
db_name:具体的数据库名
30d:保存30天,30天之前的数据将被删除
它具有各种时间参数,比如:h(小时),w(星期)
REPLICATION 1:副本个数,这里填1就可以了
DEFAULT 设为默认的策略
也可以通过如下命令修改和删策略:
ALTER RETENTION POLICY "rp_name" ON "cadvisor" DURATION 3w DEFAULT
DROP RETENTION POLICY "rp_name" ON "cadvisor"
3. 安全
influxdb类似与mongodb,默认是不开启用户认证的,可以修改其 conf文件,配置http块内容如下:
[http]
enable = true
bind-address = ":8086"
auth-enabled = true # 开启认证
4. web管理
默认情况下未开启web管理功能。可以通过修改influxdb.conf文件中admin项的配置开启web管理界面,具体如下:
[admin]
# Determines whether the admin service is enabled.
enabled = true
# The default bind address used by the admin service.
bind-address = ":8083"
注意 :
1. 0.13以上版本的image默认不支持web admin,测试中设置了也没用,所以暂时用0.12版
2. tutum版的设置不了auth
3. web admin只能创建用户,查询,不能增删改数据,需登陆容器-->influx-->auth,再进行数据操作
【cadvisor】
1. 每个节点机都要启动,需配置对应的数据源,配置好后,在对应的influxdb database中SHOW MEASUREMENTS可看到load_average等表
【grafana】
1. 可在.ini中配置相关参数,暂时未使用grafana.ini等配置
2. 配置数据源dataSource
基本信息
Name:influxdb
Type:influxDB
Default: checked
Http settings
Url:http://mytest-influxdb:8086
Access:proxy
HTTP Auth
Basic Auth: checked
InfluxDB Details
Database:cadvisor
User:cadvisor
Password:123456
配置好后点击 Save&Test