利用TICK搭建Docker容器可视化监控中心

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

Profile


概述

性能监控是容器服务必不可少的基础设施,容器化应用运行于宿主机上,我们需要知道该容器的运行情况,包括 CPU使用率、内存占用、网络状况以及磁盘空间等等一系列信息。在我的前文《Docker容器可视化监控中心搭建》之中我们就实践过Docker容器的可视化监控,在那篇文章中我们是使用了 cAdvisor + influxdb + grafana 技术栈来完成的。然而容器化世界里向来不会只有一种方法来实现某项功能,可以说有一百条大路来通到罗马,因此本文再来探讨另一种称为 TICK 的技术栈方案来实现Docker容器的性能监控。

基于TICK技术栈实现的Docker容器可视化监控方案架构图如下所示:

TICK方案架构

  • 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相关的性能数据展示:

查看docker小类的性能指标数据

docker小类的性能指标数据展示

  • 然后我们点击 Chronograf 主界面左侧菜单的 Data Explorer,可以看到从InfluxDB那里获得的数据表,以及存储于InfluxDB数据表中的各项具体指标

Data Explorer

  • 最后我们来看一下如何利用Kapacitor来实现告警功能。

点击 Chronograf 主界面左侧菜单的 Alert,可以自定义创建告警规则:

自定义创建告警规则

这里给出一个规则配置示例:我们可以监控某个具体性能指标的变化,如配置一个告警规则等:

规则配置示例



后记

作者更多的SpringBt实践文章在此:


如果有兴趣,也可以抽点时间看看作者一些关于容器化、微服务化方面的文章:



目录
相关文章
|
2天前
|
存储 Docker 容器
docker中挂载数据卷到容器
【10月更文挑战第12天】
14 5
|
3天前
|
存储 测试技术 开发者
docker中将数据卷挂载到容器
【10月更文挑战第11天】
13 3
|
3天前
|
存储 应用服务中间件 云计算
深入解析:云计算中的容器化技术——Docker实战指南
【10月更文挑战第14天】深入解析:云计算中的容器化技术——Docker实战指南
14 1
|
2天前
|
存储 Kubernetes 监控
深入探索Docker容器化技术的奥秘
【10月更文挑战第15天】深入探索Docker容器化技术的奥秘
10 0
|
3天前
|
运维 Kubernetes 监控
掌握Docker容器化技术:构建、部署与管理的高效实践
【10月更文挑战第14天】掌握Docker容器化技术:构建、部署与管理的高效实践
12 0
|
3天前
|
前端开发 Docker 容器
主机host服务器和Docker容器之间的文件互传方法汇总
Docker 成为前端工具,可实现跨设备兼容。本文介绍主机与 Docker 容器/镜像间文件传输的三种方法:1. 构建镜像时使用 `COPY` 或 `ADD` 指令;2. 启动容器时使用 `-v` 挂载卷;3. 运行时使用 `docker cp` 命令。每种方法适用于不同场景,如静态文件打包、开发时文件同步及临时文件传输。注意权限问题、容器停止后的文件传输及性能影响。
|
7天前
|
存储 运维 云计算
探索Docker容器化:从入门到实践
在这个快速发展的云计算时代,Docker容器化技术正在改变应用的开发、部署和管理方式。本文旨在为初学者提供一个关于Docker的全面入门指南,并通过实践案例展示Docker在实际开发中的应用。我们将一起了解Docker的核心概念、基本操作、网络和存储,以及如何构建和部署一个简单的Web应用。无论你是开发者还是运维人员,本文都会帮助你快速掌握Docker的核心技能。
|
4天前
|
缓存 运维 Docker
容器化运维:Docker Desktop 占用磁盘空间过大?教你轻松解决!
Windows Docker Desktop 使用过程中,因镜像、容器数据及构建缓存的累积,可能导致磁盘空间占用过高。通过删除无用镜像与容器、压缩磁盘以及清理构建缓存等方法,可有效释放空间。具体步骤包括关闭WSL、使用`diskpart`工具压缩虚拟磁盘、执行`docker buildx prune -f`清理缓存等。这些操作能显著减少磁盘占用,提升系统性能。
|
8天前
|
运维 JavaScript 虚拟化
探索容器化技术:Docker的实践与应用
【10月更文挑战第9天】探索容器化技术:Docker的实践与应用
33 3
|
9天前
|
安全 Cloud Native Shell
云上攻防:云原生篇&Docker容器逃逸
本文介绍了Docker的基本概念及其对渗透测试的影响,重点讲解了容器逃逸的方法。Docker是一种轻量级的容器技术,与虚拟机相比,具有更高的便携性和资源利用率。然而,这也带来了安全风险,特别是容器逃逸问题。文章详细描述了三种常见的容器逃逸方法:不安全的配置、相关程序漏洞和内核漏洞,并提供了具体的检测和利用方法。此外,还介绍了几种特定的漏洞(如CVE-2019-5736和CVE-2020-15257)及其复现步骤,帮助读者更好地理解和应对这些安全威胁。
云上攻防:云原生篇&Docker容器逃逸