Docker監控:最佳實踐以及cAdvisor和Prometheus監控工具的對比
在 DockerCon EU 2015上, Brian Christner 闡述了“ Docker監控 ”的概況,分享了這方面的最佳實踐和Docker stats API的指南,并對比了三個流行的監控方案:cAdvisor、“cAdvisor + InfluxDB + Grafana”以及Prometheus。
Christner所建議的最佳實踐包括為容器添加標簽并設置資源限制,他指出盡管Google的cAdvisor容器監控工具很易用,但是將 cAdvisor、InfluxDB和Grafana組合起來能夠提供更好的應用集成和可擴展性,Prometheus則提供了“開箱即用”的客戶端庫和 告警。
Christner 是 Swisscom 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能夠與 InfluxDB 和 Grafana 聯合起來使用,它們分別是時間序列(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 網站上的系列 博客文章 獲取。
查看英文原文: Docker Monitoring: Best Practices, and a Comparison of the cAdvisor and Prometheus Monitoring Tools