本篇内容主要讲解“怎么选择web容器监控方案”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么选择web容器监控方案”吧!
对于容器的监控方案可谓多种多样,本身自带命令docker stats
命令,Scout、Data Dog、Sysdig Cloud、Sensu Monitoring Framework、CAdvisor等。
通过docker stats
命令可以很方便的看到当前宿主机上所有容器的CPU,内存以及网络流量等数据。但是docker stats
命令的缺点是统计的只是当前宿主机的所有容器,而获取的监控数据是实时的,没有地方存储,也没有报警功能。
docker stats
Scout、Sysdig Cloud、Data Dog虽然都提供了完善的服务,但是它们都是托管的服务,而且都收费,Sensu Monitoring Framework集成度较高,也免费,但是部署过于复杂。综合考虑,我们选择了CAdvisor做容器监控工具。
CAdvisor是谷歌出品,优点是开源产品,监控指标齐全,部署方便,而且有官方的docker镜像。缺点是集成度不高,默认只在本地保存2分钟数据。不过可以加上influxDB存储数据,对接Grafana展示图标,比较便利地搭建好了容器监控系统,数据收集和图标展示效果良好,对系统性能也几乎没有什么影响。
CAdvisor是一个容器资源监控工具,包括容器的内存、CPU、网络IO、磁盘IO等监控,同时提供了一个web页面用于查看容器的实时运行状态。CAdvisor默认存储2分钟的数据,而且只是针对单物理机。不过CAdvisor提供了很多数据集成接口,支持influxDB、Redis、kafka、elasticsearch等集成,可以加上对应配置将监控数据发往这些数据库存储起来。
CAdvisor功能主要有两点:
展示host和容器两个层次的监控数据;
展示历史变化数据。
influxDB是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。
前面说到,CAdvisor默认只在本机保存最近2分钟的数据,为了持久化存储数据和统一收集展示监控数据,需要将数据存储到influxDB中。InfluxDB是一个时序数据库,专门用于存储时序相关数据,很适合存储CAdvisor的数据。而且,CAdvisor本身已经提供了InfluxDB的集成方法,在容器启动时指定配置即可。
InfluxDB主要功能:
基于时间序列,支持与时间有关的相关函数(如最大、最小、求和等);
可度量性:你可以实时对大量数据进行计算;
基于事件:它支持任意的事件数据。
InfluxDB主要特点
无结构(无模式);
可以是任意数量的列;
可扩展的;
支持min,max,sum,count,mean,median等一系列函数,方便统计;
原生的HTTP支持,内置HTTP API;
强大的类SQL语法;
自带管理界面,方便使用。
Grafana是一个开源的数据监控分析可视化平台,支持多种数据源配置(支持的数据源包括influxDB、MySQL、elasticsearch、OpenTSDB、Graphite等)和丰富的插件及模板功能,支持图表权限控制和报警。
Grafana主要特性:
灵活丰富的图形化选项;
可以混合多种风格;
支持白天和夜间模式;
支持多个数据源。
CAdvisor+InfluxDB+Grafana
CAdvisor:负责收集容器随时间变化的数据;
InfluxDB:负责存储时序数据;
Grafana:负责分析和展示时序数据。
安装部署
grafana是一款开源的时序数据分析工具,而且界面专业易用
docker run -d -p 3000:3000 -v /Users/zhangxufeng/xufeng.zhang/docker/volumes/grafana:/var/lib/grafana --link=influxdb:influxdb --name grafana grafana/grafana
通过ip+3000
端口来访问grafana的web服务,第一次访问需要修改admin用户密码,默认用户名/密码为admin/admin;
谷歌的cadvisor可以用于收集docker容器的时序信息,包括容器运行过程中的资源使用情况和性能数据
docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro --volume=/cgroup:/cgroup:ro --publish=8080:8080 --detach=true --privileged=true --name=cadvisor google/cadvisor:latest -storage_driver=influxdb -storage_driver_host=influxdb:8086 -storage_driver_db=test_storage_driver_user=root -storage_driver_password=root
-d
:后台运行此容器;
--name
:启动运行容器分配的名字cadvisor;
-p
:映射端口8080;
--mount
:把宿主机的文件目录绑定到容器中,这些目录都是cadvisor需要采集的目录文件和监控内容;
-storage_driver
:需要指定cadvisro的存储驱动、数据库主机、数据库名;
--name
:启动容器分配名字influxdb;
-p
:映射端口,8083端口为influxdb管理端口,8086端口是influxdb的数据端口;
-v
:挂载数据;
-d
:后台运行此容器;
influxdb
:通过这个容器来运行的,默认会在docker官方仓库pull下来。
部署InfluxDB服务
docker run -d -p 8083:8083 -p 8086:8086 --expose 8090 --expose 8099 -v /Users/zhangxufeng/xufeng.zhang/docker/volumes/influxdb:/var/lib/influxdb --hostname=influxdb --name influx tutum/influxdb
说明
浏览器访问influxdb的管理端:http://127.0.0.1:8083
,可以看到管理页面
创建test的数据库与root用户,这个用于后期配置grafana
docker exec -it influxdb influx CREATE DATABASE "test" CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES
部署CAdvisor服务
部署grafana服务
集成的docker-compose文件
version: '3.1' volumes: grafana_data: {} services: influxdb: image: tutum/influxdb:0.9 #image: tutum/influxdb #image: influxdb restart: always #user: environment: - PRE_CREATE_DB=cadvisor ports: - "8083:8083" - "8086:8086" expose: - "8090" - "8099" volumes: - ./data/influxdb:/data cadvisor: #image: google/cadvisor:v0.29.0 image: google/cadvisor links: - influxdb:influxsrv command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086 restart: always ports: - "8080:8080" volumes: - /:/rootfs:ro - /var/run:/var/run:rw - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro grafana: #image: grafana/grafana:2.6.0 user: "104" image: grafana/grafana user: "104" #user: "472" restart: always links: - influxdb:influxsrv ports: - "3000:3000" volumes: - grafana_data:/var/lib/grafana environment: - HTTP_USER=admin - HTTP_PASS=admin - INFLUXDB_HOST=influxsrv - INFLUXDB_PORT=8086 - INFLUXDB_NAME=cadvisor - INFLUXDB_USER=root - INFLUXDB_PASS=root
到此,相信大家对“怎么选择web容器监控方案”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。