官术网_书友最值得收藏!

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進行其余的監控。

主站蜘蛛池模板: 通河县| 平阳县| 隆化县| 通河县| 通渭县| 灵台县| 安陆市| 乌拉特前旗| 达拉特旗| 永和县| 武乡县| 黄陵县| 广南县| 迁西县| 普宁市| 岚皋县| 潍坊市| 文安县| 桂东县| 馆陶县| 阿克| 嘉禾县| 高阳县| 宣威市| 五寨县| 大田县| 临洮县| 贡山| 嘉兴市| 德州市| 扬州市| 梅河口市| 桂阳县| 周宁县| 中牟县| 松溪县| 姜堰市| 三河市| 陇川县| 毕节市| 得荣县|