cadvisor+influxdb+grafana能够实现容器信息获取、存储、显示等容器监控功能,是目前流行的docker监控开源方案。html
cadvisormysql
Google开源的用于监控基础设施应用的工具,能够零配置运行在docker主机上来监控Docker主机以及Docker容器。其为单节点监控,只能监控一个主机。多节点监控可参考Google的Kubernetes。做为docker服务的监控数据收集器,提供给influxdb。git
influxdbgithub
InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖、提供管理界面。提供基于时间序列,基于事件的可度量的实时计算功能。sql
grafanadocker
Grafana可视化大型测量数据的开源程序,有灵活丰富的图形化选项,能够混合多种风格,多个数据源。例如Graphite、zabbix、InfluxDB、Prometheus、mysql和OpenTSDB 详见配置页面。数据库
在Ubuntu16.04上可经过docker部署体验。浏览器
docker run -p 8083:8083 -p 8086:8086 --name=influxdb --hostname=influxdb tutum/influxdb
经过ip:8083浏览器访问数据库,设置用户名和密码为root,save保存。框架
建立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采集的数据,验证两容器运行正常。
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/