cadvisor+influxdb+grafana可以实现容器信息获取、存储、显示等容器监控功能,是目前流行的docker监控开源方案。
方案介绍
cadvisor
Google开源的用于监控基础设施应用的工具,可以零配置运行在docker主机上来监控Docker主机以及Docker容器。其为单节点监控,只能监控一个主机。多节点监控可参考Google的Kubernetes。作为docker服务的监控数据收集器,提供给influxdb。
influxdb
InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖、提供管理界面。提供基于时间序列,基于事件的可度量的实时计算功能。
grafana
Grafana可视化大型测量数据的开源程序,有灵活丰富的图形化选项,可以混合多种风格,多个数据源。例如Graphite、zabbix、InfluxDB、Prometheus、mysql和OpenTSDB 详见配置页面。
方案实施
在Ubuntu16.04上可通过docker部署体验。
1. 部署influxdb
docker run -p 8083:8083 -p 8086:8086 --name=influxdb --hostname=influxdb tutum/influxdb
通过ip:8083浏览器访问数据库,设置用户名和密码为root,save保存。
创建cadvisor数据库供数据采集使用。
2. 部署cadvisor
在需要监控的主机上运行如下命令启动容器:
docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --hostname=cadvisor --publish=8080:8080 --detach=true --name=cadvisor google/cadvisor -storage_driver=influxdb -storage_driver_host=192.168.134.144:8086 -storage_driver_db=cadvisor -storage_driver_user=root -storage_driver_password=root
注:-storage_driver_host=ip:8086
通过IP:8080访问cadvisor,可看到主机实时信息和图示,不仅包含docker信息还有整个系统信息,如CPU和Filesystem。
可通过IP:8080/metrics获取所有采集数据(某一时刻)。
此时,可在influxdb界面中看到advisor采集的数据,验证两容器运行正常。
3. 部署grafana
docker run -d -p 3000:3000 --hostname grafana --name grafana grafana/grafana
注:测试版本为latest,即6.2.4。
可通过IP:3000浏览grafana,用户名密码都是admin。
1) 首先添加数据源InfluxDB。
2) 配置数据源
点选按钮“Save&Test”,确保输出“Data source is working”。
3) 添加dashboard->Add Query, 配置查询
点选所需配置项,然后保存即可。
4) 可以配置报警信息,如mem管控等
内存超过250MB报警。
5) 配置CPU和memory界面如下图
参考:
1. Docker监控:基于阿里云容器服务构建自己的Docker监控框架
2. https://github.com/Kentik/docker-monitor
3. https://www.brianchristner.io/how-to-setup-docker-monitoring/
4. docker监控方案的最佳实践(cadvisor+influxdb+grafana)
5. docker 实时监控:cadvisor+influxdb+grafana
6. https://rancher.com/comparing-10-container-monitoring-solutions-rancher/