幾種 Docker 監控工具對比

輕量級虛擬化容器 Docker,自發布以來便廣受業界關注,在開源界和企業界掀起了一陣風。Docker 容器相對於 VM 有如下幾個優點:啓動速度快;資源利用率高;性能開銷小。html

幾種 Docker 監控方法對比

從圖中能夠看出 Docker 和 虛擬機的差別,虛擬機的 Guest OS 和 Hypervisor 層在 Docker 中被 Docker Engine 層所替代,Docker 有着比虛擬機更少的抽象層。因爲 Docker 不須要經過 Hypervisor 層實現硬件資源虛擬化,運行在 Docker 容器上的程序直接使用實際物理機的硬件資源。所以在 CPU、內存利用率上 Docker 略勝一籌。Docker利用的是宿主機的內核,而不須要 Guest OS,所以,當新建一個容器時,Docker 不須要和虛擬機同樣從新加載一個操做系統內核,所以新建一個 Docker 容器只須要幾秒鐘。web

既然 Docker 這麼火,那麼問題來了,爲了可以更精確的分配每一個容器能使用的資源,咱們想要實時獲取容器運行時使用資源的狀況,怎樣對 Docker 上的應用進行監控呢?Docker 的結構會不會加大監控難度?docker

咱們都瞭解, container 至關於小型 host,能夠說存在於 hosts 與應用之間的監控盲區,不管是傳統的基礎組件監控仍是應用性能監控的方式,都很難有效地監控 Docker。瞭解了一下現有的 Docker 相關監測 App 和服務,包括簡單的開源工具和複雜的企業總體解決方案,下面列舉幾種Docker 監控工具做爲參考:數據庫

1. cAdvisor瀏覽器

谷歌的 container introspection 解決方案是 cAdvisor,這是一個 Docker 容器內封裝的實用工具,可以蒐集、集料、處理和導出運行中的容器的信息。經過它能夠看到 CPU 的使用率、內存使用率、網絡吞吐量以及磁盤空間利用率。而後,你能夠經過點擊在網頁頂部的 Docker Containers 連接,而後選擇某個容器來詳細瞭解它的使用狀況。cAdvisor 部署和使用簡單,但它只能夠監視在同一個 host 上運行的容器,對多節點部署不是太管用。網絡

2. Cloud Insight架構

在咱們列舉的幾個監控 Docker 的服務或平臺中,這是惟一一款國內產品。Cloud Insight 支持多種操做系統、雲主機、數據庫和中間件的監控,原理是在平臺服務儀表盤和自定義儀表盤中,採集並處理 Metric,對數據進行聚合與分組等計算,提供曲線圖、柱狀圖等多樣化的展示形式。優勢是監控的指標很全,簡單易用,但目前正式版還未上線,能夠期待一下。運維

3. Scoutjvm

Scout 是一款監視服務,並非一個獨立的開源項目。它有大量的插件,除了 Docker 信息還能夠吸取其餘有關部署的數據。所以 Scout 算是一站式監控系統,無需對系統的各類資源來安裝各類不一樣的監控系統。 Scout 的一個缺點是,它不顯示有關每一個主機上單獨容器的詳細信息。此外,每一個監控的主機十美圓這樣略微昂貴的價格也是是否選擇 Scout 做爲監控服務的一個考慮因素,若是運行一個有多臺主機的超大部署,成本會比較高。 微服務

4. Sematext

Sematext 也是一款付費監控解決方案,計劃收費方案是3.5美分/小時。一樣也支持 Docker 監控,還包括對容器級事件的監測(中止、開始等等)和管理容器產生的日誌。

時間關係咱們選擇了其中安裝最簡單的 Cloud Insight 來試驗監控基於 Docker 的一個應用——Acme 的運行狀況,後期時間容許會將其餘幾種監控方式都試一遍。

Docker 監控實戰

單方面監控 Docker 可能並不太適合與業務掛鉤的應用,當業務量上漲,不僅僅是 Docker 的負載上升,其餘 JVM 指標也能也會出現上升的趨勢。

咱們嘗試使用一個支持比較多中間件、數據庫、操做系統、容器的 Cloud Insight 來講明這個實際的場景。

Cloud Insight

Cloud Insight 因爲是一個 SaaS 監控方案,相對來講它的安裝和部署都比較簡單。在此次監控實戰中,咱們以 AcmeAir 爲實驗對象:一個能夠模擬壓力的電子商務類應用。

AcmeAir 是一款由原 IBM 新技術架構部資深工程師 Andrew Spyker,利用 Netflix 開源的 Netflix OSS 打造的開源電子商務應用。此應用具備以下特性:

  1. 模擬提供航班訂票服務。用戶能夠經過移動設備或者 web 瀏覽器,完成新用戶註冊,用戶登陸,航班查詢,訂票等操做。

  2. AcmeAir 融入了 Docker,微服務架構等理念。並採用 Tomcat、Node.js、WebSphere Application Server、WebSphere Extreme Scale、MongoDB、Cassandra 分別打造了不一樣版本的實現。

  3. AcmeAir 利用 JMeter 模擬用戶行爲。可經過動態調整用戶數量,模擬產生各類壓力的事物流量。並可在應用中預先植入錯誤代碼,模擬各類故障場景。該應用可作爲壓力測試,終端用戶體驗異常檢測,故障診斷等各類測試場景的測試用例。

幾種 Docker 監控方法對比

首先,咱們要打開 Cloud Insight 監控,還好 Cloud Insight 安裝簡單,一條命令便可。接着,咱們新建一個用於這次監控的儀表盤,依次將想要獲取的指標通通添加進去。好比,選中 jvm.non_heap_memory 這個指標,選擇按照 instance 分組。

咱們添加如下指標:

  • docker.cpu.user

  • docker.cpu.sysytem

  • docker.containers.running

  • jvm.heap_memory

  • jvm.non_heap_memory

  • jvm.gc.cms.count

  • jvm.heap_memory_max

  • jvm.gc.parnew.time

應用 Acme 部署在四臺 servers 上,咱們開啓四臺 servers, 而後用 JMeter 給應用加壓。隨着時間 JMeter 不斷給應用加壓。

幾種 Docker 監控方法對比

當 users 人數達到 188 時,咱們再來看一下儀表盤的視圖。

幾種 Docker 監控方法對比

從圖中能夠看到,性能數據發生了變化,根據 JMeter 裏的數據,此時 CPU 佔用超過了50%,錯誤率也有所提高;對比來看,根據 Cloud Insight 裏的曲線顯示,藍色的線所表明的 Container CPU 佔用率已經超過50%,逐漸接近75%,系統剩餘的 CPU 資源逐漸降低,該 Container 的系統 CPU 資源消耗也忽然增大。咱們能夠經過這些定位到 CPU 佔用率太高的 Container ,及時而主動地去了解性能瓶頸,從而優化性能,合理分配資源。

Cloud Insight 所抓取的性能指標算是較爲全面,部署和展示方式都是至關簡單易懂的,對這個產品能夠期待一下。

Cloud Insight 集監控、管理、計算、協做、可視化於一身,幫助全部 IT 公司,減小在系統監控上的人力和時間成本投入,讓運維工做更加高效、簡單。想閱讀更多技術文章,請訪問 OneAPM 官方博客

相關文章
相關標籤/搜索