Docker监控

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

你可能感兴趣的:(docker,Docker实战)