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

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

來自專欄騰訊雲+社區7 人贊了文章

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

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

概述

性能監控是容器服務必不可少的基礎設施,容器化應用運行於宿主機上,我們需要知道該容器的運行情況,包括 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/influxdbcd /etc/influxdbtouch 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,可以自定義創建告警規則:

自定義創建告警規則

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

規則配置示例


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

此文已由作者授權騰訊雲+社區發布,原文鏈接:cloud.tencent.com/devel

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


推薦閱讀:

木犀互聯網技術周刊(第三十三期)
Android emulator與hyper-v共存
安裝Express遇到的坑
剪斷枷鎖——延遲綁定
開始寫點什麼

TAG:科技 | 數據分析 | 計算機科學 |