過去的一年中,關於 Docker 的話題從未斷過,而現在,從嘗試 Docker 到最終決定使用 Docker 的轉化率依然在逐步升高,關於 Docker 的討論更是有增無減。另外一方面,你們的注意力也漸漸從 「Docker 是什麼」轉移到「實踐 Docker」與「監控 Docker」上。html
本文轉自劉斌博文 「如何選擇 Docker 監控方案 」 ,文中劉斌從技術的角度深刻解釋了 Docker 監控的數據採集原理,介紹了現有開源的監控方案,以及可以對 Docker 進行監控功能的主流 SaaS 服務工具。node
上一篇文章中介紹了 Docker 監控目的及技術基礎,本篇文章將介紹,Docker 監控方案的實現。ios
Docker 監控方案的實現git
評價標準github
功能redis
信息詳細程度mongodb
查詢的靈活程度docker
報警 + API數據庫
靈活性緩存
成本
學習、開發
維護
運維
高可用
須要考慮的基本要素如上所示,很少述。
本身動手
這裏的成本包括開發成本,開發成本可能包括招人和培訓,開發時間和填坑時間。開發完了還須要維護成本,並且隨着Docker的升級,可能還須要對metric的採集實現進行升級,以及各類bugfix。
本身動手打造監控方案
StatsD 是 Flickr 公司首先提出來的,後來由 Esty 公司發揚光大的一個輕量級的指標採集模塊。
簡單來說,StatsD 就是一個簡單的網絡守護進程,基於 Node.js 平臺(Esty實現,其實也有其餘語言版本),經過 UDP 或者 TCP 方式偵聽各類統計信息,包括計數器和定時器,能夠用來採集操做系統、不一樣數據庫、中間件的數據指標,進行緩存、聚合,併發送到Graphite 等存儲和可視化系統中。
StatsD 具備如下優勢:
首先安裝部署簡單,且StatsD 協議是基於文本的,能夠直接寫入和讀取,方便實現各類客戶端和SDK。
Cloud Insight的探針也是採用這些方式,咱們有些SDK也是基於StatsD的,目前有Ruby、Python和Java的,在 GitHub 上能夠看到。
StatsD 守護進程採起 UDP 這種無狀態的協議,收集指標和應用程序自己之間沒有依賴,不會阻塞應用,無論StatsD的狀態是運行中,仍是沒在運行,都不會影響應用程序,應用程序也不關心StatsD是否收到數據。
StatsD很是容易整合其餘組件,能夠本身編寫採集業務邏輯,發送到StatsD守護進程便可。也就是說用戶的工做很簡單,只須要按定義好的規則採集數據發送到Stats,而後用Graphite存儲、展現,經過使用Riemann進行報警。
Tcollector
Tcollector 是一個採集指標數據並保存到OpenTSDB的框架,你可使用該框架本身編寫採集的業務邏輯。相似StatsD,運行在客戶端,收集本地的metric信息,推送到OpenTSDB。
Collectd
Collectd便是一個守護進程,也是一個框架,相似StatsD,它性能很是好,採用C語言編寫。Collectd不直接支持從Docker中取數據,可是咱們能夠本身編寫插件來採集性能指標數據。
Collectd有強大的插件機制,已經實現了包括amqp、rrdtool、graphite、http、kafka、redis、mongodb、OpenTSDB以及CSV文件等在內的各類插件。
在4.3版本以後還支持簡單的基於閾值檢查的報警機制。
cAdvisor是一個用於收集、聚合處理和輸出容器運行指標的守護進程。並且cAdvisor基本算是一個獲取Docker性能數據的標配了吧。
一句命令就能夠啓動cAdvisor容器,訪問8080端口便可看到性能指標數據。cAdvisor能夠經過storage_driver參數將數據存到influxdb,同時也能夠將metric輸出爲Prometheus的格式,因此不少自定義Docker監控系統都會採起cAdvisor + Prometheus 的組合。
存儲TSDB
關於時序列數據庫,能夠看附錄中相關的介紹文章。推薦使用OpenTSDB或者Influxdb,簡單對比一下各自特色以下:
OpenTSDB
Influxdb
這二者都支持自由模式和多維度,很是適合用於採用tag機制的數據模式建模。 開源可視化工具
光有數據是不夠的,raw data沒有任何意義,咱們須要良好的可視化組件來展現數據和數據的內在乎義,發揮數據的做用。
咱們也能夠將數據存儲和展現交給其餘開源軟件。
若是你的數據採集和存儲都是本身來完成的,只想使用一個外部的圖形化界面的話,選Grafana應該沒錯,Grafana展示形式很是豐富,配置也很靈活。
以上,先到這裏。
下一章,劉斌將爲你們介紹 Docker 監控的開原方案,主流 SaaS 服務,及其特色。
超好用的監控軟件 Cloud Insight 不只能監控 Docker,還能對 Nagios 進行更好的可視化哦~
閱讀更多技術文章,請訪問 OneAPM 官方博客。
本文轉自 OneAPM 官方博客