怎么选择web容器监控方案
本篇内容主要讲解“怎么选择web容器监控方案”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么选择web容器监控方案”吧!
创新互联长期为上千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为木兰企业提供专业的网站制作、成都网站设计,木兰网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。
对于容器的监控方案可谓多种多样,本身自带命令
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容器监控方案”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
分享标题:怎么选择web容器监控方案
分享地址:http://pwwzsj.com/article/jspjco.html