您好,登錄后才能下訂單哦!
本篇內容主要講解“docker容器監控的實現方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“docker容器監控的實現方法”吧!
本文寫于2015年,所有PAAS平臺相關內容都已經在2015Q3完成,當時使用的docker版本為1.6.2,雖然docker新版本發布很快,但是下面提到的監控相關的內容大致相同。
容器CPU、內存、IO、網絡、應用存活
宿主機監控 zabbix可以實現,容器內部安裝zabbix?
(數據和宿主機一致,無法反應容器真實狀態)
看別人都如何實現?
Searching GitHub…
seagull
可以查看、啟停容器,管理鏡像,但不支持查看容器使用CPU、內存、IO、網絡等情況。Prometheus
太龐大Docker官方stats接口
要求docker在1.5以上版本,有命令行和API兩種方式,API為非中斷式,不停的顯示數據Docker-mon
命令行工具,1.5以上版本,展示效果很好,但數據無法匯總,也無法查看歷史數據Dockernana
可以對docker宿主進行日常cpu、內存、IO進行監控,但無法監控容器的資源使用。cAdvisor
可以查看容器對CPU、內存、磁盤的使用情況,WEB界面方式,缺點是每個宿主都要起個容器,而且數據無法匯總,無法查看歷史數據。
圖1:Docker-mon
圖2:cAdvisor
最終腳本如下:
a1_user=`cat /cgroup/cpuacct/docker/$i/cpuacct.stat | grep user |awk '{print $2}'`
a1_sys=`cat /cgroup/cpuacct/docker/$i/cpuacct.stat | grep sys | awk '{print $2}'`
sleep 5
a2_user=`cat /cgroup/cpuacct/docker/$i/cpuacct.stat | grep user |awk '{print $2}'`
a2_sys=`cat /cgroup/cpuacct/docker/$i/cpuacct.stat | grep sys | awk '{print $2}'`
cpuall=$((a2_user + a2_sys - a1_user - a1_sys))
CPUSTAT=`echo "scale=2;$cpuall/5/100">
#@當前使用內存除以最大內存限制
[root@BJ-YF-64-7 ~]#cat /cgroup/memory/docker/$DOCKERID/memory.limit_in_bytes
1073741824
[root@BJ-YF-64-7 ~]#cat /cgroup/memory/docker/$DOCKERID/memory.usage_in_bytes
186269696
#@根據容器PID來獲取該進程的網絡狀態
PID=`docker inspect -f '{{.State.Pid}}' $i`
a1_rx=`cat /proc/$PID/net/dev | grep eth2 |awk '{print $2}'`
#@根據容器PID來獲取該進程的網絡狀態
cat /proc/$PID/net/tcp
使用Shell打印結果:
使用InfluxDB+ Grafana展示結果:
數據展示問題解決了,那數據報警呢? Zabbix
Zabbix一臺宿主機有N張圖,容器1CPU、容器1內存、容器2CPU…
數據獲取很復雜,很困難
每個容器都運行Zabbix
數據通過shell腳本打印到容器在宿主的映射目錄
歷史趨勢圖
到此,相信大家對“docker容器監控的實現方法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。