使用 Prometheus 進行 Kubernetes 監控 [帶有用例和監控]
已發表: 2020-09-23目錄
普羅米修斯在哪里以及為什麼使用?
Prometheus Kubernetes 是一個監控工具,可以部署在 AWS、Azure 或 GCloud Kubernetes 集群上。 它被認為是現代基礎設施中必不可少的工具。 現代 DevOps 變得越來越複雜,手動處理變得越來越複雜,因此需要更多的自動化,因此您通常擁有多個運行容器化應用程序的服務器。
在所有實體都相互連接的基礎設施上運行著數百個不同的進程,因此維持這樣的設置以平穩運行並且沒有應用程序停機時間是非常具有挑戰性的。 想像一下,擁有如此復雜的基礎架構,負載分佈在許多位置的服務器,您無法了解硬件級別或應用程序級別發生的情況,例如錯誤、響應和延遲。
在如此復雜的基礎架構中,硬件停機或過載可能會耗盡資源,但當您部署大量服務和應用程序時,可能會出現更多問題。 它們中的任何一個都可能崩潰並導致其他服務失敗,並且有如此多的移動部件,並且突然間應用程序對用戶變得不可用。 您必須快速確定這數百個不同的事情中究竟出了什麼問題,這在手動調試系統時可能既困難又耗時。
使用 Prometheus 監控的一些用例
例如,假設一台特定服務器內存不足並啟動了一個正在運行的容器,該容器負責在 Kubernetes 集群中的兩個數據庫罐之間提供數據庫同步。 反過來,這導致這兩個數據庫罐失敗。 該數據庫由身份驗證服務使用,該服務也因數據庫不可用而停止工作。
依賴於該身份驗證服務的應用程序無法再對 UI 中的用戶進行身份驗證,但從用戶的角度來看,您所看到的只是 UI 中的錯誤。 當您不了解集群內部發生的事情時,您看不到此處顯示的事件鏈的紅線; 你只看到錯誤。 所以現在你從那裡開始向後工作以找到原因並修復它。 但是什麼會使這個搜索問題過程更有效率呢? 您可以使用一種工具來持續監控服務是否正在運行,並在一個服務崩潰時立即彈出警報。
您確切地知道發生了什麼,甚至更好的是,它甚至可以在問題發生之前識別問題,並提醒負責該基礎設施的系統管理員以防止該問題發生。 例如,在討論的這種情況下,它會定期檢查每個服務器上的內存使用狀態。 當在其中一個服務器上時,它會在一個多小時內達到峰值,例如 70% 或不斷增加,它會通知該服務器上的內存可能很快耗盡的風險。

或者讓我們考慮另一種情況,您停止查看應用程序的日誌,因為彈性搜索不接受任何新日誌,因為服務器用完了磁盤空間或彈性搜索達到了為其分配的存儲限制。 監控工具會不斷檢查存儲空間,並將其與存儲空間的彈性搜索消耗進行比較。 它將看到風險並通知維護者可能的存儲問題。
閱讀: Kubernetes 面試問題
您可以告訴監控工具應該觸發警報的關鍵點是什麼。 如果你有一個關鍵應用程序,絕對會丟失任何日誌數據,你可能會非常嚴格,一旦達到百分之五十或百分之六十容量就採取措施。 添加更多存儲空間需要很長時間,因為這是您組織中的一個官僚程序,您需要一些 IT 部門和其他幾個人的批准。

您還希望更早地收到有關可能的存儲問題的通知,以便您有更多時間修復它。 或者在第三種情況下,應用程序突然變得太慢,因為一個服務發生故障並開始在網絡中循環發送數百條錯誤消息,這會產生高網絡流量並減慢其他服務的速度,以便擁有檢測網絡中此類峰值的工具.
學習: Openshift 與 Kubernetes:Openshift 與 Kubernetes 之間的區別
資源
暴露給 Prometheus 的 Kubernetes 服務發現
主要組件:普羅米修斯服務器
普羅米修斯架構
資源
Prometheus Kubernetes 架構
Prometheus Kubernetes 的重要特徵之一是即使在其他系統出現故障時也能保持可靠。 您可以診斷問題並修復它們。 因此,每個 Prometheus 服務器都是獨立的,這意味著它不依賴於網絡存儲或其他遠程服務。
當基礎設施的其他部分發生故障時,它就可以工作,並且您無需設置廣泛的基礎設施即可使用它。 但是,它也有 Prometheus 難以擴展的缺點。 因此,當您擁有數百台服務器時,您可能希望擁有多個匯總所有這些指標數據的 Prometheus 服務器。
由於這些特性,以這種方式配置和縮放原語可能非常困難。 因此,雖然使用單個節點不太複雜,並且您可以非常輕鬆地開始使用,但它限制了 Prometheus 可以監控的指標數量。 要解決這個問題,您可以增加 Prometheus 服務器的容量,以便它可以存儲更多的指標數據,或者限制 Prometheus 從應用程序收集的指標數量,使其僅保留相關的指標。

您可以通過在 upGrad、Udemy、Coursera 等平台上進行雲計算課程來提升您對此類主題的知識,因為該監控工具可以部署在雲上。 尤其是upGrad,課程是由我國著名的IIIT-B機構之一設計的。 這將為您提供實踐經驗和更廣泛的知識方面。
退房: Kubernetes 與。 Docker:你應該知道的主要區別
結論
Kubernetes 簡化了容器化應用程序和微服務的部署、擴展和管理。 這有助於保持管理運行,但要識別和解決諸如執行緩慢之類的隱藏問題,您需要有能力從您的情況中積累和想像自上而下的基礎應用程序和執行信息。
不接近連續數據以及相關信息,幾乎難以對應您的狀態測量,因此您也可以更快地解決問題。
如果您想學習和掌握 Kubernetes、DevOps 等,請查看 IIIT-B 和 upGrad 的全棧軟件開發計劃 PG 文憑。