搭配InfluxDB+CADvisor+Grafana组合监控Docker

环境说明

InfluxDB和Grafana装在一起,IP是172.31.0.77,阿里云CENTOS 7。
CADvisor装在172.16.0.195,同样是阿里云CENTOS 7。

思路就是CADvisor采集虚机里docker的指标,然后将值存入到InfluxDB,然后Grafana从InfluxDB取值展示。

部署influxDB

influxDB如果用docker启动非常简单,语句如下:

1
docker run -d -p 8083:8083 -p 8086:8086 --expose 8090 --expose 8099 --name influxsrv influxdb			#使用官方镜像启动

启动之后,进入容器里,使用./usr/bin/influx -version查看当前版本是InfluxDB shell version: 1.7.7

influxdb在1.1版本之后取消了web控制台,如果你还想使用web控制台的话,那就不要选择官方镜像,使用tutum/influxdb镜像,它是1.0版本的。

然后在命令框中创建数据库和用户:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
root@98d72bffb8cd:/usr/bin# ./influx
Connected to http://localhost:8086 version 1.7.7
InfluxDB shell version: 1.7.7
> show databases;
name: databases
name
----
_internal
CREATE DATABASE "dockerdata" #创建databases
CREATE USER monitor WITH PASSWORD '123456@qwe' #这里创建账户monitor和密码
GRANT ALL PRIVILEGES ON "dockerdata" TO "monitor" #用户授权
GRANT WRITE ON "dockerdata" TO "monitor"
GRANT READ ON "dockerdata" TO "monitor" #授予读写权限
DROP USER monitor #如果想删除用户,就用这个
EXIT

influxDB的语句比较讲究双引号和单引号,这一点跟mysql还是有点不同的,更多注册信息可以去看https://docs.influxdata.com/influxdb/v1.7/administration/authentication_and_authorization/ ,这里先暂时告于段落。

部署CADvisor

首先先确定机器是否与InfluxDB的8086端口相通,确定之后,猫头鹰的部署语句如下:

1
docker run -d --name=cadvisor -v /:/rootfs:ro -v /sys:/sys:ro -v /var/run:/var/run:rw -v /var/lib/docker/:/var/lib/docker:ro -p 8080:8080  google/cadvisor:latest -storage_driver=influxdb -storage_driver_db=dockerdata -storage_driver_host=172.31.0.77:8086

然后浏览器输入IP:8080就能打开猫头鹰的界面了,可以查看CADvisor搜集到当前服务器里所有docker。
抱光妹

点击对应的docker名称,就能看到详细监控信息。在docker run里我们设定了influxdb的数据库,到时候会把这些信息都保存到influxdb里的。
抱光妹

CADvisor采集的数据还是比较基本,具体信息如下:
抱光妹

部署Grafana

部署gafana的语句如下:

1
docker run -d --name grafana -p 3000:3000 -e INFLUXDB_HOST=localhost -e INFLUXDB_PORT=8086 -e INFLUXDB_NAME=dockerdata --link influxsrv:infx grafana/grafana

浏览器输入IP:3030登录grafana,默认账号密码是admin:admin,然后系统会通知我们先更改掉这个默认密码,于是换成新的。

点击add data source选择influxdb进行配置,如图:
抱光妹

然后点击save & test,去dashboard里可以创建图表查看了!如图:
抱光妹

这个图看到并不连贯,可能是cadvisor采集的时候是有时间间隔的,于是我们需要将Min time interval改成1m,就会是一个流畅的曲线了。再把cadvisor里的其他有用信息都做成图表,如图:
抱光妹

需要注意的是,有可能select的数据,没能按照我们所预期的样子来进行展示,这个时候要考虑下,数据源内的数据是不是适合你选择的DashBoard类型,其他也就没什么问题了。

最后就是添加监控,我偷个懒把监控方式选择钉钉,验证一下监控OK!
抱光妹

参考资料

《容器云运维实战》 P268
https://www.cnblogs.com/LUA123/p/9507029.html

感谢您请我喝咖啡~O(∩_∩)O,如果要联系请直接发我邮箱chenx1242@163.com,我会回复你的
-------------本文结束感谢您的阅读-------------