斌哥的 Docker 進階指南—監控方案的實現

過去的一年中,關於 Docker 的話題從未斷過,而現在,從嘗試 Docker 到最終決定使用 Docker 的轉化率依然在逐步升高,關於 Docker 的討論更是有增無減。另外一方面,你們的注意力也漸漸從 「Docker 是什麼」轉移到「實踐 Docker」與「監控 Docker」上。html

本文轉自劉斌博文 「如何選擇 Docker 監控方案 」 ,文中劉斌從技術的角度深刻解釋了 Docker 監控的數據採集原理,介紹了現有開源的監控方案,以及可以對 Docker 進行監控功能的主流 SaaS 服務工具。node

上一篇文章中介紹了 Docker 監控目的及技術基礎,本篇文章將介紹,Docker 監控方案的實現。ios

Docker 監控方案的實現git

  • 本身動手 + 開源軟件
  • SaaS

評價標準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的,目前有RubyPythonJava的,在 GitHub 上能夠看到。

  • 低耦合性

StatsD 守護進程採起 UDP 這種無狀態的協議,收集指標和應用程序自己之間沒有依賴,不會阻塞應用,無論StatsD的狀態是運行中,仍是沒在運行,都不會影響應用程序,應用程序也不關心StatsD是否收到數據。

  • 易集成

StatsD很是容易整合其餘組件,能夠本身編寫採集業務邏輯,發送到StatsD守護進程便可。也就是說用戶的工做很簡單,只須要按定義好的規則採集數據發送到Stats,而後用Graphite存儲、展現,經過使用Riemann進行報警。

Tcollector

  • 來源於OpenTSDB

Tcollector 是一個採集指標數據並保存到OpenTSDB的框架,你可使用該框架本身編寫採集的業務邏輯。相似StatsD,運行在客戶端,收集本地的metric信息,推送到OpenTSDB。

Collectd

  • System statistics collection daemon
  • 存儲到RRD
  • 插件機制(input/output)
  • 簡單報警功能

Collectd便是一個守護進程,也是一個框架,相似StatsD,它性能很是好,採用C語言編寫。Collectd不直接支持從Docker中取數據,可是咱們能夠本身編寫插件來採集性能指標數據。

Collectd有強大的插件機制,已經實現了包括amqp、rrdtool、graphite、http、kafka、redis、mongodb、OpenTSDB以及CSV文件等在內的各類插件。

在4.3版本以後還支持簡單的基於閾值檢查的報警機制。

斌哥的 Docker 進階指南—監控方案的實現

cAdvisor是一個用於收集、聚合處理和輸出容器運行指標的守護進程。並且cAdvisor基本算是一個獲取Docker性能數據的標配了吧。

斌哥的 Docker 進階指南—監控方案的實現

一句命令就能夠啓動cAdvisor容器,訪問8080端口便可看到性能指標數據。cAdvisor能夠經過storage_driver參數將數據存到influxdb,同時也能夠將metric輸出爲Prometheus的格式,因此不少自定義Docker監控系統都會採起cAdvisor + Prometheus 的組合。

存儲TSDB

  • OpenTSDB
  • Influxdb
  • RRDTool
  • Graphite

關於時序列數據庫,能夠看附錄中相關的介紹文章。推薦使用OpenTSDB或者Influxdb,簡單對比一下各自特色以下:

  • OpenTSDB

    • Java & HBase
    • 易擴展(集羣功能強大)
    • 機器多,運維稍顯麻煩
  • Influxdb

    • Golang
    • 集羣功能不太成熟
    • 有類SQL的查詢語句
    • 單臺便可工做

這二者都支持自由模式和多維度,很是適合用於採用tag機制的數據模式建模。 開源可視化工具

  • Graphite
  • Influxdb + Grafana
  • Prometheus

光有數據是不夠的,raw data沒有任何意義,咱們須要良好的可視化組件來展現數據和數據的內在乎義,發揮數據的做用。

咱們也能夠將數據存儲和展現交給其餘開源軟件。

若是你的數據採集和存儲都是本身來完成的,只想使用一個外部的圖形化界面的話,選Grafana應該沒錯,Grafana展示形式很是豐富,配置也很靈活。

斌哥的 Docker 進階指南—監控方案的實現

以上,先到這裏。

下一章,劉斌將爲你們介紹 Docker 監控的開原方案,主流 SaaS 服務,及其特色。

超好用的監控軟件 Cloud Insight 不只能監控 Docker,還能對 Nagios 進行更好的可視化哦~

閱讀更多技術文章,請訪問 OneAPM 官方博客

本文轉自 OneAPM 官方博客

相關文章
相關標籤/搜索