容器監控解決方案對比

容器監控解決方案對比

容器監控解決方案有不少,有些開源有些商用。本文主要從high-level對比幾款容器監控的解決方案,但願可以在選擇解決方案時縮小範圍。
本文非原創,主要翻譯自Comparing 10 Container Monitoring Solutions for Rancherios

容器監控解決方案對比

本文分析的容器監控解決方案包括:git

能力對比

咱們選取了監控解決方案共有的從幾個方面能力進行對比,抽象爲7個層次:github

  1. Host Agent - 單個host上的指標數據收集。Agent部署在host上(一般以容器運行),並經過API或日誌文件採集指標時序數據。
  2. Data gathering framework - 彙總全部host上的指標數據保存到一個共享的存儲節點的機制。
  3. Datastore - 指標數據的存儲多是傳統的數據庫,或者專爲時序數據存儲的分佈式時序數據庫。有些方案使用本地存儲,而有些則使用可插入的開源時序數據庫。
  4. Aggregation engine - 聚和引擎主要提供指標數據的聚和查詢功能,包括縱向聚和(如多個host上同一個指標的聚和)和時間聚和(聚和成1小時、1天等)。
  5. Filtering & Analysis - 過濾和分析功能差別較大,有些解決方案提供了可自定義的儀表板,嵌入式查詢語言和複雜的分析功能。
  6. Visualization tier - 監視工具一般具備可視化Web界面用於交互以生成圖表、定製查詢、甚至定義警報條件。可視化層一般與過濾和分析功能緊密耦合。
  7. Alerting & Notification - 監控系統的另外一個共同特徵是警報子系統,若是知足或超過預約義的閾值,該子系統能夠提供通知。

以下圖顯示了咱們的10個監控解決方案的能力對比視圖,哪些組件實現了每一個層次的功能以及組件所在的位置:
容器監控解決方案能力對比圖redis

其餘方面的對比

除了基本能力以外,咱們一般還關心監控系統方案以下圖所示的其餘方面:
容器監控解決方案其餘方面的對比docker

容器監控解決方案簡介

Docker Stats

Docker提供了內建的docker stats命令用於獲取docker hosts的監控信息。管理員能夠經過該命令查詢獲取詳細和實時的容器資源消耗指標信息,包括CPU、內存的使用率,磁盤和網絡I/O,以及運行的進程個數等。
Docker stats不能獲取歷史信息,而且只能獲取單個host。一般和Docker日誌文件和docker events命令一塊兒使用來知足監控服務的需求。因單個host的侷限性,docker stats不太適用於Kubernetes和Swarm集羣的監控。從監控系統能力上看,docker stats只提供了Host Agent的部分能力。數據庫

cAdvisor

cAdvisor是谷歌的開源項目,用於採集和展現容器的資源使用信息。它最初是用於管理谷歌的lmctfy容器,如今已經支持了Docker容器。它被實現爲一個守護進程,用於收集,聚合,處理和導出有關正在運行的容器的信息。它能夠安裝和運行在docker主機上或者docker容器裏。
cAdvisor支持Web界面用於生成指標圖表,但和docker stats同樣,它只能展現一個Docker host上的指標數據。
cAdvisor默認只保留60s的數據,其支持經過外部的存儲服務保存時序數據,如Prometheus和InfluxDB。cAdvisor常做爲Host Agent用做其餘監控系統方案的一部分。後端

Scout

Scout是一家位於科羅拉多州的公司,提供基於雲的應用程序和數據庫監控服務,主要針對Ruby和Elixir環境。Scout提供全面的數據收集,過濾和監控功能,靈活的警報和與第三方警報服務的集成。Scout不是開源的,在30天試用以後須要付費才能繼續試用。
Scout支持利用其現有的監控和警報框架監控Docker容器,提供了使用Ruby和StatsD編寫腳本以獲取Docker Stats和Docker event API以及將指標中繼到Scout進行監控的方法。
Scout應用做爲託管雲服務(a hosted cloud service),在快速啓動和運行容器監控解決方案時能夠省去不少麻煩。若是您正在部署Ruby應用程序或運行Scout支持的數據庫環境,那麼整合Docker,應用程序和數據庫級監視並使用Scout解決方案是個不錯的選擇。服務器

Pingdom

Pingdom是由德克薩斯州奧斯汀的SolarWinds運營的託管雲服務,該公司專一於監控IT基礎架構。雖然Pingdom的主要用例是網站監控,但做爲其服務器監控平臺的一部分,Pingdom提供了大約90個插件。其實Pingdom維護着docker-scout,與Scout使用的StatsD agent相同。固然它也是商用的,其訂價很是靈活,用戶客戶以選擇基於服務器的方案或者基於StatsD指標數量的方案。
對於須要易於設置和管理的全棧監控解決方案以及但願監控容器管理平臺以外的其餘服務的用戶而言,Pingdom也是個不錯的選擇。網絡

Datadog

Datadog和Scout、Pingdom同樣也是一個商用的託管雲服務監控解決方案。Datadog還提供了一個Agent能夠部署在Docker主機上,並開發了一個StatsD的加強版DogStatsD。Datadog Agent收集並轉發Docker API提供的全套指標,並提供更詳細,更精細的監控。與其餘服務同樣,Datadog也可用於監控其餘服務和應用程序,它擁有一個包含200多個集成的庫。
Datadog優於其餘一些雲服務的一個優勢是它具備Docker以外的集成,能夠從Kubernetes,Mesos等等收集指標。Datadog-Kubernetes監控解決方案使用Kubernetes中的DaemonSets自動將數據收集Agent部署到每一個集羣節點。架構

Sysdig

Sysdig是一家加利福尼亞州的公司,提供基於雲的監控解決方案。與目前爲止描述的一些基於雲的監控解決方案不一樣,Sysdig更側重於監控容器環境,包括Docker,Swarm,Mesos和Kubernetes。Sysdig在其開源項目中提供了部分的功能,並能夠選擇在雲或者本地進行部署。商用Sysdig Monitor監控,警報和故障排除功能,包括Docker,Kubernetes,Mesos和Swarm-aware。

Prometheus

Prometheus是最初由SoundCloud建立的一種流行的開源監控和警報工具包。它如今是一個CNCF項目(而且已經畢業),這是該公司繼Kubernetes以後的第二個託管項目。和其餘解決方案不一樣,Prometheus是一種模塊化的自託管方式,而不是做爲雲服務提供。所以能夠用戶能夠在其集羣上部署Prometheus,不管是內部部署仍是雲駐留。
Prometheus不是將數據推送到雲服務,而是經過HTTP向安裝在每一個Docker主機上的exporters「抓取」數據。一些exporters做爲Prometheus GitHub項目的一部分正式維護,而其餘exporters則是外部貢獻。Prometheus服務器從各類源獲取時間序列數據,並將數據存儲在其內部數據存儲中。Prometheus提供服務發現,針對特定指標的單獨推送網關等功能,並具備擅長查詢多維數據的嵌入式查詢語言(PromQL)。它還具備嵌入式Web UI和API。 Prometheus中的Web UI提供了良好的功能,但須要用戶瞭解PromQL,所以一些用戶更喜歡使用Grafana做爲圖表和查看指標的界面。
Prometheus有一個獨立的告警管理器,具備獨特的UI,能夠處理存儲在Prometheus中的數據。與其餘告警管理器同樣,它能夠與各類外部告警服務配合使用,包括電子郵件,Hipchat,Pagerduty,#Slack,OpsGenie,VictorOps等。
因爲Prometheus由許多組件組成,而且須要根據所監控的服務選擇和安裝exporters,所以安裝起來比較困難。雖然不像Datadog或Sysdig這樣的工具那麼精緻,但Prometheus提供相似的功能,普遍的第三方軟件集成和一流的雲監控解決方案。

Heapster

Heapster是另外一種常常與監控容器環境相關的解決方案。 Heapster是Kubernetes旗下的一個項目,有助於實現容器集羣監控和性能分析。Heapster專門支持Kubernetes和OpenShift。人們常常將Heapster描述爲一種監控解決方案,但它更確切地說是「集羣範圍內的監控和事件數據聚合器」。Heaps不會單獨部署,它是一堆開源組件的一部分。 Heapster監控堆棧一般包括:

  • 數據採集層 - 如cAdvisor
  • 可插拔存儲後端 - 例如ElasticSearch,InfluxDB,Kafka,Graphite等
  • 數據可視化組件 - Grafana或Google Cloud Monitoring

ELK Stack

另外一個可用於監視容器環境的開源軟件棧是ELK,由Elastic提供的三個開源項目組成。ELK堆棧功能多樣,普遍用於各類分析應用程序,日誌文件監控是關鍵應用程序。ELK以其關鍵組件命名:

  • Elasticsearch - 一個基於Lucene的分佈式搜索引擎
  • Logstash - 一個數據處理管道,它接收數據並將其發送到Elasticsearch(或其餘「stashes」)
  • Kibana - Elasticsearch的可視化搜索儀表板和分析工具

Beats是Elastic堆棧的無名成員,項目開發人員描述其爲「輕量級數據託運人」。有各類現成的Beats託運人,包括Filebeat(用於日誌文件),Metricbeat(用於收集數據指標)和Heartbeat用於簡單的正常運行時間監控等。Metricbeat支持Docker,做者提供了有關如何使用它來提取主機指標和監視Docker容器中的服務的指導。有商業ELK堆棧提供商,如logz.io和Elastic Co自己,它們提供「ELK as a service」,經過告警功能補充堆棧的功能。
雖然可使用ELK進行容器監控,但與Sysdig,Prometheus或Datadog相比,這是一個更難實施的解決方案。

Sensu

Sensu是一種通用的self-hosted監控解決方案,支持各類監控應用。免費的Sensu Core版本在MIT許可下可用,而具備附加功能的企業版本爲50個client每個月99刀。Sensu使用術語client來指代其監控agent,所以根據您監控的主機和應用程序環境的數量,企業版可能會變得昂貴。
Sensu在容器管理以外具備使人印象深入的功能。Sensu插件的數量持續增加,而且有許多Sensu和社區支持的插件容許從各類來源提取指標。插件每每是用Ruby編寫的,須要在Docker主機上運行基於gem的安裝腳本。 用戶可使用他們選擇的語言開發其餘插件。 Sensu插件不會部署在本身的容器中,這與咱們考慮過的其餘監控解決方案同樣。不一樣的用戶但願根據他們的監視要求混合和匹配插件,所以爲每一個插件分配容器將變得難以處理,這多是未在容器部署的緣由。可使用Chef,Puppet和Ansible等平臺部署插件。例如,對於Docker,有六個獨立的插件能夠從各類來源收集與Docker相關的數據,包括Docker stats, container counts, container health, Docker ps等等。
Sensu使用使用RabbitMQ實現的消息總線來進行Client和Sensu服務器之間的通訊。Sensu使用Redis存儲數據,但它旨在將數據路由到外部時間序列數據庫。支持的數據庫包括Graphite,Librato和InfluxDB。安裝和配置Sensu須要付出一些努力。 安裝Sensu的先決條件是Redis和RabbitMQ,Sensu服務器,Sensu客戶端和Sensu儀表板須要單獨安裝。爲方便起見,可使用運行redis,rabbitmq-server,uchiwa(開源Web層)和Sensu服務器組件的Docker鏡像(hiroakis / docker-sensu-server),但這個軟件包只能用於測試,而不是生產環境。若是運行Kubernetes,Sensu將不是一個很好的方案,由於其衆多插件中並無支持Kubernetes的。

其餘方案

  • Graylog - 是另外一個在監控Docker時出現的開源解決方案。與ELK同樣,Graylog適用於Docker日誌文件分析。它能夠接受和解析來自多個數據源的日誌和事件數據,並支持第三方收集器,如Beats,Fluentd和NXLog。
  • Nagios - 一般被認爲更適合監控主機集羣而不是容器,但對於監控主機集羣的人來講,Nagios更受歡迎。
  • Netsil - 是一家硅谷初創公司,爲Docker,Kubernetes,Mesos以及各類應用程序和雲提供商提供監控應用程序。Netsil的應用運營中心(AOC)爲雲應用服務提供框架感知監控。 與所討論的其餘一些監控框架同樣,它以雲/ SaaS或自託管方式提供。

參考

Comparing 10 Container Monitoring Solutions for Rancher

相關文章
相關標籤/搜索