用於監視Kubernetes和Docker的六大開源工具

6-tools1.jpg

Kubernetes和Docker是現代DevOps中最常聽到的兩個流行詞。 Docker是使您可以容器化和運行應用程序的工具,而Kubernetes爲您提供了一個平臺來編排或管理這些容器--由於使用Docker CLI手動管理成千上萬個容器是一個現實的噩夢。數據庫

可是,僅運行數千個容器並經過Kubernetes管理它們是不夠的。您必須正確觀察和分析它們,以確保您的服務正常運行。此過程稱爲站點可靠性工程(SRE),這是Google發起並推廣的術語。可觀察性和分析是SRE的主要內容。它能夠細分爲如下三個領域:安全

  • 監控,您能夠從應用程序和資源中提取數值指標,而後能夠對其進行可視化和分析,以顯示資源的當前狀態。提取度量後,就能夠將它們用於設置警報規則,簡化配置和調試以及作出更好的SRE決策。
  • 日誌 使開發人員能夠在發生故障時調試其容器。容器是短命的,日誌也是如此。 Kubernetes和Docker確實提供了一種瀏覽容器日誌的本地方法,可是其功能很是有限。所以,在任何面向容器的環境中,都必須有一個集中式日誌平面。
  • 跟蹤 使您能夠調試網絡上運行的服務,並遵循請求跟蹤,直到能夠肯定問題的根源。在微服務體系結構中,當多個服務/容器相互發送請求以執行一項業務任務時,適當的跟蹤解決方案是必要的。

本文將描述用於監視和分析容器形態運行的服務最有效的開源工具。服務器

Prometheus

Prometheus是討論開源監控解決方案時想到的第一個工具。它在開發社區中很是受歡迎,而且是CNCF項目的畢業生,該項目專一於SRE的監視方面。 Prometheus最初是由SoundCloud建立並開源的,它簡化了從給定指標端點基於時間序列提取數字指標的過程。它旨在監視高度動態的容器環境。網絡

Prometheus分爲三個元素:Prometheus服務器,Alertmanager和Exporter。Exporter是獨立的,獨立的進程/容器,能夠在目標資源上運行,以經過度量標準API生成和導出度量標準。而後,Prometheus服務器負責服務發現以及從Exporter程序中提取指標以存儲在Prometheus DB中,並隨後用於可視化或警報。 Alertmanager負責設置警報規則,分析Prometheus DB中的數據,並在觸發特定規則時將警報消息發送給多個接收者。這裏列出了大量Exporters,這些Exporters都獲得了普羅米修斯的正式支持和社區的維護。架構

Prometheus已成爲監視雲原生架構的行業標準。雖然它以其服務發現的簡單性,易用性,警報能力以及與Kubernetes的集成而聞名,但其輪詢體系結構並不理想。當前,Prometheus服務器必須能夠訪問度量標準終結點。可是,在Prometheus中實現了一個Pushgateway,它支持度量推送而不是輪詢。普羅米修斯的另外一個缺點是伸縮性很差。這個問題能夠在Prometheus的Thanos中獲得解決。分佈式

相關工具和技術:Grafana,Cortex,Thanos,Prometheus exporter,Alertmanager,Istio,Prometheus operator。ide

Ribenzaft_1.png

Grafana

Grafana是一個開源指標分析和可視化套件。它容許您使用從多個來源(例如Prometheus,Elasticsearch,MySQL,Postgres和Redis)得到的數據建立自定義儀表板。此外,Grafana擁有本身的警報系統和基於角色的軟件訪問控制(RBAC)系統。做爲數據可視化工具,Grafana在Prometheus用戶中享有盛譽,由於它們使他們可以有效地可視化Prometheus中存儲的指標。 Grafana中有各類官方和社區構建的自定義儀表板,可用於各類數據源,使用戶能夠輕鬆設置儀表板(在此連接中找到)並繼續進行監視。 Grafana提供了另外一個名爲Loki的關聯產品,該產品在Kubernetes中彙總日誌並與Grafana UI很好地集成。微服務

相關工具和技術:Loki,Prometheus。工具

Ribenzaft_2.png

Elastic Stack

Elastic Stack是Elastic的一組開源產品,旨在幫助用戶實時搜索,分析和可視化來自任何類型的源的任何格式的數據。該產品之前被認爲是ELK堆棧,首字母縮寫詞表明該公司的主要產品之一:Elasticsearch,Logstash和Kibana。 Elastic Stack藉助其大數據數據庫Elasticsearch提供監視和日誌記錄解決方案。性能

爲了聚合日誌,人們傾向於使用Elasticsearch進行存儲,使用Logstash或Fluentd進行日誌流傳輸,以及使用Kibana進行可視化。 Fluentd不是Elastic Stack的一部分,可是它普遍用於Kubernetes,以代替Logstash(Elastic Stack提供的工具)流式傳輸日誌。一樣,Metricbeat用於刮擦指標並在Kibana上設置可視化效果。企業版Elastic Stack隨附X-Pack,X-Pack是一組附加工具,可用於報告,警報和基於角色的訪問控制(RBAC)等功能。默認狀況下,Elastic Stack GUI Kibana不支持RBAC。您必須使用前面提到的Elastic Stack企業版來啓用它。

相關工具和技術:X-pack,Metricbeat,Logstash,Kibana。

Ribenzaft_3.png

Sensu Go

Sensu Go是用於大規模多雲監視的遙測和服務運行情況檢查解決方案。它使您能夠了解任何公共或私有云中的服務器,容器,服務,應用程序,功能和鏈接的設備。 Sensu能夠與Prometheus一塊兒運行以從兩種解決方案中得到最大收益,也能夠在沒有Prometheus的狀況下本機運行。 Sensu與Prometheus一塊兒工做得最好,由於將應用程序級別指標導出到Prometheus須要將Prometheus SDK加載到您的應用程序代碼庫並公開指標端點。而後將端點刮擦並存儲在Prometheus Server中。這聽起來可能須要作不少工做,有時確實如此。 Sensu經過使用Sidecar概念避免了這種複雜性。 Sensu代理與您的應用程序一塊兒部署。代理不斷收集指標並將其公開給Prometheus服務器,而無需更改應用程序代碼庫。

Sensu沒有Prometheus。它能夠在Kubernetes中本地運行,在Kubernetes中,它擁有本身的服務器來存儲和可視化由前面提到的Sensu代理公開的指標數據。

相關工具和技術:Prometheus。

Ribenzaft_4.png

Sysdig Inspect

Sysdig有兩個開源產品:Sysdig Inspect和Falco。在這裏,咱們將重點關注Inspect,它能夠監視和捕獲系統中運行的容器進程,並容許您深刻研究這些進程以進行事件後取證。這使您可以分析應用程序性能,排除錯誤並監視可能出現異常的全部處理器。此外,若是系統受到破壞,則Sysdig可以讓您瞭解破壞發生的方式以及在此過程當中獲取了哪些數據。 Sysdig Inspect是一個很是強大的工具,專一於系統的性能調整和安全檢測。

相關工具和技術:Grafana,Sysdig,Sysdig Falco。

Ribenzaft_5.png

Jaeger

Jaeger是Uber Engineering開源的端到端分佈式跟蹤解決方案。它使您能夠監視複雜的分佈式系統中的事務並進行故障排除。在現代微服務體系結構中,大多數操做問題都屬於網絡和可觀察性的範疇。發生服務故障時,您不知道請求如何經過網絡在服務之間傳遞以完成單個業務事務。這使得調試很是困難。 Jaeger目前正在CNCF下孵化,Jaeger使用跟蹤來啓用根本緣由分析,性能和延遲優化以及分佈式事務監視。 Jaeger與Istio開箱即用,Istio是Google開源的一種流行的服務網格實現。

相關工具和技術:Prometheus,Jaeger,Zipkin,Istio。

Ribenzaft_6-1536x1071.png

結論

這些工具在技術行業中被普遍使用,而且它們都有本身的優點。可是,這些解決方案中的大多數都須要熟練的實施和持續的手動維護,這可能會對DevOps團隊形成負擔,並分散企業的精力。沒有一種解決方案能夠知足您的全部需求,由於每種工具都專一於可觀察性和分析的一個或兩個特定方面。經過將這些工具混合在一塊兒,能夠爲您的我的業務需求提供獨特的解決方案。

爲了便於比較,下面的圖表概述了本文討論的每種工具提供的功能。

Ribenzaft_7.jpg

相關文章
相關標籤/搜索