docker:十分钟构建容器监控系统cAdvisor+InfluxDB+Grafana
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker:十分钟构建容器监控系统cAdvisor+InfluxDB+Grafana相关的知识,希望对你有一定的参考价值。
1.概念
cAdvisor:用于数据采集
InfluxDB:用于数据存储
Grafana:用于数据展示
1.1 cAdvisor
它是Google用来监测单节点的资源信息的监控工具。Cadvisor提供了一目了然的单节点多容器的资源监控功能。Google的Kubernetes中也缺省地将其作为单节点的资源监控工具,各个节点缺省会被安装上Cadvisor。总结起来主要两点:
-
展示 Host 和容器两个层次的监控数据。
- 展示历史变化数据。
?由于 cAdvisor 提供的操作界面略显简陋,而且需要在不同页面之间跳转,并且只能监控一个 host,这不免会让人质疑它的实用性。但 cAdvisor 的一个亮点是它可以将监控到的数据导出给第三方工具,由这些工具进一步加工处理。
?我们可以把 cAdvisor 定位为一个监控数据收集器,收集和导出数据是它的强项,而非展示数据。
1.2 InfluxDB
InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。类似的数据库有Elasticsearch、Graphite等。
InfluxDB主要特色功能
- 基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等);
- 可度量性:你可以实时对大量数据进行计算;
- 基于事件:它支持任意的事件数据;
InfluxDB主要特点
- 无结构(无模式):可以是任意数量的列;
- 可拓展的;
- 支持min, max, sum, count, mean, median 等一系列函数,方便统计;
- 原生的HTTP支持,内置HTTP API;
- 强大的类SQL语法;
- 自带管理界面,方便使用;
1.3 Grafana
Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。Grafana主要特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式;多个数据源。
2.部署过程
- 创建自定义网络monitor(自定义网络名称),用于后期容器加入此网络中,当然你也可以忽略此步;
- 创建Influxdb容器,创建数据用户、数据库;
- 创建cAdvisor容器;
- 创建Grafana容器,配置grafana;
3.开始部署
3.1 创建自定义网络
[[email protected] ~]# docker network create monitor
cc193568263604e3bc3e7a5d78f18d07af99810e1d5c19bac99fccfa045f48f5
查看创建的网络:
3.2 创建influxdb容器
-
启动容器:
[[email protected] ~]# docker run -d --name influxdb --net monitor -p 8083:8083 -p 8086:8086 tutum/influxdb
-
查看是否启动:
[[email protected] ~]# docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 30b9789e680d tutum/influxdb "/run.sh" 22 seconds ago Up 21 seconds 0.0.0.0:8083->8083/tcp, 0.0.0.0:8086->8086/tcp influxdb
-
访问influxdb控制台,ip+8083端口访问:
- 创建cadvisor数据库、用户:
CREATE USER "root" WITH PASSWORD ‘123456‘ WITH ALL PRIVILEGES
CREATE DATABASE "cadvisor"
3.3 创建cadvisor容器
-
运行cadvisor容器:
$docker run -d --name=cadvisor --net monitor -p 8080:8080 --mount type=bind,src=/,dst=/rootfs,ro --mount type=bind,src=/var/run,dst=/var/run --mount type=bind,src=/sys,dst=/sys,ro --mount type=bind,src=/var/lib/docker/,dst=/var/lib/docker,ro google/cadvisor -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb:8086
-
查看cadvisor容器:
[[email protected] ~]# docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 90871ba5be7e google/cadvisor "/usr/bin/cadvisor -…" 51 seconds ago Up 50 seconds 0.0.0.0:8080->8080/tcp cadvisor
- 通过ip+8080端口访问测试一下:
从上图可以看到,其实cadvisor也有基础的图形展示功能,我们这里主要用它来做数据采集。
3.4 创建granafa容器
-
运行granafa容器:
[[email protected] ~]# docker run -d --name grafana --net monitor -p 3000:3000 grafana/grafana
-
查看运行结果:
[[email protected] ~]# docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a90e03e2017a grafana/grafana "/run.sh" 17 seconds ago Up 16 seconds 0.0.0.0:3000->3000/tcp grafana
-
访问granfa,通过ip+3000端口的方式访问,默认账户密码(admin/admin):
- 添加数据源Add data source,如下图:
-
新建New dashboard,如下图:
- 新建了一个监控项之后,回来HOME,可以发现刚才创建的项目:
到这里cAdvisor+InfluxDB+Grafana容器监控系统就部署完成了,至于其它grafana的监控项配置不是本文的重点,大家如果感兴趣可以参考一些官方资料或者百度一些资料参阅,都是图形化的界面操作,多点、多玩、多测两个就搞明白了。
以上是关于docker:十分钟构建容器监控系统cAdvisor+InfluxDB+Grafana的主要内容,如果未能解决你的问题,请参考以下文章
Docker 最常用的监控方案 - 每天5分钟玩转 Docker 容器技术(78)
Docker 最常用的监控方案 - 每天5分钟玩转 Docker 容器技术(78)
Docker 镜像小结 - 每天5分钟玩转 Docker 容器技术(21)