為了更好的監控容器運**況,更重要的是為了後續的容器動態排程演算法需要的大量執行時資料的蒐集,經過調研後,基於cadvisor + influxdb + grafana搭建了這套容器監控系統。
在調研容器監控系統的時候,其實是有很多選擇的,比如docker自帶的docker stats命令,scout,data dog,sysdig cloud,sensu monitoring framework,cadvisor等。
通過docker stats命令可以很方便的看到當前宿主機上所有容器的cpu,記憶體以及網路流量等資料。但是docker stats命令的缺點就是統計的只是當前宿主機的所有容器,而獲取的監控資料是實時的,沒有地方儲存,也沒有報警功能。
通過docker stats命令可以很方便的看到當前宿主機上所有容器的cpu,記憶體以及網路流量等資料。但是docker stats命令的缺點就是統計的只是當前宿主機的所有容器,而獲取的監控資料是實時的,沒有地方儲存,也沒有報警功能。
cadvisor谷歌出品,優點是開源產品,監控指標齊全,部署方便,而且有官方的docker映象。缺點是整合度不高,預設只在本地儲存2分鐘資料。不過在調研之後發現可以加上influxdb儲存資料,對接grafana展示圖表,比較便利地搭建好了容器監控系統,資料收集和圖表展示效果良好,對系統效能也幾乎沒有什麼影響。
cadvisor是乙個容器資源監控工具,包括容器的記憶體,cpu,網路io,磁碟io等監控,同時提供了乙個web頁面用於檢視容器的實時執行狀態。cadvisor預設儲存2分鐘的資料,而且只是針對單物理機。不過,cadvisor提供了很多資料整合介面,支援influxdb,redis,kafka,elasticsearch等整合,可以加上對應配置將監控資料發往這些資料庫儲存起來。
由於cadvisor已經容器化,部署和執行很簡單,執行如下命令即可:
http://ip:8080
檢視宿主機的容器監控資料了。
如前面說到,cadvisor預設只在本機儲存最近2分鐘的資料,為了持久化儲存資料和統一收集展示監控資料,需要將資料儲存到influxdb中。influxdb是乙個時序資料庫,專門用於儲存時序相關資料,很適合儲存cadvisor的資料。而且,cadvisor本身已經提供了influxdb的整合方法,在啟動容器時指定配置即可。
我們使用了管理容器來管理cadvisor,修改後的啟動配置如下。主要指定了儲存引擎為influxdb,以及指定influxdb的http api的位址(這裡用到了自建dns的網域名稱 influxdb.service.consul以避免暴露外部埠),還有對應的資料庫和使用者名稱密碼。
{
"binds": [
"/:/rootfs:ro
如何做系統重構
重構,是任何乙個技術團隊都無法繞過和迴避的話題。記得10年前,我的第乙份正式工作,就經歷了專案持續的重構歷程,為了寫好 當時還反覆讀了martin flower的 refactoring 時至今日,這本書裡的很多內容仍能給我很多啟示。最近,回顧了一下10多年來經歷的各類專案,發現還是有很多內容值得拿...
前端效能監控你會監控哪些資料 如何做
為什麼要做效能監控 對於公司來說,效能在一定程度上與利益直接相關 為什麼效能會影響公司的收益呢?根本原因還是在於效能影響了使用者體驗。載入的延遲 操作的卡頓等都會影響使用者的使用體驗。尤其是移動端,使用者對頁面響應延遲和連線中斷的容忍度很低。想象一下你拿著手機開啟乙個網頁想看到某個資訊卻載入半天的心...
如何監控docker容器執行狀態 shell 指令碼
公司專案部署在docker中,由於未知原因容器偶爾會停止,需要寫乙個指令碼監控 容器執行狀態,如果容器停止了,就再啟動該容器 bin bash 傳入容器名稱 containername 1 currtime date y m d h m s 檢視程序是否存在 exist docker inspect...