目錄
案例概述
Cadvisor +InfluxDB+Grafana
1.1、?Cadvisor?
1.2、InfluxDB
1.3、Grafana
1.4、監(jiān)控組件架構(gòu)
1.5、開(kāi)始部署
安裝docker-ce
阿里云鏡像加速器
創(chuàng)建自定義網(wǎng)絡(luò)
創(chuàng)建influxdb容器
案例概述
????????Docker作為目前十分出色的容器管理技術(shù),得到大量企業(yè)的青睞,在生產(chǎn)環(huán)境中使用Docker容器部署服務(wù)及應(yīng)用的場(chǎng)景越來(lái)越多。所以面對(duì)日益龐大的docker服務(wù)群應(yīng)用,如何具有針對(duì)性的,有效的監(jiān)控也變成了企業(yè)運(yùn)維人員工作需求。
????????容器信息采集及監(jiān)控的方案有很多,有docker自身的docker stats命令、Scout、Data Dog、Prometheus等,本次為大家分享兩款比較經(jīng)典的容器開(kāi)源監(jiān)控組合方案Cadvisor +InfluxDB+Grafana和Cadvisor +Prometheus+Grafana。
Cadvisor +InfluxDB+Grafana
1.1、?Cadvisor?
????????Cadvisor 是Google用來(lái)監(jiān)測(cè)單節(jié)點(diǎn)資源信息的監(jiān)控工具。?Cadvisor 提供了基礎(chǔ)查詢界面和http接口,方便其他組件如Grafana?、Prometheus等進(jìn)行數(shù)據(jù)抓取。Cadvisor 可以對(duì)Docker主機(jī)上的資源及容器進(jìn)行實(shí)時(shí)監(jiān)控和性能數(shù)據(jù)采集,包括CPU使用情況、內(nèi)存使用情況、網(wǎng)絡(luò)吞吐量及文件系統(tǒng)使用情況等。Cadvisor 使用Go語(yǔ)言開(kāi)發(fā),利用Linux的Cgroups獲取容器的資源使用信息。
????????Google的Kubernetes中也默認(rèn)地將其作為單節(jié)點(diǎn)的資源監(jiān)控工具,各個(gè)節(jié)點(diǎn)默認(rèn)會(huì)安裝上Cadvisor組件。
Cadvisor 產(chǎn)品特點(diǎn):
- 可以展示主機(jī)和容器兩個(gè)層次的監(jiān)控?cái)?shù)據(jù)。
- 可以展示歷史變化數(shù)據(jù)。
- 谷歌公司的開(kāi)源產(chǎn)品。
- 監(jiān)控指標(biāo)齊全。
- 方便部署,有官方的docker鏡像。
- 默認(rèn)只在本地保存1分鐘數(shù)據(jù),可以集成InfluxDB等第三方存儲(chǔ)使用。
????????由于 Cadvisor 提供的操作界面略顯簡(jiǎn)陋,而且需要在不同頁(yè)面之間跳轉(zhuǎn),并且只能監(jiān)控一個(gè) Host,這不免會(huì)讓人質(zhì)疑它的實(shí)用性。但 Cadvisor 的一個(gè)亮點(diǎn)是它可以將監(jiān)控到的數(shù)據(jù)導(dǎo)出給第三方工具,由這些工具進(jìn)一步加工處理。
????????我們可以把 Cadvisor ?定位為一個(gè)監(jiān)控?cái)?shù)據(jù)收集器,收集和導(dǎo)出數(shù)據(jù)是它的強(qiáng)項(xiàng),而非展示數(shù)據(jù)。
1.2、InfluxDB
????????InfluxDB是一個(gè)由InfluxData開(kāi)發(fā)的開(kāi)源非關(guān)系型時(shí)序型數(shù)據(jù)庫(kù)。它由Go寫成,著力于高性能地查詢與存儲(chǔ)時(shí)序型數(shù)據(jù)。InfluxDB被廣泛應(yīng)用于存儲(chǔ)系統(tǒng)的監(jiān)控?cái)?shù)據(jù),IoT行業(yè)的實(shí)時(shí)數(shù)據(jù)等場(chǎng)景。同類型的數(shù)據(jù)庫(kù)產(chǎn)品還有Elasticsearch、Graphite等。
????????InfluxDB應(yīng)用場(chǎng)景:性能監(jiān)控,應(yīng)用程序指標(biāo),物聯(lián)網(wǎng)傳感器數(shù)據(jù)和實(shí)時(shí)分析等的后端存儲(chǔ)。
InfluxDB主要功能
- 基于時(shí)間序列,支持與時(shí)間有關(guān)的相關(guān)函數(shù)(如最大,最小,求和等);
- 可度量性:你可以實(shí)時(shí)對(duì)大量數(shù)據(jù)進(jìn)行計(jì)算;
- 基于事件:它支持任意的事件數(shù)據(jù);
InfluxDB主要特點(diǎn)
- 無(wú)結(jié)構(gòu)(無(wú)模式):可以是任意數(shù)量的列;
- 支持拓展;
- 支持min, max, sum, count, mean, median 等一系列函數(shù),方便統(tǒng)計(jì);
- 原生的HTTP支持,內(nèi)置HTTP API;
- 強(qiáng)大的類SQL語(yǔ)法;
- 自帶管理界面,方便使用;
1.3、Grafana
????????Grafana是一個(gè)可視化面板(Dashboard)工具,有著非常漂亮的圖表和布局等展示功能,功能齊全的度量?jī)x表盤和圖形編輯器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB等組件作為數(shù)據(jù)源。
Grafana主要特性
- 靈活豐富的圖形化選項(xiàng);
- 可以混合多種風(fēng)格;
- 支持白天和夜間模式;
- 支持多個(gè)數(shù)據(jù)源;
1.4、監(jiān)控組件架構(gòu)
監(jiān)控組件架構(gòu)圖:
?
提示:InfluxDB用于數(shù)據(jù)存儲(chǔ),Cadvisor 用戶數(shù)據(jù)采集,Grafana用于數(shù)據(jù)展示。
監(jiān)控組件架構(gòu)部署方案:
- 創(chuàng)建自定義網(wǎng)絡(luò)monitor(自定義網(wǎng)絡(luò)名稱),用于后期容器加入此網(wǎng)絡(luò)中;
- 創(chuàng)建Influxdb容器,創(chuàng)建數(shù)據(jù)用戶、數(shù)據(jù)庫(kù);
- 創(chuàng)建Cadvisor 容器;
- 創(chuàng)建Grafana容器,配置grafana;
?
1.5、開(kāi)始部署
安裝docker-ce
[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
setenforce: SELinux is disabled
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost ~]# wget http://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
[root@localhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost ~]# yum -y install docker-ce
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl enable docker
[root@localhost ~]# docker version
Client: Docker Engine - Community
Version: 24.0.5
API version: 1.43
Go version: go1.20.6
Git commit: ced0996
Built: Fri Jul 21 20:39:02 2023
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 24.0.5
API version: 1.43 (minimum version 1.12)
Go version: go1.20.6
Git commit: a61e2b4
Built: Fri Jul 21 20:38:05 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.22
GitCommit: 8165feabfdfe38c65b599c4993d227328c231fca
runc:
Version: 1.1.8
GitCommit: v1.1.8-0-g82f18fe
docker-init:
Version: 0.19.0
GitCommit: de40ad0
阿里云鏡像加速器
阿里云登錄 - 歡迎登錄阿里云,安全穩(wěn)定的云計(jì)算服務(wù)平臺(tái)歡迎登錄阿里云,全球領(lǐng)先的云計(jì)算及人工智能科技公司,阿里云為200多個(gè)國(guó)家和地區(qū)的企業(yè)、開(kāi)發(fā)者和政府機(jī)構(gòu)提供云計(jì)算基礎(chǔ)服務(wù)及解決方案。阿里云云計(jì)算、安全、大數(shù)據(jù)、人工智能、企業(yè)應(yīng)用、物聯(lián)網(wǎng)等云計(jì)算服務(wù)。https://cr.console.aliyun.com/
[root@localhost ~]# cat << END > /etc/docker/daemon.json
{
"registry-mirrors":[ "https://nyakyfun.mirror.aliyuncs.com" ]
}
END
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
?下載組件鏡像
[root@localhost ~]# docker pull tutum/influxdb
Using default tag: latest
latest: Pulling from tutum/influxdb
a3ed95caeb02: Pull complete
23efb549476f: Pull complete
aa2f8df21433: Pull complete
ef072d3c9b41: Pull complete
c9f371853f28: Pull complete
a248b0871c3c: Pull complete
749db6d368d0: Pull complete
db2492acfcc3: Pull complete
b7e7d2e12d53: Pull complete
4272a53eef10: Pull complete
9b2fefdb5321: Pull complete
Digest: sha256:5b7c5e318303ad059f3d1a73d084c12cb39ae4f35f7391b79b0ff2c0ba45304b
Status: Downloaded newer image for tutum/influxdb:latest
docker.io/tutum/influxdb:latest
[root@localhost ~]# docker pull google/cadvisor
Using default tag: latest
latest: Pulling from google/cadvisor
ff3a5c916c92: Pull complete
44a45bb65cdf: Pull complete
0bbe1a2fe2a6: Pull complete
Digest: sha256:815386ebbe9a3490f38785ab11bda34ec8dacf4634af77b8912832d4f85dca04
Status: Downloaded newer image for google/cadvisor:latest
docker.io/google/cadvisor:latest
[root@localhost ~]# docker pull grafana/grafana
Using default tag: latest
latest: Pulling from grafana/grafana
97518928ae5f: Pull complete
5b58818b7f48: Pull complete
d9a64d9fd162: Pull complete
4e368e1b924c: Pull complete
867f7fdd92d9: Pull complete
387c55415012: Pull complete
07f94c8f51cd: Pull complete
ce8cf00ff6aa: Pull complete
e44858b5f948: Pull complete
4000fdbdd2a3: Pull complete
Digest: sha256:18d94ae734accd66bccf22daed7bdb20c6b99aa0f2c687eea3ce4275fe275062
Status: Downloaded newer image for grafana/grafana:latest
docker.io/grafana/grafana:latest
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
grafana/grafana latest 9b957e098315 20 months ago 275MB
google/cadvisor latest eb1210707573 4 years ago 69.6MB
tutum/influxdb latest c061e5808198 6 years ago 290MB
創(chuàng)建自定義網(wǎng)絡(luò)
????????為了把后期創(chuàng)建的Cadvisor+InfluxDB+Grafana這三個(gè)容器都加入自己定義的網(wǎng)絡(luò)便于理解和管理,所以才新建一個(gè)自定義網(wǎng)絡(luò)。
[root@localhost ~]# docker network create monitor
bfe09a56d338b3173da008204dac13e46873ab8c46601683bba6457178e7dbcc
[root@localhost ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
dbe5fb2353e8 bridge bridge local
fc4521838733 host host local
bfe09a56d338 monitor bridge local
4e2c57eec484 none null local
創(chuàng)建influxdb容器
啟動(dòng)容器,tutum/influxdb鏡像這里沒(méi)有指定版本,默認(rèn)會(huì)pull最新版本的influxdb:
[root@localhost ~]# docker run -d --name influxdb --net monitor -p 8083:8083 -p 8086:8086 tutum/influxdb
ec8e368b7d5e6f7b525fc823fdcc2c9f3d8665712645babcf0bba8bfeffe18a3
?
參數(shù)說(shuō)明:
- -d :后臺(tái)運(yùn)行此容器;
- --name :?jiǎn)⑦\(yùn)容器分配名字influxdb;
- --net : 把容器加入到新的網(wǎng)絡(luò)monitor;
- -p :映射端口,8083端口為infuxdb后臺(tái)控制端口,8086端口是infuxdb的數(shù)據(jù)端口;
- tutum/influxdb:通過(guò)這個(gè)容器來(lái)運(yùn)行的,默認(rèn)會(huì)在docker官方倉(cāng)庫(kù)pull下來(lái);
查看influxdb容器是否啟動(dòng):
[root@localhost ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ec8e368b7d5e tutum/influxdb "/run.sh" 45 seconds ago Up 43 seconds 0.0.0.0:8083->8083/tcp, :::8083->8083/tcp, 0.0.0.0:8086->8086/tcp, :::8086->8086/tcp influxdb
?訪問(wèn)influxdb控制臺(tái)http://192.168.2.118:8083;
?
?
?
????????從上圖可以看到,在Query Templates選項(xiàng)中提供了常用的操作模板,可根據(jù)這些模版來(lái)管理influxdb,下面我們就來(lái)創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)用戶。
CREATE USER "root" WITH PASSWORD '123456' WITH ALL PRIVILEGES
?
?創(chuàng)建Cadvisor 數(shù)據(jù)庫(kù)cadvisor 、用戶root,用戶和數(shù)據(jù)庫(kù)大家可以自行隨意定義,用于后期grafana的配置:
CREATE DATABASE "cadvisor"
?
?創(chuàng)建Cadvisor 容器
[root@localhost ~]# docker run -d --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --net monitor --publish=8080:8080 --name=cadvisor google/cadvisor -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb:8086
3090cec78b680888f6c14776b3aaaa785676577fe2f781a09373a2a43397a1ac
- -d:后臺(tái)運(yùn)行此容器;
- --name:?jiǎn)⑦\(yùn)容器分配名字Cadvisor ;
- --net:把容器加入到新的網(wǎng)絡(luò)monitor;
- -p:映射端口8080;
- --mout:把宿主機(jī)的相文目錄綁定到容器中,這些目錄都是Cadvisor 需要采集的目錄文件和監(jiān)控內(nèi)容;
- -storage_driver:需要指定Cadvisor 的存儲(chǔ)驅(qū)動(dòng)、數(shù)據(jù)庫(kù)主機(jī)、數(shù)據(jù)庫(kù)名;
- google/Cadvisor :通過(guò)Cadvisor 這個(gè)鏡像來(lái)運(yùn)行容器,默認(rèn)會(huì)在docker官方倉(cāng)庫(kù)把鏡像pull下來(lái);
查看Cadvisor 容器:
?
[root@localhost ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3090cec78b68 google/cadvisor "/usr/bin/cadvisor -…" About a minute ago Up About a minute 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp cadvisor
通過(guò)http://192.168.2.118:8080端口訪問(wèn)測(cè)試一下,第一次訪問(wèn)這個(gè)頁(yè)面有點(diǎn)慢
?
?
????????從上圖可以看到,其實(shí)Cadvisor 也有基礎(chǔ)的圖形展示功能,我們這里主要用它來(lái)做數(shù)據(jù)采集。
準(zhǔn)備測(cè)試鏡像
[root@localhost ~]# docker run -itd --name nginx -p 800:80 nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
648e0aadf75a: Pull complete
262696647b70: Pull complete
e66d0270d23f: Pull complete
55ac49bd649c: Pull complete
cbf42f5a00d2: Pull complete
8015f365966b: Pull complete
4cadff8bc2aa: Pull complete
Digest: sha256:67f9a4f10d147a6e04629340e6493c9703300ca23a2f7f3aa56fe615d75d31ca
Status: Downloaded newer image for nginx:latest
19eb36575c3e16b5ebbc94cdd89d7c7f89642f223eab8d9190e8070b33a6714b
[root@localhost ~]# docker images nginx
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 89da1fb6dcb9 11 days ago 187MB
[root@localhost ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
19eb36575c3e nginx "/docker-entrypoint.…" About a minute ago Up About a minute 0.0.0.0:800->80/tcp, :::800->80/tcp nginx
?創(chuàng)建granafa容器
[root@localhost ~]# docker run -d --name grafana --net monitor -p 3000:3000 grafana/grafana
1850cc7d09fd452a20ff2c995de92073bb094c4aec0e8cbf88ec92e62fe1c581
查看運(yùn)行結(jié)果:
[root@localhost ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1850cc7d09fd grafana/grafana "/run.sh" 48 seconds ago Up 47 seconds 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp grafana
?訪問(wèn)granfana,通過(guò)http://192.168.2.118:3000端口的方式訪問(wèn),默認(rèn)賬戶密碼(admin/admin),首次登陸需要更新密碼。
?
?
?添加數(shù)據(jù)源Add data source,如下圖:
?
?
?
?
?
?新建?Dashboard,如下圖:
?
?
?
?
?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-634112.html
?????????到這里Cadvisor+InfluxDB+Grafana容器監(jiān)控系統(tǒng)就部署完成了,至于其它grafana的監(jiān)控項(xiàng)配置不重點(diǎn)介紹。大家如果感興趣可以參考一些官方資料都是圖形化的界面操作。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-634112.html
到了這里,關(guān)于構(gòu)建Docker容器監(jiān)控系統(tǒng)(Cadvisor +InfluxDB+Grafana)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!