prometheus 基本介紹
Prometheus 是一套開源的監控,報警、時間序列數據庫的組合,起始是由 SoundCloud 公司開發的。隨着發展,越來越多公司和組織接受採用Prometheus,社區也十分活躍,他們便將它獨立成開源項目,並且有公司來運作。現如今Prometheus使用非常廣泛,因爲它不僅僅可以支持容器,同時還可以監控傳統的架構與應用。
prometheus 整體架構
prometheus 數據採集
-
pull 方式:
該方式爲拉取形式,首先需要在 Client 安裝 exporter,exporters 以守護進程的模式運行,然後開始採集數據每個exporters 程序爲一個單獨的 http-server,因爲它可以對 http 的請求做出響應,並返回 metric(K/V數據)而Prometheus-server 則通過 pull 的形式去訪問每個節點上的 exporter 並採集所需要的數據,默認爲該方式。 -
push 方式:
該方式爲推送形式,如需使用 push 方式,則需在服務端或者客戶端上安裝 pushgateway 插件 pushgateway 我們可以將其理解爲一個代理,它位於客戶端與服務端之間,pushgateway 先接收指標,然後 pushgateway 再推送給prometheus-server,這裏的 pushgateway 不一定要安裝客戶端,也可以安裝在服務端甚至其它節點。
prometheus 指標類型
指標的英文叫做 metrics,metrics 就是一組K/V數據,可以理解爲 metrics 是對採集過來的數據的一種統稱
而非一個具體的數值或者指標,因爲指標的類型是多樣的:
- conter:計數器
- gauge:儀表盤
- histogram:直方圖
- summary:摘要
prometheus 組件組成
`Prometheus-Server組件:``Prometheus-Server爲Prometheus組件的核心,負責數據的採集與存儲,並提供PromSQL查詢語言支持``Prometheus-Server可以通過靜態配置管理監控目標,也可以配合使用Service Discovery的方式動態管理監控目標,並從這些監控目標中獲取數據``在Prometheus當中,它內置了Express Browser UI,通過它,我們可以直接使用PromSQL查詢語言來實現數據的查詢以及可視化` `Exporters組件:``Exporters相當於Zabbix當中的Agent,它將監控數據採集的端點通過HTTP服務的形式暴露給Prometheus-Server``而Prometheus-Server則通過訪問這個Exporter提供的Endpoint端點,即可獲取到需要採集的監控數據` `AlertManager組件:``此組件爲警報管理器,除了提供基本的告警功能以外,還主要提供了分組,抑制,靜默等高級告警特性``在Prometheus Server中支持基於PromQL創建告警規則,如果滿足PromQL定義的規則,則會產生一條告警,而告警的後續處理流程則由AlertManager進行管理` `PushGateway組件:``Prometheus的數據採集基於Pull模型所設計,也就是拉取,所以在網絡環境當中Exporter需要能夠直接與Prometheus-Server通信``那如果不是直連呢?那就要通過PushGateway進行中轉,PushGateway將監控數據主動Push到Gateway當中``而Prometheus-Server則可以採用同樣Pull的方式從PushGateway中獲取到監控數據,總之相當於一個代理,同時也是一個獨立的服務,它接收指標而不是探測指標`
-
Prometheus-Server 組件:
Prometheus-Server 爲 Prometheus 組件的核心,負責數據的採集與存儲,並提供 PromSQL 查詢語言支持Prometheus-Server 可以通過靜態配置管理監控目標,也可以配合使用 Service Discovery 的方式動態管理監控目標,並從這些監控目標中獲取數據在 Prometheus 當中,它內置了 Express Browser UI,通過它,我們可以直接使用PromSQL 查詢語言來實現數據的查詢以及可視化 -
Exporters 組件:
Exporters 相當於 Zabbix 當中的 Agent,它將監控數據採集的端點通過 HTTP 服務的形式暴露給 Prometheus-Server
而 Prometheus-Server 則通過訪問這個 Exporter 提供的 Endpoint 端點,即可獲取到需要採集的監控數據 -
AlertManager 組件:
此組件爲警報管理器,除了提供基本的告警功能以外,還主要提供了分組,抑制,靜默等高級告警特性在 Prometheus Server 中支持基於 PromQL 創建告警規則,如果滿足 PromQL 定義的規則,則會產生一條告警,而告警的後續處理流程則由 AlertManager 進行管理 -
PushGateway 組件:
Prometheus 的數據採集基於 Pull 模型所設計,也就是拉取,所以在網絡環境當中 Exporter 需要能夠直接與Prometheus-Server 通信那如果不是直連呢?那就要通過 PushGateway 進行中轉,PushGateway 將監控數據主動Push 到 Gateway 當中而Prometheus-Server 則可以採用同樣Pull的方式從 PushGateway 中獲取到監控數據,總之相當於一個代理,同時也是一個獨立的服務,它接收指標而不是探測指標
式從 PushGateway 中獲取到監控數據,總之相當於一個代理,同時也是一個獨立的服務,它接收指標而不是探測指標
總結
只有注入思想的博客纔是好的博客