詳解Docker容器可視化監(jiān)控中心搭建
概述
一個(gè)宿主機(jī)上可以運(yùn)行多個(gè)容器化應(yīng)用,容器化應(yīng)用運(yùn)行于宿主機(jī)上,我們需要知道該容器的運(yùn)行情況,包括 CPU使用率、內(nèi)存占用、網(wǎng)絡(luò)狀況以及磁盤(pán)空間等等一系列信息,而且這些信息隨時(shí)間變化,我們稱(chēng)其為時(shí)序數(shù)據(jù),本文將實(shí)操 如何搭建一個(gè)可視化的監(jiān)控中心 來(lái)收集這些承載著具體應(yīng)用的容器的時(shí)序信息并可視化分析與展示!
動(dòng)手了,動(dòng)手了...
準(zhǔn)備鏡像
- adviser:負(fù)責(zé)收集容器的隨時(shí)間變化的數(shù)據(jù)
- influxdb:負(fù)責(zé)存儲(chǔ)時(shí)序數(shù)據(jù)
- grafana:負(fù)責(zé)分析和展示時(shí)序數(shù)據(jù)
部署Influxdb服務(wù)
可以將其視為一個(gè)數(shù)據(jù)庫(kù)服務(wù),其確實(shí)用于存儲(chǔ)數(shù)據(jù)。之所以選用該數(shù)據(jù)庫(kù),原因正如官網(wǎng)所說(shuō):
Open Source Time Series DB Platform for Metrics & Events (Time Series Data)
下面我們將該服務(wù)部署起來(lái)
docker run -d -p 8086:8086 \ -v ~/influxdb:/var/lib/influxdb \ --name influxdb tutum/influxdb
進(jìn)入influxdb容器內(nèi)部,并執(zhí)行influx命令:
docker exec -it influxdb influx
創(chuàng)建數(shù)據(jù)庫(kù)test和root用戶(hù)用于本次試驗(yàn)測(cè)試
CREATE DATABASE "test"
CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES
部署cAdvisor服務(wù)
谷歌的cadvisor可以用于收集Docker容器的時(shí)序信息,包括容器運(yùn)行過(guò)程中的資源使用情況和性能數(shù)據(jù)。
運(yùn)行cadvisor服務(wù)
docker run -d \ -v /:/rootfs -v /var/run:/var/run -v /sys:/sys \ -v /var/lib/docker:/var/lib/docker \ --link=influxdb:influxdb --name cadvisor google/cadvisor:v0.27.3 \ --storage_driver=influxdb \ --storage_driver_host=influxdb:8086 \ --storage_driver_db=test \ --storage_driver_user=root \ --storage_driver_password=root
特別注意項(xiàng):
在運(yùn)行上述docker時(shí),這里有可能兩個(gè)其他配置項(xiàng)需要添加(CentOS, RHEL需要):
--privileged=true
設(shè)置為true之后,容器內(nèi)的root才擁有真正的root權(quán)限,可以看到host上的設(shè)備,并且可以執(zhí)行mount;否者容器內(nèi)的root只是外部的一個(gè)普通用戶(hù)權(quán)限。由于cadvisor需要通過(guò)socket訪(fǎng)問(wèn)docker守護(hù)進(jìn)程,在CentOs和RHEL系統(tǒng)中需要這個(gè)這個(gè)選項(xiàng)。
--volume=/cgroup:/cgroup:ro
對(duì)于CentOS和RHEL系統(tǒng)的某些版本(比如CentOS6),cgroup的層級(jí)掛在/cgroup目錄,所以運(yùn)行cadvisor時(shí)需要額外添加–volume=/cgroup:/cgroup:ro選項(xiàng)。
部署Grafana服務(wù)
grafana則是一款開(kāi)源的時(shí)序數(shù)據(jù)分析工具,而且界面專(zhuān)業(yè)易用,等下等部署好了,大家就能感受到:
docker run -d -p 5000:3000 \ -v ~/grafana:/var/lib/grafana \ --link=influxdb:influxdb \ --name grafana grafana/grafana
至此3個(gè)容器都已經(jīng)啟動(dòng)了:
下面開(kāi)始具體實(shí)驗(yàn)了
實(shí)戰(zhàn)
訪(fǎng)問(wèn)grafana服務(wù)
打開(kāi)localhost:5000來(lái)訪(fǎng)問(wèn)grafana的web服務(wù),此時(shí)提示你需要登錄,注意用戶(hù)名和密碼都是admin
登錄后可以看到grafana的主頁(yè)面:
看的很明顯,在Grafana上有好幾個(gè)步驟需要做,這里Install Grafana已經(jīng)完成了,接下來(lái)我們需要:
- Add data source
- Create dashboard
- …...
Add Data Source
點(diǎn)擊Add data source進(jìn)入
然后主要是Setting選項(xiàng)卡設(shè)置
我們需要根據(jù)實(shí)際情況來(lái)填寫(xiě)各項(xiàng)內(nèi)容:
Data source添加成功會(huì)予以提示
數(shù)據(jù)源添加完成以后,我們需要添加儀表盤(pán)(Dashboard)
Add Dashboard
點(diǎn)擊Add dashboard進(jìn)入
這里有很多類(lèi)型的儀表盤(pán)供選擇,我們選用最常用的Graph就好
進(jìn)入之后,點(diǎn)擊Panel Title下拉列表,再選擇Edit進(jìn)行編輯即可
在Edit里面主要的就是需要添加查詢(xún)的條件,繼續(xù)看下文
Add Query Editor
查詢(xún)條件中我們可以選擇要監(jiān)控的指標(biāo):
這里選一個(gè)memory usage好了,然后要監(jiān)控的容器選擇grafana自身好了。
當(dāng)然這里不止可以監(jiān)控一個(gè)指標(biāo),也不止可以監(jiān)控一個(gè)容器,更多組合我們只需要在下面并列著一個(gè)一個(gè)添加query條目就好!
最后我添加了三個(gè)監(jiān)控條件,分別用于監(jiān)控grafana、influxdb和cadvisor三個(gè)容器的memory usage指標(biāo),并將其同時(shí)顯示于圖中,怎么樣是不是很直觀(guān)!
這里可以摸索的設(shè)置項(xiàng)還有很多,比如一些坐標(biāo)自定義、顯示策略自定義,甚至我們還可以自定義報(bào)警策略等等
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
借助Docker搭建JMeter+Grafana+Influxdb監(jiān)控平臺(tái)的詳細(xì)教程
這篇文章主要介紹了借助Docker搭建JMeter+Grafana+Influxdb監(jiān)控平臺(tái),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01解決docker啟動(dòng)容器錯(cuò)誤:docker:Error response from dae
這篇文章主要介紹了解決docker啟動(dòng)容器錯(cuò)誤:docker:Error response from daemon:OCI runtime create failed問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05docker for windows 容器內(nèi)網(wǎng)通過(guò)獨(dú)立IP直接訪(fǎng)問(wèn)的方法
這篇文章主要介紹了docker for windows 容器內(nèi)網(wǎng)通過(guò)獨(dú)立IP直接訪(fǎng)問(wèn)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12Docker創(chuàng)建enrollment token錯(cuò)誤異常解析及解決方案
部署完kibana,需要通過(guò)enrollment token方式來(lái)連接elasticsearch,此時(shí)需要在elasticsearch中創(chuàng)建enrollment token,這篇文章主要介紹了Docker創(chuàng)建enrollment token錯(cuò)誤異常解析及解決方案,需要的朋友可以參考下2024-04-04Linux/Docker 中使用 System.Drawing.Common 踩坑記錄分享
這篇文章主要介紹了Linux/Docker 中使用 System.Drawing.Common 踩坑記錄,本文通過(guò)兩種方案給大家詳細(xì)介紹,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07基于docker-compose構(gòu)建Mongodb副本集的示例詳解
副本集是?MongoDB?高可用性和數(shù)據(jù)安全性策略的基礎(chǔ),適用于對(duì)數(shù)據(jù)安全性和服務(wù)可用性有較高要求的場(chǎng)景,本文給大家介紹了如何基于docker-compose構(gòu)建Mongodb副本集,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01