打造高逼格、可视化的Docker容器监控系统平台
打造高逼格、可视化的Docker容器监控系统平台
收录于话题 #Docker 专辑 9个
点击上方“民工哥Linux运维”,选择“置顶公众号”
有趣有内涵的文章第一时间送达!
为什么需要监控??
对于一个物理机上运行多个容器应用时,容器的运行情况如: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:用于数据采集
cadvisor谷歌公司自己用来监控他们基础设施的一款工具,这个工具厉害之处不仅能监控docker容器的实时信息,而且还能将你的cadvisor这容器所在的主机的系统的实时信息,但是由于cadvisor只是能监控到实时的信息而不能保存。
InfluxDB:用于数据存储
InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。所以我们要使用influxdb将这些实时监控到的信息存放起来。
InfluxDB主要特色功能
基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等);
可度量性:你可以实时对大量数据进行计算;
基于事件:它支持任意的事件数据;
InfluxDB主要特点
无结构(无模式)
可以是任意数量的列
可拓展的;
支持min, max, sum, count, mean, median 等一系列函数,方便统计
原生的HTTP支持,内置HTTP API
强大的类SQL语法
自带管理界面,方便使用
参考文章:https://www.influxdata.com/products/
Grafana: 用于数据展示
Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。
Grafana主要特性:
- 灵活丰富的图形化选项
- 可以混合多种风格
- 支持白天和夜间模式
- 多个数据源。
安装布署过程
首先得有docker环境,这个就不用介绍了吧,请参考前面的文章
Docker容器技术入门(一)
1、部署influxDB服务
[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命令行界面来创建的,命令一样
2、布署cadvisor服务
[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数据库
3、布署granafa
[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: Pu![](https://s4.51cto.com/images/blog/202011/26/00e59a18e4df281d77b3887946f0e52d.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)ll 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管理端
用户名:密码 admin:admin
添加数据源
之后保存并测试连接
新建New dashboard
这里随便选择一个容器做为测试使用,实际环境可根据实际环境填写
保存返回到HOME界面后,如下图
最终的效果图如下
推荐阅读
[强烈推荐] 精心整理|公众号文章目录大全
掌握这10条规范,轻松搞定Git!
架构设计:标准Web系统的架构分层
程序员老鸟写sql语句的经验之谈
科普扫盲|掌握这些命令,玩转Linux小黑框!!
ProxySQL+Mysql实现数据库读写分离实战
缓存的正确使用方式,你都会了吗?
容器技术|Docker三剑客之Compose
MySQL 必备工具使用的6个锦囊妙计!
民工哥的十年故事续集:杭漂十年,今撤霸都!
·end·
—写文不易,你的转发就是对我最大的支持—
我们一起愉快的玩耍吧
目前30000+人已关注加入我们
专注于Linux系统运维、运维架构、各类高可用架构技术,热衷于分享开源技术,热爱开源、拥抱开源,我是80后民工哥,微信公众号:民工哥Linux运维,我为自己带盐,谁说80后不能活出精彩人生!!!
关注公众号点击菜单“微信群” 入群与小伙伴一起交流吧!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
AES加密算法
1、AES简介 AES(Advanced Encryption Standard),全称:高级加密标准,是一种最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。 2、AES具体的加密流程介绍: 1)明文P:没有经过加密的数据。 2)密钥K:用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。密钥为接收方与发送方协商产生,但不可以直接在网络上传输,否则会导致密钥泄漏,通常是通过非对称加密算法加密密钥,然后再通过网络传输给对方,或者直接面对面商量密钥。密钥是绝对不可以泄漏的,否则会被***者还原密文,窃取机密数据。 3)AES加密函数经加密函数处理后的数据 4)AES解密函数设AES解密函数为D,则 P = D(K, C),其中C为密文,K为密钥,P为明文。也就是说,把密文C和密钥K作为解密函数的参数输入,则解密函数会输出明文P。 3、对称加密算法与非对称加密算法的区别: 1)对称加密算法加密和解密用到的密钥是相同的,这种加密方式加密速度非常快,适合经常发送数据的场合。缺点是密钥的传输比较麻烦。 2)非对称加密算法加密和解密用的密钥是不同的,这种加密方式是用数学上...
- 下一篇
腾讯云大数据团队:认真做开源的人,眼里有光
前段时间,Oracle 正式发布了 JDK 15,同时作为惯例公布了 OpenJDK 全球贡献者榜单,表达了对这些企业与个人开发者的感谢。其中,Oracle 依旧是 JDK 开发的主力军,完成了 79.68% 的工作量。 但令很多人意想不到是,腾讯成为了全球企业贡献第五名,是国内为 OpenJDK 贡献最多的公司,并且是历史首个进入“Notable”贡献者范围的国内厂商,得到了 Oracle 的点名感谢。 谈到国内大厂的开源,社区中仍然存在不少的偏见。大厂的开源工作究竟是不是为了 KPI?除了商业价值外,大厂的开源工作是否真正为开源社区带来了有意义的贡献? 为了探究腾讯内部真实的开源情况,以及这些年来腾讯对开源社区的实质性贡献,我们邀请到了腾讯云副总裁、腾讯数据平台部总经理蒋杰,腾讯云大数据团队高级技术专家、OpenJDK committer 杨晓峰,腾讯技术委员会对外开源管理办公室总监许勇,一起深入探讨了腾讯内部开源文化的变迁史,获悉了以腾讯云大数据团队为代表的腾讯技术人,一些鲜为人知的开源故事。 OpenJDK 的突出贡献者 杨晓峰告诉我们,腾讯云大数据团队自 2019 年以来就...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8编译安装MySQL8.0.19
- CentOS7设置SWAP分区,小内存服务器的救世主
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7,CentOS8安装Elasticsearch6.8.6