V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hansonwang99
V2EX  ›  程序员

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

  •  
  •   hansonwang99 ·
    hansonwang99 · 2018-07-05 07:14:03 +08:00 · 2655 次点击
    这是一个创建于 2332 天前的主题,其中的信息可能已经有所发展或是发生改变。

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


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



    3 条回复    2018-07-19 09:15:42 +08:00
    hansonwang99
        1
    hansonwang99  
    OP
       2018-07-05 11:54:26 +08:00 via iPhone
    自顶一下吧
    nosay
        2
    nosay  
       2018-07-05 12:44:57 +08:00 via iPhone
    马克
    feejson
        3
    feejson  
       2018-07-19 09:15:42 +08:00
    战略马克
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2766 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:50 · PVG 19:50 · LAX 03:50 · JFK 06:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.