摘要:在我的前文容器可視化監控中心搭建之中我們就實踐過容器的可視化監控,在那篇文章中我們是使用了技術棧來完成的。
性能監控是容器服務必不可少的基礎設施,容器化應用運行于宿主機上,我們需要知道該容器的運行情況,包括 CPU使用率、內存占用、網絡狀況以及磁盤空間等等一系列信息。在我的前文《Docker容器可視化監控中心搭建》之中我們就實踐過Docker容器的可視化監控,在那篇文章中我們是使用了 cAdvisor + influxdb + grafana 技術棧來完成的。然而容器化世界里向來不會只有一種方法來實現某項功能,可以說有一百條大路來通到羅馬,因此本文再來探討另一種稱為 TICK 的技術棧方案來實現Docker容器的性能監控。
注: 本文首發于 My 公眾號 CodeSheep ,可 長按 或 掃描 下面的 小心心 來訂閱 ↓ ↓ ↓
基于TICK技術棧實現的Docker容器可視化監控方案架構圖如下所示:
Telegraf:采用插件機制實現的數據采集服務,可以采集包含Docker容器在內的多種性能數據
InfluxDB:專門負責存儲時序數據
Chronograf:基于React.js編寫的性能數據可視化服務
Kapacitor:提供告警觸發和處理功能
這四個組件組成了性能監控的數據管道:Telegraf負責采集節點上的性能數據,然后放入InfluxDB數據庫進行存儲,Kapacitor通過監聽InfluxDB的性能數據來對異常指標發出告警,而Chronograf用來展示集群實時的各項性能指標和狀態,提供一個可視化的界面。
下面開始實踐的過程!
首先準備好 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.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
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的可視化監控界面
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相關的性能數據展示:
然后我們點擊 Chronograf 主界面左側菜單的 Data Explorer,可以看到從InfluxDB那里獲得的數據表,以及存儲于InfluxDB數據表中的各項具體指標
最后我們來看一下如何利用Kapacitor來實現告警功能。
點擊 Chronograf 主界面左側菜單的 Alert,可以自定義創建告警規則:
這里給出一個規則配置示例:我們可以監控某個具體性能指標的變化,如配置一個告警規則等:
作者更多的原創文章在此,歡迎觀賞
My Personal Blog
作者更多的SpringBt實踐文章在此:
Spring Boot應用監控實戰
SpringBoot應用部署于外置Tomcat容器
ElasticSearch搜索引擎在SpringBt中的實踐
初探Kotlin+SpringBoot聯合編程
Spring Boot日志框架實踐
SpringBoot優雅編碼之:Lombok加持
如果有興趣,也可以抽點時間看看作者一些關于容器化、微服務化方面的文章:
利用K8S技術棧打造個人私有云 連載文章
從一份配置清單詳解Nginx服務器配置
Docker容器可視化監控中心搭建
利用ELK搭建Docker容器化應用日志中心
RPC框架實踐之:Apache Thrift
RPC框架實踐之:Google gRPC
微服務調用鏈追蹤中心搭建
Docker容器跨主機通信
Docker Swarm集群初探
高效編寫Dockerfile的幾條準則
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27367.html
摘要:在構建鏡像的過程中會緩存一系列中間鏡像。鏡像時,會順序執行中的指令,并同時比較當前指令和其基礎鏡像的所有子鏡像,若發現有一個子鏡像也是由相同的指令生成,則命中緩存,同時可以直接使用該子鏡像而避免再去重新生成了。 showImg(https://segmentfault.com/img/remote/1460000015606308?w=2000&h=1428); 概述 Docker...
showImg(https://segmentfault.com/img/remote/1460000014421849); 概述 一個宿主機上可以運行多個容器化應用,容器化應用運行于宿主機上,我們需要知道該容器的運行情況,包括 CPU使用率、內存占用、網絡狀況以及磁盤空間等等一系列信息,而且這些信息隨時間變化,我們稱其為時序數據,本文將實操 如何搭建一個可視化的監控中心 來收集這些承載著具體應...
摘要:是一個時序數據庫,專門用于存儲時序相關數據,很適合存儲的數據。容器監控數據存儲配置和運行是一個開源的分布式時序數據庫,使用語言開發。的特色功能作為時序數據庫,相比傳統數據庫它有很多特色功能,比如獨有的一些特色函數和連續查詢功能。 本文已獲得原作者__七把刀__授權。 隨著線上服務的全面 docker 化,對 docker 容器的監控就很重要了。SA 的監控系統是物理機的監控,在一個物理...
摘要:是一個時序數據庫,專門用于存儲時序相關數據,很適合存儲的數據。容器監控數據存儲配置和運行是一個開源的分布式時序數據庫,使用語言開發。的特色功能作為時序數據庫,相比傳統數據庫它有很多特色功能,比如獨有的一些特色函數和連續查詢功能。 本文已獲得原作者__七把刀__授權。 隨著線上服務的全面 docker 化,對 docker 容器的監控就很重要了。SA 的監控系統是物理機的監控,在一個物理...
摘要:概述應用一旦容器化以后,需要考慮的就是如何采集位于容器中的應用程序的打印日志供運維分析。 showImg(https://segmentfault.com/img/remote/1460000014146680); 概述 應用一旦容器化以后,需要考慮的就是如何采集位于Docker容器中的應用程序的打印日志供運維分析。典型的比如 SpringBoot應用的日志 收集。本文即將闡述如何利...
閱讀 3278·2023-04-26 00:57
閱讀 600·2021-10-08 10:05
閱讀 1345·2021-09-08 09:36
閱讀 4147·2021-08-12 13:31
閱讀 2542·2019-08-30 15:55
閱讀 2237·2019-08-30 15:55
閱讀 1013·2019-08-30 15:55
閱讀 2684·2019-08-29 13:17