1. 程式人生 > >Docker監控:最佳實踐以及cAdvisor和Prometheus監控工具的對比

Docker監控:最佳實踐以及cAdvisor和Prometheus監控工具的對比

DockerCon EU 2015上, Brian Christner闡述了“ Docker監控”的概況,分享了這方面的最佳實踐和Docker stats API的指南,並對比了三個流行的監控方案:cAdvisor、“cAdvisor + InfluxDB + Grafana”以及Prometheus。

Christner所建議的最佳實踐包括為容器新增標籤並設定資源限制,他指出儘管Google的cAdvisor容器監控工具很易用,但是將cAdvisor、InfluxDB和Grafana組合起來能夠提供更好的應用整合和可擴充套件性,Prometheus則提供了“開箱即用”的客戶端庫和告警。

ChristnerSwisscom AG的雲方案倡導者,在這個演講中,他首先介紹了在Swisscom公司中 Docker的使用情況,包括通過Docker和 Cloud Foundry (與  ClusterHQ協作構建的)提供的持久化Database-as-a-Service(DBaaS),以及支撐各種應用的多個內部Docker產品,涵蓋的範圍從“雲應用到TV”。這些專案使用Docker的原因在於每個伺服器上能夠實現更高的應用密度(與此相關的就是成本的節省了),對於開發者來說能夠減少上市的時間,部署構件能夠“一體適用(one size fits all)”於各種場景中。使用Docker的一個核心挑戰在於監控方面的變化,從這裡開始,Christner開始熱情地分享他所學到的內容。

監控Docker的最佳實踐包括通過描述性的鍵/值對 為容器新增標籤(labelling container),如‘--label environment=”production”’,設定 資源限制並限制所產生的告警數量,避免將訊號變為噪音(“不要讓自己過於警戒!”,Don’t overlert yourself!)。Christner簡單介紹了“docker stats”命令,他說這個工具對於解決本地和遠端的問題都非常有用。他討論了 Docker stats API,並補充說它通常來講是所有其他Docker監控工具的基礎,並且還可以將容器的資源資訊提供到組織內部已有的監控方案中。

Google的 cAdvisor(Container Advisor)“為容器使用者提供了了解執行時容器資源使用和效能特徵的方法”。cAdvisor的容器抽象基於Google的 lmctfy容器棧,因此原生支援Docker容器並能夠“開箱即用”地支援其他的容器型別。cAdvisor部署為一個執行中的daemon,它會收集、聚集、處理並匯出執行中容器的資訊。這些資訊能夠包含容器級別的資源隔離引數、資源的歷史使用狀況、反映資源使用和網路統計資料完整歷史狀況的柱狀圖。

cAdvisor能夠與 InfluxDBGrafana聯合起來使用,它們分別是時間序列(time series)的資料庫和指標的儀表盤(metrics dashboard),藉助它們來儲存和展現資訊。Christner還寫過一篇“ 如何搭建Docker監控”的部落格文章,並建立了與之關聯的 Docker Compose  配置檔案,它可以通過一個簡單的“docker-compose up”命令就能建立使用cAdvisor、InfluxDB和Grafana的監控環境。

Prometheus是一個實現監控功能的系統和服務,它來源於SoundCloud針對StatsD和Graphite所提供的 改善監控系統。Prometheus能夠按照給定的時間間隔收集所配置目標的指標、執行規則表示式、展現結果,如果某些條件判斷結果為真的話,將會觸發告警。Prometheus GitHub倉庫的 README.md這樣說到,它與其他監控系統的主要區別特性在於多維的資料模型,藉助這種多維性所提供的靈活查詢語言,支援多種模式的圖形和儀表盤,並且支援垂直和水平的組合(hierarchical and horizontal federation)。通過一個Docker Compose配置檔案就能建立全功能的Prometheus監控環境,這個檔案可以在Christner的 GitHub賬號上找到。

Christner在演講的最後比較了上述三種容器監控方式,即cAdvisor、“cAdvisor + InfluxDB + Grafana”和Prometheus。儘管cAdvisor最易用,但它在擴充套件性和告警方面有侷限性。組合使用“cAdvisor + InfluxDB + Grafana”能夠提供很好的可擴充套件性,並且提供了客戶端庫,但是內建不支援告警功能。Prometheus可能擴充套件起來不那麼容易,但是它支援告警並提供了針對多種語言的客戶端庫。

圖1:Docker監控工具的簡要對比

Christner所做的“ Docker監控”演講的slide可以在SlideShare網站上找到,其他的訊息可以通過 brianchristner.io網站上的系列 部落格文章獲取。