Docker視覺化監控?看這篇文章

騰訊雲加社群發表於2018-07-06

歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~

本文由CodeSheep 發表於雲+社群專欄

img


概述

效能監控是容器服務必不可少的基礎設施,容器化應用執行於宿主機上,我們需要知道該容器的執行情況,包括 CPU使用率、記憶體佔用、網路狀況以及磁碟空間等等一系列資訊。在我的前文《Docker容器視覺化監控中心搭建》之中我們就實踐過Docker容器的視覺化監控,在那篇文章中我們是使用了 cAdvisor + influxdb + grafana 技術棧來完成的。然而容器化世界裡向來不會只有一種方法來實現某項功能,可以說有一百條大路來通到羅馬,因此本文再來探討另一種稱為 TICK 的技術棧方案來實現Docker容器的效能監控。

基於TICK技術棧實現的Docker容器視覺化監控方案架構圖如下所示:

img
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 元件已經部署完成,我們可以檢視一下宿主機上的容器情況,發現服務都已經啟動起來了:

img
容器執行情況



實際試驗

瀏覽器開啟:localhost:8888來訪問 Chronograf 提供的視覺化介面,後續所有的操作都基於該介面。

  • 點選 Chronograf 主介面左側選單的 Host List,可以看到被監控的節點資訊:

img
被監控的節點資訊

然後我們點選節點名進入後,就可以檢視從該節點上採集到的各項主要指標資料的圖表:

img
檢視節點的各項效能資料

除此之外,我們還可以點選節點上的 Apps 具體監控小類,如 docker類別,這樣可以得到僅僅與docker相關的效能資料展示:

img
檢視docker小類的效能指標資料

img
docker小類的效能指標資料展示

  • 然後我們點選 Chronograf 主介面左側選單的 Data Explorer,可以看到從InfluxDB那裡獲得的資料表,以及儲存於InfluxDB資料表中的各項具體指標

img
Data Explorer

  • 最後我們來看一下如何利用Kapacitor來實現告警功能。

點選 Chronograf 主介面左側選單的 Alert,可以自定義建立告警規則:

img
自定義建立告警規則

這裡給出一個規則配置示例:我們可以監控某個具體效能指標的變化,如配置一個告警規則等:

img
規則配置示例


問答 docker和docker-compose有什麼不同? 相關閱讀 童航君:騰訊雲CIS服務和clear container 小白也能玩轉Kubernetes 你與大神只差這幾步 王蘊達:騰訊雲 Kubernetes 一鍵部署實踐

**此文已由作者授權騰訊雲+社群釋出,原文連結:https://cloud.tencent.com/developer/article/1157231?fromSource=waitui **

歡迎大家前往騰訊雲+社群或關注雲加社群微信公眾號(QcloudCommunity),第一時間獲取更多海量技術實踐乾貨哦~

相關文章