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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 文档来源 文档来源:How to setup Docker Monitoring 由garyond翻译、校正及整理...
    garyond阅读 9,258评论 4 22
  • 如今,越来越多的公司开始使用 Docker 了,现在来给大家看几组数据: 2 / 3 的公司在尝试了 Docker...
    OneAPM阅读 1,545评论 0 15
  • 如今,越来越多的公司开始使用 Docker 了,2 / 3 的公司在尝试了 Docker 后最终使用了它。为了能够...
    OneAPM阅读 955评论 0 3
  • 11月了。 脖子酸痛得很,觉得自己要得脊椎病了。 制定了一个背书计划,也不知道能不能按照计划坚持下去。真的,在自己...
    鲸寐Amor阅读 175评论 0 0
  • 往年过春节,我总要回西都。带上一个包。包是当时尚未成为一个父亲的J陪我在城隍庙的一条街道买的。容量足够大,我去时只...
    老晁阅读 309评论 0 0