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


概述

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

注: 本文首发于 My 公众号 CodeSheep ,可 长按扫描 下面的 当心心 来订阅 ↓ ↓ ↓数据库

CodeSheep · 程序羊



TICK架构解析

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

TICK方案架构

  • Telegraf:采用插件机制实现的数据采集服务,能够采集包含Docker容器在内的多种性能数据c#

  • InfluxDB:专门负责存储时序数据浏览器

  • Chronograf:基于React.js编写的性能数据可视化服务bash

  • 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实践文章在此:


若是有兴趣,也能够抽点时间看看做者一些关于容器化、微服务化方面的文章:


CodeSheep · 程序羊
相关文章
相关标签/搜索