CAdvisor+InfluxDB+Grafana是怎么搭建Docker容器監(jiān)控系統(tǒng)

CAdvisor + InfluxDB + Grafana是怎么搭建Docker容器監(jiān)控系統(tǒng),很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)公司主要從事網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)襄汾,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):028-86922220

利用docker compose組合應(yīng)用并利用scale可以快速對(duì)容器進(jìn)行擴(kuò)充,而docker compose啟動(dòng)的服務(wù)容器都在同一臺(tái)宿主機(jī)上,對(duì)于一個(gè)宿主機(jī)上運(yùn)行多個(gè)容器應(yīng)用時(shí),容器的運(yùn)行情況,如:CPU使用率,內(nèi)存使用率,網(wǎng)絡(luò)狀態(tài),磁盤(pán)空間等一系列隨時(shí)間變化的時(shí)序數(shù)據(jù)信息,都需要進(jìn)行了解,因此監(jiān)控是必須的。

容器監(jiān)控方案選擇

對(duì)于容器的監(jiān)控方案可謂多種多樣,除了docker本身自帶的 docker stats 命令,還有Scout,Data Dog,Sysdig Cloud,Sensu Monitoring Framework,CAdvisor等都可以對(duì)容器進(jìn)行監(jiān)控。

通過(guò) docker stats 命令可以很方便的看到當(dāng)前宿主機(jī)上所有容器的CPU,內(nèi)存,以及網(wǎng)絡(luò)流量等數(shù)據(jù)。但 docker stats 命令的缺點(diǎn)是只是統(tǒng)計(jì)當(dāng)前宿主機(jī)的所有容器,獲取的數(shù)據(jù)是實(shí)時(shí)的,沒(méi)有地方存儲(chǔ),也沒(méi)有報(bào)警功能。

CAdvisor + InfluxDB + Grafana是怎么搭建Docker容器監(jiān)控系統(tǒng)

而Scout,Data Dog,Sysdig Cloud雖然都提供了較完善的服務(wù),但是它們都是托管的服務(wù)且都是收費(fèi)的,Sensu Monitoring Framework集成度較高,也免費(fèi),但是部署過(guò)于復(fù)雜,綜合考慮選擇CAdvisor做監(jiān)控工具。

CAdvisor出自Google,優(yōu)點(diǎn)是開(kāi)源產(chǎn)品,監(jiān)控指標(biāo)齊全,部署方便,而且有官方的docker鏡像。缺點(diǎn)是集成度不高,默認(rèn)只在本地保存2分鐘數(shù)據(jù)。不過(guò),可以加上InfluxDB存儲(chǔ)數(shù)據(jù),對(duì)接Grafana展示圖表,比較便利搭建容器監(jiān)控系統(tǒng),數(shù)據(jù)收集和圖表展示效果良好,對(duì)系統(tǒng)性能也幾乎沒(méi)什么影響。

CAdvisor + InfluxDB + Grafana搭建容器監(jiān)控系統(tǒng)

CAdvisor

CAdvisor是一個(gè)容器資源監(jiān)控工具,包括容器的內(nèi)存,CPU,網(wǎng)絡(luò)IO,磁盤(pán)IO等,同時(shí)提供了一個(gè)WEB頁(yè)面用于查看容器的實(shí)時(shí)運(yùn)行狀態(tài)。CAdvisor默認(rèn)存儲(chǔ)2分鐘的數(shù)據(jù),而且只是針對(duì)單物理機(jī),不過(guò),CAdvisor提供了很多數(shù)據(jù)集成接口,支持InfluxDB,redis,Kafka,Elasticsearch等集成,可以加上對(duì)應(yīng)配置將監(jiān)控?cái)?shù)據(jù)發(fā)往這些數(shù)據(jù)庫(kù)存儲(chǔ)起來(lái)。

CAdvisor功能主要有兩點(diǎn),展示Host,容器兩個(gè)層次的監(jiān)控?cái)?shù)據(jù)和展示歷史變化

InfluxDB

InfluxDB是用Go語(yǔ)言編寫(xiě)的一個(gè)開(kāi)源分布式時(shí)序,事件和指標(biāo)數(shù)據(jù)庫(kù),無(wú)需外部依賴(lài)。

由于CAdvisor默認(rèn)只在本地保存最近2分鐘的數(shù)據(jù),為了持久化數(shù)據(jù)和統(tǒng)一收集展示監(jiān)控?cái)?shù)據(jù),需要將數(shù)據(jù)存儲(chǔ)到InfluxDB中。InfluxDB是一個(gè)時(shí)序數(shù)據(jù)庫(kù),專(zhuān)門(mén)用于存儲(chǔ)時(shí)序相關(guān)數(shù)據(jù),很適合存儲(chǔ)CAdvisor數(shù)據(jù),而且CAdvisor本身提供了InfluxDB集成的方法,在啟動(dòng)容器時(shí)指定配置即可。

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)

  • 可以是任意數(shù)量的列

  • 可拓展

  • 支持min,max等一系列的函數(shù),方便統(tǒng)計(jì)

  • 原生的HTTP支持,內(nèi)置HTTP API

  • 強(qiáng)大的類(lèi)SQL語(yǔ)法

Granfana

Grafana是一個(gè)開(kāi)源的數(shù)據(jù)監(jiān)控分析可視化平臺(tái),支持多種數(shù)據(jù)源配置(如InfluxDB,MySQL,Elasticserach,OpenTSDB,Graphite等)和豐富的插件及模板功能,支持圖表權(quán)限控制和報(bào)警。

Grafana主要特點(diǎn)

  • 靈活豐富的圖形化選項(xiàng)

  • 可以混合多種風(fēng)格

  • 支持白天和夜間模式

  • 多數(shù)據(jù)源

CAdvisor負(fù)責(zé)收集容器隨時(shí)間變化的數(shù)據(jù)

InfluxDB負(fù)責(zé)存儲(chǔ)時(shí)序數(shù)據(jù)

Grafana負(fù)責(zé)分析和展示時(shí)序數(shù)據(jù)

安裝部署

部署InfluxDB服務(wù)

啟動(dòng)InfluxDB的服務(wù)容器:

docker run -d --name influxdb -p 8086:8086 \
-v /data/influxdb:/var/lib/influxdb \
--hostname influexdb \
influxdb

在容器中創(chuàng)建test數(shù)據(jù)庫(kù)和root用戶(hù)

docker exec -it influxdb influx
> CREATE DATABASE "test"
> CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES

CAdvisor + InfluxDB + Grafana是怎么搭建Docker容器監(jiān)控系統(tǒng)

部署CAdvisor

啟動(dòng)CAdvisor的服務(wù)容器:

docker run \
 --volume=/:/rootfs:ro \
 --volume=/var/run:/var/run:ro \
 --volume=/sys:/sys:ro \
 --volume=/var/lib/docker/:/var/lib/docker:ro \
 --volume=/dev/disk/:/dev/disk:ro \
 --publish=8080:8080 \
 --detach=true \
 --name=cadvisor \
 google/cadvisor:latest \
 -storage_driver=influxdb \
 -storage_driver_host=influxdb:8086 \
 -storage_driver_db=test \
 -storage_driver_user=root \
 -storage_driver_password=root

服務(wù)容器起來(lái)后可通過(guò)瀏覽器訪(fǎng)問(wèn) http:///ip:8080

CAdvisor + InfluxDB + Grafana是怎么搭建Docker容器監(jiān)控系統(tǒng)

部署Grafana

啟動(dòng)Grafana服務(wù)容器:

docker run -d -p 3000:3000 \
-v /data/grafana:/var/lib/grafana \
--link=influxdb:influxdb \
--name grafana grafana/grafana

直接運(yùn)行該命令后有可能會(huì)發(fā)現(xiàn)容器并沒(méi)有啟起來(lái),通過(guò) docker logs 命令會(huì)發(fā)現(xiàn)”mkdir: can’t create directory ‘/var/lib/grafana/plugins’: Permission denied“的錯(cuò)誤,其實(shí)就是沒(méi)有 數(shù)據(jù)卷對(duì)應(yīng)的主機(jī)上 /data/grafana 的權(quán)限,可以在運(yùn)行啟動(dòng)命令前先創(chuàng)建 /data/grafana 目錄并給定權(quán)限777,或者通過(guò)”docker run —entrypoint “id” grafana/grafana“ 查看uid,gid,groups (默認(rèn)為472),然后通過(guò)”chown -R 472:472 /data/grafana“修改權(quán)限。

CAdvisor + InfluxDB + Grafana是怎么搭建Docker容器監(jiān)控系統(tǒng)

Grafana正常啟動(dòng)后就可以 http://ip:3000 訪(fǎng)問(wèn),出現(xiàn)以下的登錄頁(yè)面,初次訪(fǎng)問(wèn)需要修改密碼,默認(rèn)用戶(hù)名密碼為:admin/admin

Docker Compose集成部署

準(zhǔn)備docker-compose.yml文件

version: '3.1'
volumes:
 grafana_data: {}
services:
 influxdb:
   image: influxdb
   restart: always
   environment:
     - PRE_CREATE_DB=cadvisor
   ports:
     - "8086:8086"
   expose:
     - "8090"
     - "8099"
   volumes:
     - ./data/influxdb:/data
 cadvisor:
   image: google/cadvisor
   links:
     - influxdb:influxdb-host
   command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb-host:8086
   restart: always
   ports:
     - "8080:8080"
   volumes:
     - /:/rootfs:ro
     - /var/run:/var/run:rw
     - /sys:/sys:ro
     - /var/lib/docker:/var/lib/docker:ro
 grafana:
   user: "104"
   image: grafana/grafana
   restart: always
   links:
     - influxdb:influxdb-host
   ports:
     - "3000:3000"
   volumes:
     - grafana_data:/var/lib/data
   environment:
     - HTTP_USER=admin
     - HTTP_PASS=admin
     - INFLUXDB_HOST=influxdb-host
     - INFLUXDB_PORT=8086
     - INFLUXDB_NAME=cadvisor
     - INFLUXDB_USER=root
     - INFLUXDB_PASS=root

在docker-compose.yml文件目錄運(yùn)行以下命令啟動(dòng)服務(wù):

docker-compose up -d

-d指定在后臺(tái)啟動(dòng),初次啟動(dòng)可以不加可以在控制臺(tái)查看啟動(dòng)日志,當(dāng)然后臺(tái)啟動(dòng)也可以通過(guò)“docker-compose logs”進(jìn)行查看啟動(dòng)日志。

服務(wù)正常啟動(dòng)后就可以 http://ip:3000 訪(fǎng)問(wèn)Granafa,在Home Dashboard頁(yè)面點(diǎn)擊添加data source

CAdvisor + InfluxDB + Grafana是怎么搭建Docker容器監(jiān)控系統(tǒng)

配置InfluxDB連接信息,當(dāng)然在配置連接信息前需要進(jìn)入InfluxDB容器創(chuàng)建相應(yīng)的cadvisor數(shù)據(jù)庫(kù)和用戶(hù)root/root

在容器中創(chuàng)建cadvisor數(shù)據(jù)庫(kù)和root用戶(hù)

docker exec -it influxdb-contianer-id influx
> CREATE DATABASE "cadvisor"
> CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES

配置連接InfluxDB連接:

CAdvisor + InfluxDB + Grafana是怎么搭建Docker容器監(jiān)控系統(tǒng)

CAdvisor + InfluxDB + Grafana是怎么搭建Docker容器監(jiān)控系統(tǒng)

數(shù)據(jù)源配好之后可以回到Home Dashboard添加添加dashboard圖表展示監(jiān)控信息,Grafana提供了豐富的圖片模板對(duì)監(jiān)控?cái)?shù)據(jù)進(jìn)行展示。

添加dashboard:

CAdvisor + InfluxDB + Grafana是怎么搭建Docker容器監(jiān)控系統(tǒng)

CAdvisor + InfluxDB + Grafana是怎么搭建Docker容器監(jiān)控系統(tǒng)

可選模板:

CAdvisor + InfluxDB + Grafana是怎么搭建Docker容器監(jiān)控系統(tǒng)

編輯圖表:

CAdvisor + InfluxDB + Grafana是怎么搭建Docker容器監(jiān)控系統(tǒng)

配置監(jiān)控cadvisor容器的內(nèi)存使用情況的圖表展示,配置好之后點(diǎn)擊保存就可以了。

CAdvisor + InfluxDB + Grafana是怎么搭建Docker容器監(jiān)控系統(tǒng)

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

本文標(biāo)題:CAdvisor+InfluxDB+Grafana是怎么搭建Docker容器監(jiān)控系統(tǒng)
路徑分享:http://muchs.cn/article16/gjgegg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、服務(wù)器托管、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站收錄、標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)