科技改變生活 · 科技引領(lǐng)未來(lái)
簡(jiǎn)介容器監(jiān)控三劍客:cAdvisor監(jiān)控收集+InfluxDB存儲(chǔ)數(shù)據(jù)+Grafana展示圖表我們?cè)谥鳈C(jī)上部署了很多個(gè)容器,要想監(jiān)控它們?cè)撛趺崔k,通常我們使用原生命令dockerps或dockerstats就可以查看到容器的狀態(tài)。如下:[r
簡(jiǎn)介
容器監(jiān)控三劍客:cAdvisor監(jiān)控收集 + InfluxDB存儲(chǔ)數(shù)據(jù) + Grafana展示圖表
我們?cè)谥鳈C(jī)上部署了很多個(gè)容器,要想監(jiān)控它們?cè)撛趺崔k,通常我們使用原生命令 docker ps 或 docker stats 就可以查看到容器的狀態(tài)。
如下:
[root@localhost ~]# docker ps ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2a10d91cae48 portainer/portainer-ce:2.11.1 "/portainer" 17 minutes ago Up 17 minutes 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp, 0.0.0.0:9443->9443/tcp, :::9443->9443/tcp, 9000/tcp portainer 554e72db6ef0 billygoo/tomcat8-jdk8 "catalina.sh run" 29 hours ago Up 59 seconds 0.0.0.0:8082->8080/tcp, :::8082->8080/tcp tomcat82 9e7e05d78b86 billygoo/tomcat8-jdk8 "catalina.sh run" 29 hours ago Up 57 seconds 0.0.0.0:8081->8080/tcp, :::8081->8080/tcp tomcat81
[root@localhost ~]# docker stats ConTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 2a10d91cae48 portainer 0.00% 17.2MiB / 1.777GiB 0.95% 2.52MB / 6.98MB 0B / 2.02MB 5 554e72db6ef0 tomcat82 0.17% 92.44MiB / 1.777GiB 5.08% 1.1kB / 0B 165MB / 0B 42 9e7e05d78b86 tomcat81 0.15% 88.45MiB / 1.777GiB 4.86% 836B / 0B 11.6MB / 0B 42
通過(guò)docker stats命令可以很方便的看到當(dāng)前宿主機(jī)上所有容器的CPU,內(nèi)存以及網(wǎng)絡(luò)流量等數(shù)據(jù),一般小公司夠用了。。。。但是,docker stats統(tǒng)計(jì)結(jié)果只能是當(dāng)前宿主機(jī)的全部容器,數(shù)據(jù)資料是實(shí)時(shí)的,沒(méi)有地方存儲(chǔ)、沒(méi)有健康指標(biāo)過(guò)線預(yù)警等功能。
如何解決,那就要用到接下來(lái)所要講的方案:cAdvisor+InfluxDB+Grafana
是什么
容器監(jiān)控三劍客:cAdvisor監(jiān)控收集 + InfluxDB存儲(chǔ)數(shù)據(jù) + Grafana展示圖表
cAdvisor
cAdvisor 是一個(gè)容器資源監(jiān)控工具,包括容器的內(nèi)存、CPU、網(wǎng)絡(luò)IO、磁盤IO等監(jiān)控,同時(shí)提供了一個(gè)Web頁(yè)面用于查看容器的實(shí)時(shí)運(yùn)行狀態(tài)。
cAdivisor 默認(rèn)存儲(chǔ)2分鐘的數(shù)據(jù),而且只是針對(duì)單物理機(jī)。不過(guò),cAdivisor提供了很多數(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):
InfluxDB
InfluxDB 使用Go語(yǔ)言編寫的一個(gè)開(kāi)源分布式時(shí)許、時(shí)間和指標(biāo)數(shù)據(jù)庫(kù),無(wú)需外部依賴。
cAdvisor 默認(rèn)旨在本機(jī)保存最近2分鐘的數(shù)據(jù),為了持久化存儲(chǔ)數(shù)據(jù)和統(tǒng)一收集展示監(jiān)控?cái)?shù)據(jù),需要將數(shù)據(jù)存儲(chǔ)到InfluxDB中。InfluxDB是一個(gè)時(shí)許數(shù)據(jù)庫(kù),專門用于存儲(chǔ)時(shí)許相關(guān)數(shù)據(jù),很適合存儲(chǔ)CADvisor的數(shù)據(jù),而且,CAdvisor本身已經(jīng)提供了InfluxDB的集成方法,啟動(dòng)容器時(shí)指定配置即可。
InfluxDB主要功能:
Grafana
Grafana 是一個(gè)開(kāi)源的數(shù)據(jù)監(jiān)控分析可視化平臺(tái),支持多種數(shù)據(jù)源配置(支持的數(shù)據(jù)源包括InfluxDB、Mysql、Elasticsearch、OpenTSDB、Graphite等)和豐富的插件及模塊功能,支持圖表權(quán)限控制和報(bào)警。
Grafana主要特性:
環(huán)境搭建
方式一:分別安裝
通常在進(jìn)行監(jiān)控的時(shí)候是需要一臺(tái)單獨(dú)機(jī)器作為監(jiān)控主機(jī)的,這里我們創(chuàng)建一臺(tái)新的監(jiān)控主機(jī)(192.168.92.148),在監(jiān)控主機(jī)上部署InfluxDB+Grafana,然后在被監(jiān)控主機(jī)(192.168.92.149)上部署cAdvisor
部署InfluxDB(監(jiān)控主機(jī))
這里預(yù)先定義了創(chuàng)建一個(gè)初始數(shù)據(jù)庫(kù):
INFLUXDB_DB=cadvisor # 初始數(shù)據(jù)庫(kù)名稱INFLUXDB_USER=root # 初始數(shù)據(jù)庫(kù)用戶名INFLUXDB_USER_PASSWORD=root123456 # 初始數(shù)據(jù)庫(kù)密碼
docker run -d -p 8086:8086 --restart=always --name influxdb -e INFLUXDB_DB=cadvisor -e INFLUXDB_USER=root -e INFLUXDB_USER_PASSWORD=root123456 -v influxdb_data:/var/lib/influxdb influxdb:1.8
部署Grafana(監(jiān)控主機(jī))
docker run -d -p 3000:3000 --restart=always --name grafana -v grafana_data:/var/lib/grafana grafana/grafana
部署cAdvisor(被監(jiān)控主機(jī))
這里注意填入在部署influxdb時(shí)設(shè)置的數(shù)據(jù)庫(kù)、用戶名、密碼
-storage_driver_db=cadvisor # influxdb的數(shù)據(jù)庫(kù)名稱-storage_driver_host=192.168.92.148:8086 # influxdb的主機(jī)地址-storage_driver_user=root # influxdb的用戶名-storage_driver_password=root123456 # influxdb的密碼
docker run -d -p 8080:8080 --restart=always --name cadvisor -v /:/rootfs:ro -v /var/run:/var/run:rw -v /sys:/sys:ro -v /var/lib/docker/:/var/lib/docker:ro google/cadvisor -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=192.168.92.148:8086 -storage_driver_user=root -storage_driver_password=root123456
方式二:Compose容器編排一套帶走
如果你想將cAdvisor+InfluxDB+Grafana以及其他的容器都安裝到同一臺(tái)主機(jī)上,那使用這個(gè)compose一套帶走方案就可以了。
新建目錄
mkdir -p /data/cig
新建3件套組合的 docker-compose.yml 文件
cd /data/cig/
vim docker-compose.yml
文件內(nèi)容如下:
version: '3.1' services: influxdb: image: influxdb:1.8 restart: always environment: - INFLUXDB_DB=cadvisor - INFLUXDB_USER=root - INFLUXDB_USER_PASSWORD=root123456 ports: - "8086:8086" volumes: - influxdb_data:/var/lib/influxdb cadvisor: image: google/cadvisor depends_on: - influxdb command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb:8086 -storage_driver_user=root -storage_driver_password=root123456 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 depends_on: - influxdb ports: - "3000:3000" volumes: - grafana_data:/var/lib/grafana volumes: influxdb_data: {} grafana_data: {}
檢查語(yǔ)法:
沒(méi)有輸出則正常。
docker-compose config -q
啟動(dòng):
docker-compose up -d
查看是否都啟動(dòng):
[root@localhost cig]# docker ps ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 06dffc78e480 grafana/grafana "/run.sh" 3 seconds ago Up 2 seconds 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp cig_grafana_1 bdee27fbd3c8 google/cadvisor "/usr/bin/cadvisor -…" 3 seconds ago Up 2 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp cig_cadvisor_1 a328796c8d2a tutum/influxdb:0.9 "/run.sh" 4 seconds ago Up 3 seconds 0.0.0.0:8083->8083/tcp, :::8083->8083/tcp, 0.0.0.0:8086->8086/tcp, :::8086->8086/tcp cig_influxdb_1
訪問(wèn)測(cè)試
1. 瀏覽CAdvisor收集服務(wù):http://被監(jiān)控主機(jī)的IP:8080/
2. 瀏覽Grafana展現(xiàn)服務(wù):http://部署Grafana的主機(jī)IP:3000/
配置Grafana
添加數(shù)據(jù)源:
如果是使用 docker-compose 部署的,這里URL直接寫 http://influxdb:8086 即可;
如果是單獨(dú)安裝的,這里URL要寫 http://influxdb的主機(jī)IP:8086
滾動(dòng)到下面,填寫部署influxdb時(shí)初始化的數(shù)據(jù)庫(kù)cadvisor、用戶名root、密碼root123456,點(diǎn)擊Save &Test.
添加 dashboard:
點(diǎn)擊右上角 Save 保存。
還可以點(diǎn)擊右上角添加新的圖表,監(jiān)控其他項(xiàng)目,如:CPU、網(wǎng)絡(luò)、磁盤等,需要具體去看看查詢語(yǔ)法獲取正確的值制作圖表。
丁俊
版權(quán)所有 未經(jīng)許可不得轉(zhuǎn)載
增值電信業(yè)務(wù)經(jīng)營(yíng)許可證備案號(hào):遼ICP備14006349號(hào)
網(wǎng)站介紹 商務(wù)合作 免責(zé)聲明 - html - txt - xml