Docker從2013年登場開始人氣一路飆升,這家公司已經徹底改變了應用程式的管理方式。如今的文章討論的不再是採用容器的理由,更多的是如何應對廣泛的容器開發所帶來的挑戰。容器提升了開發過程中的速度和效能,同時也提升了日誌、編排、安全及可見度等方面的複雜性。不過,處理容器叢集所帶來的擴充套件問題、短暫性質以及龐大的資料量正是容器監控方案(如Prometheus和Sysdig)所要解決的挑戰。
本文旨在對兩個用於採集指標的主要解決方案進行比較,探討Prometheus和Sysdig這兩個流行的容器監控方案及為其提供容器完整可見性的視覺化工具(分別是Grafana和Sysdig Monitor)。
我從易於部署、所提供指標的複雜性、聚合程度以及所提供的告警能力等方面建立了評估這兩個容器監控方案的評價標準。對於視覺化工具,我評估了其安裝、與其宿主機監控方案的整合程度、自定義規格的簡易性以及總體佈局與觀感等幾個方面。
Soundcloud開發的Prometheus是一款開源的自主託管監控解決方案,它為多維度指標提供了一系列工具集,包括聚合、告警、儲存和視覺化等。其查詢語言相當靈活且易於掌握,繪圖與告警可使用相同的語言,從而使得整個容器監控任務變得更加簡單。
此外,使用者還可以透過在不同的資料中心/區域執行相同的Prometheus伺服器來實現Prometheus的高可用性。這樣,如果某個區域出現故障,其他區域的監控系統仍然可以訪問。
Prometheus推薦使用Grafana實現資料視覺化。二者相輔相成,因為Grafana與Prometheus一樣使用多種資料源型別。使用Grafana建立一個完備的儀錶板需要花點時間,不過有大量的檔案可以幫助使用者完成整個過程。此外,一旦構建完成,Grafana儀錶板也可以輕鬆擴充套件以改寫多個Docker宿主機。要監控更多的宿主機,只需在每臺宿主機上部署一個Node Exporter和一個cAdvisor容器,然後通知Prometheus伺服器進行抓取即可。
-
它是一個功能強大且易於使用的監控工具
-
它使用容器部署整個技術棧
-
該方案為分散式系統和基礎設施而生
-
它提供了不依賴於分散式儲存的可擴充套件的資料採集功能
-
由於採用基於拉取的方法(透過HTTP獲取標的的所有指標),其擴充套件性優良
-
它使用靈活的服務發現,內建了對Azure、Consul、Docker、EC2和Kubernetes的支援
-
它具有一個活躍的響應式社群
-
不涉及成本
Prometheus的生態系統非常龐大,這意味著使用者可以找到多種程式語言(包括Java、Go、Python、.NET、PHP、Ruby等)的客戶端庫。
-
易於部署:✔✔✔
-
指標細節:✔✔✔✔✔
-
聚合程度:✔✔✔✔✔
-
告警能力:✔✔✔✔
-
易於安裝:✔✔✔
-
(與Prometheus的)整合程度:✔✔✔✔
-
易於定製:✔✔✔✔
-
佈局和觀感:✔✔✔✔✔
另一個自託管服務Sysdig也提供了簡化Docker監控所需的容器編排工具,包括指標聚合等等。
Sysdig實際上分成兩個部分:開源版本,它需要在宿主機作業系統上安裝核心頭檔案;雲端/本地部分,它使用開放版本傳輸從Sysdig自有伺服器採集的指標。由於該方案會掛接到宿主機核心中,它無須從Docker守護行程獲取指標。另外,在執行Docker Stats命令並使用cAdvisor時,Sysdig的開源版本可以獲得容器的實時檢視。
Sysdig Monitor(此前稱之為Sysdig Cloud)會自動發現環境中的所有容器,並將它們顯示在使用者選擇的幾個預配置儀錶板上。它透過一個單一集合點捕獲應用程式、容器、宿主機和StatsD指標。該方案為實時和歷史資料提供了強大的視覺化工具,部署會以圖形或表格形式展示出來。因為能夠深入到容器的單獨行程,該儀錶板具有強大的告警功能應對可能出現的問題。
-
支援所有Linux技術,包括Docker、Kubernetes、Mesos等等
-
採集所有型別的資料,包括Docker和Kubernetes事件日誌以及來自容器編排工具的元資料
-
具有常見服務的過濾器,包括Apache Tomcat、NGINX、MongoDB、PHP-FPM和PostgreSQL,可深入瞭解資料庫效能
-
可以深入單個容器中檢視單個行程正在使用的資源
-
可掛接到編排工具中透過pod、叢集、名稱空間等排除故障
-
記錄並重放系統活動
-
告警功能可以將不同的警報傳送給不同的Email
-
團隊功能讓管理員可以控制儀錶板、資料和警報的團隊訪問許可權
-
易於部署:✔✔✔
-
指標細節:✔✔✔✔✔
-
聚合程度:✔✔✔✔✔
-
告警能力:✔✔✔✔
-
易於安裝:✔✔✔✔
-
(與Sysdig的)整合程度:✔✔✔✔✔
-
易於定製:✔✔✔✔
-
佈局和觀感:✔✔✔
從根本上說,選擇合適的容器監控解決方案會涉及很多事情。其中是主要的是需求及(可能是最重要的)預算。在兩種監控工具中,Sysdig(與Sysdig Monitor一起)更容易設定並可立即投入使用。相比之下,Prometheus和Grafana則需要更多的時間和耐心進行配置,儘管其回報是該方案將完全根據需求量身定製。
此外,作為託管解決方案,Sysdig每年費用不菲,而Prometheus是開源且免費的。這兩種工具都得到了活躍社群的支援,透過這些社群可獲得相應幫助和支援,不過,Prometheus的社群更大更成熟。簡而言之,請根據成本和偏好選擇合適的工具,因為這二者都會繼續擴充套件並可能實現你的需求。
原文連結:https://dzone.com/articles/container-monitoring-prometheus-and-grafana-vs-sys
本次培訓內容包括:容器原理、Docker架構及工作原理、Docker網路與儲存方案、Harbor、Kubernetes架構、元件、核心機制、外掛、核心模組、Kubernetes網路與儲存、監控、日誌、二次開發以及實踐經驗等,點選瞭解具體培訓內容。
長按二維碼向我轉賬
受蘋果公司新規定影響,微信 iOS 版的贊賞功能被關閉,可透過二維碼轉賬支援公眾號。