- Nuclio實戰及源碼分析:基于Kubernetes的Serverless FaaS平臺
- 李彬 詹煜卓 任勝寒 張晨編著
- 1187字
- 2024-08-06 16:59:57
1.3.4 監控和告警系統——Prometheus
Prometheus是一個開源系統監控和告警工具包,最初在SoundCloud構建。自2012年發布以來,許多公司和組織都采用了Prometheus,該項目擁有非常活躍的開發者和社區用戶。它現在是一個獨立的開源項目,獨立于任何公司維護。為了強調這一點,并明確項目的開源價值,Prometheus于2016年加入云原生計算基金會,成為繼Kubernetes之后的第二個托管項目。
Prometheus將其指標收集并存儲為時間序列數據,即將指標信息與記錄它的時間戳一起存儲。
(1)Prometheus的優勢
1)具有由度量指標和鍵-值對標識的時間序列數據多維數據模型。
2)具有一種強大的靈活查詢語言PromQL。
3)不依賴分布式存儲,單個服務器節點是自治的。
4)時間序列數據指標收集是通過HTTP從服務端拉取的。
5)通過中間網關支持推送時間序列監控數據。
6)通過服務發現或靜態配置來獲取監控目標。
7)支持多種類型圖表和儀表盤。
(2)指標的含義
對普通大眾來說度量是數字度量。時間序列意味著記錄隨著時間的推移變化。用戶想要測量的內容因應用程序而異。對于Web服務器來說,它可能是請求時間;對于數據庫來說,它可能是活動連接數或活動查詢數等。
指標在理解為什么應用程序以某種方式工作方面起著重要作用。假設正在運行的一個Web應用程序很慢,就需要收集一些信息來了解應用程序發生了什么。例如,當請求數量很高時,應用程序可能會變慢。如果此時有請求計數指標,便可以方便地找出原因并通過增加服務器數量來處理負載。
(3)Prometheus生態系統
Prometheus生態系統由多個組件組成,其中許多是可選的。
1)最主要的是Prometheus Server服務器,用于抓取和存儲時間序列數據。
2)用于檢測應用程序代碼的客戶端程序庫。
3)Push Gateway,支持數據推送。
4)監控特殊指標的Exporter服務,例如HAProxy、StatsD、Graphite等。
5)告警處理器alartmanager。
6)其他周邊工具。
上述大多數Prometheus組件都是用Go語言編寫的,這使得它們易于構建和部署為靜態二進制文件。
圖1-6所示為Prometheus的架構及其一些生態系統組件。
Prometheus從監控目標中直接或通過中間網關推送來抓取指標。它在本地存儲所有抓取的指標數據,并對這些數據運行一系列規則過濾,以從現有數據聚合和記錄新的時間序列或生成告警。對于監控后的數據可以通過Grafana或其他工具實現可視化。
(4)Prometheus的適用場景
Prometheus可以很好地記錄任何純文本時間序列。它既適合以機器為中心的監控,也適合監控面向服務的高度動態架構。在微服務世界中,它在多維數據收集和查詢方面有特殊的優勢。

圖1-6 Prometheus的架構及其一些生態系統組件
Prometheus專為可靠性而設計,可以在斷電期間快速診斷問題。每個Prometheus服務器都是相互獨立的,不依賴于網絡存儲或其他遠程服務。當基礎設施的其他部分損壞時,可以使用它,因為它不需要消耗大量的基礎資源。
(5)Prometheus的不適用場景
Prometheus重視可靠性,即使在故障情況下,也可以隨時查看有關系統的可用統計信息。如果需要100%的準確性,例如按請求計費,那么Prometheus不是一個好的選擇,因為收集的數據可能不夠詳細和完整。在這種情況下,最好使用其他系統來收集和分析數據以進行計費,而使用Prometheus進行其余的監控。
- Python自動化運維快速入門
- 數據庫系統原理及MySQL應用教程
- RTC程序設計:實時音視頻權威指南
- HTML5+CSS3網頁設計
- JavaScript 程序設計案例教程
- Building RESTful Python Web Services
- Visual C#.NET Web應用程序設計
- Django 3.0入門與實踐
- HTML5開發精要與實例詳解
- Python:Deeper Insights into Machine Learning
- Photoshop智能手機APP界面設計
- Python大規模機器學習
- NGUI for Unity
- Java Web開發教程:基于Struts2+Hibernate+Spring
- Python Linux系統管理與自動化運維