之前断断续续写过几篇关于Docker技术的文章:Docker容器系列文章|Docker技术介绍(一)Docker容器系列文章|Docker技术介绍(二)DockerContainer系列|这20条Docker命令你知道几个?Docker容器系列文章|Docker容器技术之Docker档案今天和大家聊一聊容器监控这个话题。为什么需要监控??在一台物理机上运行多个容器应用时,需要知道容器的运行状态,比如CPU使用率、内存使用率、网络状态、磁盘空间等,所以监控是很有必要的。容器的监控方案多种多样,它自带命令dockerstats。[root@docker~]#dockerstatsCONTAINERCPU%MEMUSAGE/LIMITMEM%NETI/OBLOCKI/OPIDSbd96d72ed9c70.04%14.97MiB/7.64GiB0.19%8.22MB/805MB0B/0B9615563101eb71Mi0/7.64GiB0.23%19.7MB/18.5MB0B/39.4MB8f2304dad58550.18%98.45MiB/7.64GiB1.26%1.07GB/9.97MB0B/2.13GB+Grafana。组件介绍cAdvisor:用于数据收集的cadvisor,谷歌自己用来监控其基础设施的工具。这个工具功能强大,不仅可以监控docker容器的实时信息,还可以将你的cadvisor发送到容器所在的主机。系统的实时信息,但是因为cadvisor只能监控实时信息,不能保存。InfluxDB:用于数据存储InfluxDB是一个开源的分布式时序、事件和指标数据库,使用Go语言编写,无外部依赖。所以我们需要使用influxdb来存储这些实时监控的信息。InfluxDB的主要特点是基于时间序列,支持时间相关的函数(如最大值、最小值、求和等);可测量性:可以实时计算大量数据;基于事件:它支持任意事件数据;InfluxDB主要特点Unstructured(无模式)可以扩展任意数量的列;支持min、max、sum、count、mean、median等一系列函数,方便统计原生HTTP支持,内置HTTPAPI强大的类SQL语法自带管理界面,简单易用参考文章:https://www.influxdata.com/pr...Grafana:用于数据展示Grafana是一个可视化面板(Dashboard),有非常漂亮的图表和布局展示,功能齐全的一个指标仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus、OpenTSDB作为数据源。Grafana的主要特点:灵活丰富的图形化选项可以混合多种样式,支持昼夜模式多数据源。安装部署过程首先要有docker环境,这里就不用介绍了。请参考上一篇1.部署influxDB服务[root@master~]#dockerrun-d--nameinfluxdb-p8086:8086tutum/influxdbUnabletofindimage'tutum/influxdb:latest'locallyTryingtopullrepositorydocker.io/tutum/influxdb...latest:Pullingfromdocker.io/tutum/influxdba3ed95caeb02:Pullcomplete23efb549476f:Pullcompleteaa2f8df21433:Pull42dcompleteef9c9f371853f28:Pullcompletea248b0871c3c:Pullcomplete749db6d368d0:Pullcompletedb2492acfcc3:Pullcompleteb7e7d2e12d53:Pullcomplete4272a53eef10:Pullcomplete9b2fefdb5321:PullcompleteDigest:sha256:5b7c5e318303ad059f3d1a73d084c12cb39ae4f35f7391b79b0ff2c0ba45304bStatus:Downloadednewerimagefordocker.io/tutum/influxdb:latestf384db08ffc78e01fc27bf4c35dc6503b0fd2473cd8d5114b4d8a5475f928b53说明:-d:Runthiscontainerinthebackground--name:Thenameassignedtothe启动容器influxdb-p:映射端口,8083端口是infuxdb的管理端口,8086端口是infuxdb的数据端口tutum/influxdb:通过这个容器运行,默认会在docker官方仓库拉下来查看容器[root@master~]#dockerpsCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMESf2304dad5855tutum/influxdb"/run.sh"4secondsagoUp4seconds0.0.0.0:8083->8083/tcp,0.0.0.0:8086->8086/tcpinfluxdb现在可以通过浏览器使用进入influxdb的管理终端,然后创建cadvisor的数据库和用户,用于后面配置granfa,回车直接创建如下图。2.部署cadvisor服务[root@master~]#dockerrun-d\--name=cadvisor\-p8082: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无法findimage'google/cadvisor:latest'locallyTryingtopullrepositorydocker.io/google/cadvisor...latest:Pullingfromdocker.io/google/cadvisorab7e51e37a18:Pullcompletea2dc2f1bce51:Pullcomplete3b017de60d4f:Pullcomplete2Dig9e347affc725efd3bfe95aa69362cf833aa810f84e6cb9eed1cb65c35216632aStatus:为docker.io/google/cadvisor下载了更新的镜像:latesta212dc33c9424b6e36485334511e6317bdebc06977b9af374b81b0cab113e724描述:-d:在后台运行这个容器--name:启动容器分配名称cadvisor-pvis:端口808080882:8被映射端口占用8080:8默认端口为8080,不建议修改)-v:将宿主机的目录映射到容器,这些目录是cadviso需要收集的目录文件和监控内容-storage_driver:需要指定cadvisor的存储驱动、数据库主机、数据库名称/cadvisor:通过cadvisor的镜像运行容器。默认情况下,镜像会从docker官方仓库中拉取;查看cadvisor容器:[root@master~]#dockerpsCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMESa212dc33c942google/cadvisor"/usr/bin/cadvisor..."2分钟前Up2分钟0.0.0.0:8082->8080/tcpCadvisor现在可以通过浏览访问Cadvisor的管理页面Cadvisor的基本图形功能也很酷测试是否写入influxdb数据库3.发布部门granafa[root@master~]#dockerrun-d--namegrafana-p3000:3000grafana/grafana无法在本地找到图像“grafana/grafana:latest”尝试拉存储库docker.io/grafana/grafana...latest:Pullingfromdocker.io/grafana/grafanaf2aa67a397c4:Pullcomplete89573effc7c8:Pullcompleteb55c103da375:PullcompleteDigest:sha256:364bec4a39ecbec744ea4270aae35f6554eb6f2047b3ee08f7b5f1134857c32cStatus:Downloadednewerimagefordocker.io/grafana/grafana:latest665563143eb74e5e2e76b7a1533cbf67a68590d355b0b22d453eac07e0e0b616[root@master~]#dockerpsCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES665563143eb7grafana/grafana"/run.sh"48秒前Up47秒0.0.0.0:3000->3000/tcpgrafana访问WEB管理终端用户名:密码admin:admin添加数据后源,保存并测试连接以创建一个新的仪表板。这里随机选择一个容器进行测试。实际环境可以根据实际环境填写保存。回到HOME界面后,最终效果图如下图所示。欢迎关注我的微信公众号:农民工科技之路
