利用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 · 程序羊
相關文章
相關標籤/搜索