利用TICK搭建Docker容器可视化监控中心
概述
性能监控是容器服务必不可少的基础设施,容器化应用运行于宿主机上,我们需要知道该容器的运行情况,包括 CPU使用率、内存占用、网络状况以及磁盘空间等等一系列信息。在我的前文《Docker容器可视化监控中心搭建》之中我们就实践过Docker容器的可视化监控,在那篇文章中我们是使用了 cAdvisor + influxdb + grafana 技术栈来完成的。然而容器化世界里向来不会只有一种方法来实现某项功能,可以说有一百条大路来通到罗马,因此本文再来探讨另一种称为 TICK 的技术栈方案来实现Docker容器的性能监控。
基于TICK技术栈实现的Docker容器可视化监控方案架构图如下所示:
- Telegraf:采用插件机制实现的数据采集服务,可以采集包含Docker容器在内的多种性能数据
- InfluxDB:专门负责存储时序数据
- Chronograf:基于React.js编写的性能数据可视化服务
- Kapacitor:提供告警触发和处理功能
这四个组件组成了性能监控的数据管道:Telegraf负责采集节点上的性能数据,然后放入InfluxDB数据库进行存储,Kapacitor通过监听InfluxDB的性能数据来对异常指标发出告警,而Chronograf用来展示集群实时的各项性能指标和状态,提供一个可视化的界面。
下面开始实践的过程!
部署InfluxDB服务
首先准备好 InfluxDB 配置文件:influxdb.conf
mkdir /etc/influxdb cd /etc/influxdb touch influxdb.conf
[meta] dir = "/var/lib/influxdb/meta" [data] dir = "/var/lib/influxdb/data" wal-dir = "/var/lib/influxdb/wal"
然后利用Docker来启动InfluxDB服务:
docker run -d \ --name influxdb \ -p 8086:8086 \ -v /etc/influxdb/influxdb.conf:/etc/influxdb/influxdb.conf \ -v /var/lib/influxdb:/var/lib/influxdb \ docker.io/influxdb
部署Telegraf服务
Telegraf服务需要部署在需要采集数据的节点上。我们首先来准备Telegraf服务的配置文件telegraf.conf
[agent] interval = "10s" round_interval = true metric_batch_size = 1000 metric_buffer_limit = 10000 collection_jitter = "0s" flush_interval = "10s" flush_jitter = "0s" debug = false quiet = false hostname = "www.codesheep.cn" omit_hostname = false [[outputs.influxdb]] urls = ["http://192.168.31.177:8086"] database = "telegraf" username = "" password = "" write_consistency = "any" timeout = "5s" [[inputs.docker]] endpoint = "unix:///var/run/docker.sock" container_names = [] timeout = "5s" perdevice = true total = false [[inputs.cpu]] [[inputs.system]]
该配置文件比较简化,inputs插件是负责数据采集,可以看出来上面的配置说明了我们想采集节点的CPU、System以及Docker容器的各项性能数据;而outputs插件指明了我们将采集到的性能数据放入InfluxDB数据库进行存储。
然后同样利用Docker来启动Telegraf服务
docker run -d \ --name telegraf \ --network host \ -v /etc/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf \ docker.io/telegraf
Chronograf部署
docker run -d \ --name chronograf \ -p 8888:8888 \ -v /var/lib/chronograf:/var/lib/chronograf \ docker.io/chronograf \ --influxdb-url=http://192.168.31.177:8086
注意从上面的指令我们可以看出,Chronograf服务是需要连接到InfluxDB服务中去的,服务启动以后利用浏览器访问8888端口可以打开Chronograf的可视化监控界面
Kapacitor部署
docker run -d \ --name kapacitor \ -p 9092:9092 \ -v /var/lib/kapacitor:/var/lib/kapacitor \ docker.io/kapacitor
好了,至此 TICK 组件已经部署完成,我们可以查看一下宿主机上的容器情况,发现服务都已经启动起来了:
实际试验
浏览器打开:localhost:8888
来访问 Chronograf 提供的可视化界面,后续所有的操作都基于该界面。
- 点击 Chronograf 主界面左侧菜单的 Host List,可以看到被监控的节点信息:
然后我们点击节点名进入后,就可以查看从该节点上采集到的各项主要指标数据的图表:
除此之外,我们还可以点击节点上的 Apps 具体监控小类,如 docker
类别,这样可以得到仅仅与docker相关的性能数据展示:
- 然后我们点击 Chronograf 主界面左侧菜单的 Data Explorer,可以看到从InfluxDB那里获得的数据表,以及存储于InfluxDB数据表中的各项具体指标
- 最后我们来看一下如何利用Kapacitor来实现告警功能。
点击 Chronograf 主界面左侧菜单的 Alert,可以自定义创建告警规则:
这里给出一个规则配置示例:我们可以监控某个具体性能指标的变化,如配置一个告警规则等:
后记
作者更多的SpringBt实践文章在此:
- SpringBoot应用部署于外置Tomcat容器
- ElasticSearch搜索引擎在SpringBt中的实践
- 初探Kotlin+SpringBoot联合编程
- Spring Boot日志框架实践
- SpringBoot优雅编码之:Lombok加持
如果有兴趣,也可以抽点时间看看作者一些关于容器化、微服务化方面的文章:
- 从一份配置清单详解Nginx服务器配置
- 利用K8S技术栈打造个人私有云 连载文章
- Docker容器可视化监控中心搭建
- 利用ELK搭建Docker容器化应用日志中心
- RPC框架实践之:Apache Thrift
- RPC框架实践之:Google gRPC
- 微服务调用链追踪中心搭建
- Docker容器跨主机通信
- Docker Swarm集群初探

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
docker小结(nginx)
安装 # step 1: 安装必要的一些系统工具 sudo apt-get update sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common # step 2: 安装GPG证书 curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - # Step 3: 写入软件源信息 sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" # Step 4: 更新并安装 Docker-CE sudo apt-get -y update sudo apt-get -y install docker-ce docker run hello-world 其他系统看阿里加速器 docker-...
- 下一篇
知乎十万级容器规模的分布式镜像仓库实践
知乎在 2016 年已经完成了全量业务的容器化,并在自研容器平台上以原生镜像的方式部署和运行,并在后续陆续实施了 CI、Cron、Kafka、HAProxy、HBase、Twemproxy 等系列核心服务和基础组件的容器化。知乎既是容器技术的重度依赖者,也是容器技术的深度实践者,我们会陆续把容器技术的实践经验通过专栏和大家进行分享,本篇文章分享知乎在镜像仓库这个容器技术核心组件的生产实践。 基础背景 容器的核心理念在于通过镜像将运行环境打包,实现“一次构建,处处运行”,从而避免了运行环境不一致导致的各种异常。在容器镜像的发布流程中,镜像仓库扮演了镜像的存储和分发角色,并且通过 tag 支持镜像的版本管理,类似于 Git 仓库在代码开发过程中所扮演的角色,是整个容器环境中不可缺少的组成部分。 镜像仓库实现方式按使用范围可以分为 Docker Hub 和 Docker Registry 两类,前者是在公网环境下面向所有容器使用者开放的镜像服务,后者是供开发者或公司在内部环境下搭建镜像仓库服务,由于公网下载镜像的网络带宽、延迟限制以及可控性的角度考虑,在私有云环境下通常需要采用 Docker...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS关闭SELinux安全模块
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2全家桶,快速入门学习开发网站教程