环境说明
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
15root@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