摘要:本文已获得原作者霸都民工哥授权。对于容器的监控方案可谓多种多样,本身自带命令。今天民工哥要介绍的是一款开源方案。所以我们要使用将这些实时监控到的信息存放起来。
本文已获得原作者霸都民工哥授权。
为什么需要监控??
对于一个物理机上运行多个容器应用时,容器的运行情况如:CPU使用率、内存使用率、网络状态、磁盘空间等信息,都是需要去了解的,因此监控是必须的。对于容器的监控方案可谓多种多样,本身自带命令docker stats。
[root@docker ~]# docker stats CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS bd96d72ed9c7 0.04% 14.97 MiB / 7.64 GiB 0.19% 8.22 MB / 805 MB 0 B / 0 B 9 665563143eb7 0.01% 18.12 MiB / 7.64 GiB 0.23% 19.7 MB / 18.5 MB 0 B / 39.4 MB 8 f2304dad5855 0.18% 98.45 MiB / 7.64 GiB 1.26% 1.07 GB / 9.97 MB 0 B / 2.13 GB 9
今天民工哥要介绍的是一款开源方案 cAdvisor+InfluxDB+Grafana。
组件简介cadvisor谷歌公司自己用来监控他们基础设施的一款工具,这个工具厉害之处不仅能监控docker容器的实时信息,而且还能将你的cadvisor这容器所在的主机的系统的实时信息,但是由于cadvisor只是能监控到实时的信息而不能保存。
InfluxDB 是用 Go 语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。所以我们要使用 influxdb 将这些实时监控到的信息存放起来。
基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等);
可度量性:你可以实时对大量数据进行计算;
基于事件:它支持任意的事件数据;
无结构(无模式);
可以是任意数量的列;
可拓展的;
支持 min, max, sum, count, mean, median 等一系列函数,方便统计;
原生的 HTTP 支持,内置 HTTP API;
强大的类 SQL 语法;
自带管理界面,方便使用
参考文章:https://www.influxdata.com/pr...
Grafana 是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持 Graphite、zabbix、InfluxDB、Prometheus 和 OpenTSDB 作为数据源。
灵活丰富的图形化选项
可以混合多种风格
支持白天和夜间模式
多个数据源
首先得有 docker 环境,这个就不用介绍了吧,请参考前面的文章
Docker 容器技术入门(一)
[root@master ~]# docker run -d --name influxdb -p 8086:8086 tutum/influxdb Unable to find image "tutum/influxdb:latest" locally Trying to pull repository docker.io/tutum/influxdb ... latest: Pulling from docker.io/tutum/influxdb a3ed95caeb02: Pull complete 23efb549476f: Pull complete aa2f8df21433: Pull complete ef072d3c9b41: Pull complete c9f371853f28: Pull complete a248b0871c3c: Pull complete 749db6d368d0: Pull complete db2492acfcc3: Pull complete b7e7d2e12d53: Pull complete 4272a53eef10: Pull complete 9b2fefdb5321: Pull complete Digest: sha256:5b7c5e318303ad059f3d1a73d084c12cb39ae4f35f7391b79b0ff2c0ba45304b Status: Downloaded newer image for docker.io/tutum/influxdb:latest f384db08ffc78e01fc27bf4c35dc6503b0fd2473cd8d5114b4d8a5475f928b53
说明:
-d :后台运行此容器
--name :启运容器分配名字influxdb
-p :映射端口,8083端口为infuxdb管理端口,8086端口是infuxdb的数据端口
tutum/influxdb:通过这个容器来运行的,默认会在docker官方仓库pull下来
查看容器
[root@master ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f2304dad5855 tutum/influxdb "/run.sh" 4 seconds ago Up 4 seconds 0.0.0.0:8083->8083/tcp, 0.0.0.0:8086->8086/tcp influxdb
现在可以通过浏览器去访问influxdb的管理端了
接下来创建cadvisor的数据库与用户,这个用于后期配置granfa
回车直接创建完成如下图
创建管理用户
创建完成如下图
同时也是可以使用CLI命令行界面来创建的,命令一样
[root@master ~]# docker run -d --name=cadvisor -p 8082:8080 -v /:/rootfs,ro -v /var/run:/var/run -v /sys:/sys,ro -v /var/lib/docker/:/var/lib/docker,ro google/cadvisor -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb:8086 Unable to find image "google/cadvisor:latest" locally Trying to pull repository docker.io/google/cadvisor ... latest: Pulling from docker.io/google/cadvisor ab7e51e37a18: Pull complete a2dc2f1bce51: Pull complete 3b017de60d4f: Pull complete Digest: sha256:9e347affc725efd3bfe95aa69362cf833aa810f84e6cb9eed1cb65c35216632a Status: Downloaded newer image for docker.io/google/cadvisor:latest a212dc33c9424b6e36485334511e6317bdebc06977b9af374b81b0cab113e724
说明:
-d :后台运行此容器
--name :启运容器分配名字cadvisor
-p :映射端口8082:8080(由于环境8080端口被占用,cadvisor默认端口是8080不建议修改)
-v:把宿主机的目录映射到容器中,这些目录都是cadviso需要采集的目录文件和监控内容
-storage_driver:需要指定cadvisor的存储驱动、数据库主机、数据库名
google/cadvisor:通过cadvisor这个镜像来运行容器,默认会在docker官方仓库把镜像pull下来;
查看cadvisor容器:
[root@master ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a212dc33c942 google/cadvisor "/usr/bin/cadvisor..." 2 minutes ago Up 2 minutes 0.0.0.0:8082->8080/tcp cadvisor
现在可以通过浏览访问cadisor的管理页面
cadvisor的基础图形功能也酷炫的
测试是否写入influxdb数据库
[root@master ~]# docker run -d --name grafana -p 3000:3000 grafana/grafana Unable to find image "grafana/grafana:latest" locally Trying to pull repository docker.io/grafana/grafana ... latest: Pulling from docker.io/grafana/grafana f2aa67a397c4: Pull complete 89573effc7c8: Pull complete b55c103da375: Pull complete Digest: sha256:364bec4a39ecbec744ea4270aae35f6554eb6f2047b3ee08f7b5f1134857c32c Status: Downloaded newer image for docker.io/grafana/grafana:latest 665563143eb74e5e2e76b7a1533cbf67a68590d355b0b22d453eac07e0e0b616 [root@master ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 665563143eb7 grafana/grafana "/run.sh" 48 seconds ago Up 47 seconds 0.0.0.0:3000->3000/tcp grafana
访问WEB管理端
添加数据源
新建New dashboard
这里随便选择一个容器做为测试使用,实际环境可根据实际环境填写
保存返回到HOME界面后,如下图
最终的效果图如下
作者:霸都民工哥
链接:https://mp.weixin.qq.com/s?...
来源:微信公众号
更多相关阅读:
docker容器监控初探
docker底层技术
从零开始了解docker
如果你还想了解更多,想和技术同僚分享切磋,可扫下方二维码加好友,回复yw,加入掘金运维技术交流群
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/8041.html
摘要:本文已获得原作者霸都民工哥授权。对于容器的监控方案可谓多种多样,本身自带命令。今天民工哥要介绍的是一款开源方案。所以我们要使用将这些实时监控到的信息存放起来。 本文已获得原作者霸都民工哥授权。 showImg(https://segmentfault.com/img/bVbdbrr?w=709&h=300); 为什么需要监控?? 对于一个物理机上运行多个容器应用时,容器的运行情况如:C...
摘要:就是那个将要全权代管你所有组件的那家伙用的自述来说就是是状态容器,提供可预测化的状态管理。 你若装逼,请带我飞! I love React ! 从前,从前,听说React只负责UI,话说写Angular代码就像写后端,现在看来,React赢在情怀上了; 我认为没必要老是拿React和Angular做比较,Angular是一套大而全的相对完备的框架;而React确实是只负责UI,只是多出...
摘要:景深属性定义元素距视图的距离,以像素计。当为元素定义属性时,其子元素会获得透视效果,而不是元素本身。默认都是围绕元素中心点变化的位移不受中心点影响先写的后执行的执行顺序变化原点默认不会受原点影响,也不会改变变化原点关键字长度单位 景深 perspective: perspective 属性定义 3D 元素距视图的距离,以像素计。当为元素定义 perspective 属性时,其子元素会获...
阅读 3751·2021-10-08 10:05
阅读 2914·2021-09-27 13:57
阅读 2624·2019-08-29 11:32
阅读 979·2019-08-28 18:18
阅读 1249·2019-08-28 18:05
阅读 1932·2019-08-26 13:39
阅读 790·2019-08-26 11:37
阅读 2015·2019-08-26 10:37