Docker监控(Cadvisor+Influxdb+Grafana)

hujianxiong 2016年09月07日 1,213次浏览

介绍

Docker的火爆程度就不说了,随着docker的生态圈的发展,将原来部署起来很复杂的环境变得非常简单,下面将使用docker部署Cadvisor+Influxdb+Grafana来监控主机系统实时信息,比如cpu,内存等信息以及容器的实时信息.

首先介绍下几个组件的功能:

  1. Cadvisor,谷歌公司自己用来监控他们基础设施的一款工具,这个工具厉害之处不仅能监控docker容器的实时信息,而且还能将你的cadvisor这容器所在的主机的系统的实时信息!
  2. Influxdb,由于cadvisor只是能监控到实时的信息而不能保存,所以我们要使用influxdb来存储实时监控到的信息
  3. Grafana是纯 Javascript 开发的前端工具,用于访问 InfluxDB,自定义报表、显示图表等。

部署Influxdb

参考 https://github.com/tutumcloud/influxdb
本文使用0.13版本

[root@docker ~]# git clone https://github.com/tutumcloud/influxdb.git
[root@docker ~]# cd ~/influxdb/0.13
[root@docker ~]# docker build -t="influxdb:0.13" .
[root@docker ~]# docker run -d --name influxdb  \
--restart always \
-p 8083:8083 -p 8086:8086 \
-e ADMIN_USER="root" \
-e INFLUXDB_INIT_PWD="root" \
-e PRE_CREATE_DB="cadvisor" \
10.20.145.240/library/influxdb:0.13

参数说明:
ADMIN_USER,INFLUXDB_INIT_PWD,PRE_CREATE_DB初始化容器的时候自动创建数据库及用户和密码

[root@docker 0.13]# docker exec -t -i influxdb /bin/bash
root@70b69d6ca021:/# influx
Visit https://enterprise.influxdata.com to  register for updates, InfluxDB server management, and monitoring.
Connected to http://localhost:8086 version 0.13.0
InfluxDB shell version: 0.13.0
> SHOW DATABASES
name: databases
---------------
name
cadvisor
_internal

> SHOW USERS
user    admin
root    true

查看Influxdb服务 http://10.20.145.240.211:8083

部署Cadvisor

在需要监控的节点上都启动一个cadvisor容器,参考:https://github.com/google/cadvisor

[root@docker ~]# docker run -d \
--restart=always \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
-h $HOSTNAME \
--detach=true \
--name=cadvisor google/cadvisor:latest \
-docker_only \
-storage_driver=influxdb \
-storage_driver_db=cadvisor \
-storage_driver_host=10.20.145.211:8086

参数说明 docker_only:cadvisor容器只监控容器
打开节点上的8080端口就能看到当前节点的实时监控了

部署Grafana

[root@docker ~]# docker run -d \
-p 3000:3000 \
--restart always \
-e INFLUXDB_HOST=10.20.145.211 \
-e INFLUXDB_PORT=8086 \
-e INFLUXDB_NAME=cadvisor \
-e INFLUXDB_USER=root \
-e INFLUXDB_PASS=root \
--link influxdb:influxdb \
--name grafana 10.20.145.240/library/grafana

浏览器访问 10.20.145.211:3000,图表的配置比较麻烦,可以参考:http://play.grafana.org/