溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

docker容器監(jiān)控的實(shí)現(xiàn)方法

發(fā)布時(shí)間:2021-07-08 17:33:04 來源:億速云 閱讀:373 作者:chen 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“docker容器監(jiān)控的實(shí)現(xiàn)方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“docker容器監(jiān)控的實(shí)現(xiàn)方法”吧!

本文寫于2015年,所有PAAS平臺(tái)相關(guān)內(nèi)容都已經(jīng)在2015Q3完成,當(dāng)時(shí)使用的docker版本為1.6.2,雖然docker新版本發(fā)布很快,但是下面提到的監(jiān)控相關(guān)的內(nèi)容大致相同。

一、 docker容器有哪些指標(biāo)需要監(jiān)控?

  • 容器CPU、內(nèi)存、IO、網(wǎng)絡(luò)、應(yīng)用存活

二、 如何監(jiān)控?

宿主機(jī)監(jiān)控 zabbix可以實(shí)現(xiàn),容器內(nèi)部安裝zabbix?
(數(shù)據(jù)和宿主機(jī)一致,無法反應(yīng)容器真實(shí)狀態(tài))
看別人都如何實(shí)現(xiàn)?
Searching GitHub…

  • seagull
    可以查看、啟停容器,管理鏡像,但不支持查看容器使用CPU、內(nèi)存、IO、網(wǎng)絡(luò)等情況。

  • Prometheus
    太龐大

  • Docker官方stats接口
    要求docker在1.5以上版本,有命令行和API兩種方式,API為非中斷式,不停的顯示數(shù)據(jù)

  • Docker-mon
    命令行工具,1.5以上版本,展示效果很好,但數(shù)據(jù)無法匯總,也無法查看歷史數(shù)據(jù)

  • Dockernana
    可以對(duì)docker宿主進(jìn)行日常cpu、內(nèi)存、IO進(jìn)行監(jiān)控,但無法監(jiān)控容器的資源使用。

  • cAdvisor
    可以查看容器對(duì)CPU、內(nèi)存、磁盤的使用情況,WEB界面方式,缺點(diǎn)是每個(gè)宿主都要起個(gè)容器,而且數(shù)據(jù)無法匯總,無法查看歷史數(shù)據(jù)。

圖1:Docker-mon
docker容器監(jiān)控的實(shí)現(xiàn)方法
圖2:cAdvisor
docker容器監(jiān)控的實(shí)現(xiàn)方法
最終腳本如下:

  1. a1_user=`cat /cgroup/cpuacct/docker/$i/cpuacct.stat | grep user |awk '{print $2}'`

  2. a1_sys=`cat /cgroup/cpuacct/docker/$i/cpuacct.stat | grep sys | awk '{print $2}'`

  3. sleep 5

  4. a2_user=`cat /cgroup/cpuacct/docker/$i/cpuacct.stat | grep user |awk '{print $2}'`

  5. a2_sys=`cat /cgroup/cpuacct/docker/$i/cpuacct.stat | grep sys | awk '{print $2}'`

  6.  

  7. cpuall=$((a2_user + a2_sys - a1_user - a1_sys))

  8. CPUSTAT=`echo "scale=2;$cpuall/5/100">

內(nèi)存
  1. #@當(dāng)前使用內(nèi)存除以最大內(nèi)存限制

  2. [root@BJ-YF-64-7 ~]#cat /cgroup/memory/docker/$DOCKERID/memory.limit_in_bytes

  3. 1073741824

  4. [root@BJ-YF-64-7 ~]#cat /cgroup/memory/docker/$DOCKERID/memory.usage_in_bytes

  5. 186269696

網(wǎng)絡(luò)流量
  1. #@根據(jù)容器PID來獲取該進(jìn)程的網(wǎng)絡(luò)狀態(tài)

  2. PID=`docker inspect -f '{{.State.Pid}}' $i`

  3. a1_rx=`cat /proc/$PID/net/dev | grep eth2 |awk '{print $2}'`

網(wǎng)絡(luò)連接數(shù)
  1. #@根據(jù)容器PID來獲取該進(jìn)程的網(wǎng)絡(luò)狀態(tài)

  2. cat /proc/$PID/net/tcp

四、 初步展示shell+InfluxDB+Grafana

使用Shell打印結(jié)果:
docker容器監(jiān)控的實(shí)現(xiàn)方法
使用InfluxDB+ Grafana展示結(jié)果:
docker容器監(jiān)控的實(shí)現(xiàn)方法

五、 接入Zabbix

數(shù)據(jù)展示問題解決了,那數(shù)據(jù)報(bào)警呢? Zabbix
Zabbix一臺(tái)宿主機(jī)有N張圖,容器1CPU、容器1內(nèi)存、容器2CPU…
數(shù)據(jù)獲取很復(fù)雜,很困難

每個(gè)容器都運(yùn)行Zabbix
數(shù)據(jù)通過shell腳本打印到容器在宿主的映射目錄
docker容器監(jiān)控的實(shí)現(xiàn)方法
歷史趨勢圖

到此,相信大家對(duì)“docker容器監(jiān)控的實(shí)現(xiàn)方法”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI