天天看點

Prometheus 安裝配置

Prometheus 安裝配置

大資料技術AI

Flink/Spark/Hadoop/數倉,資料分析、面試,源碼解讀等幹貨學習資料

91篇原創内容

公衆号

Prometheus 特點

官網:https://prometheus.io/

下載下傳位址:https://prometheus.io/download/

易于管理

Prometheus核心部分隻有一個單獨的二進制檔案,不存在任何的第三方依賴(資料庫,緩存等等)。唯一需要的就是本地磁盤,是以不會有潛在級聯故障的風險。Prometheus基于Pull模型的架構方式,可以在任何地方(本地電腦,開發環境,測試環境)搭建我們的監控系統。

對于一些複雜的情況,還可以使用Prometheus服務發現(Service Discovery)的能力動态管理監控目标。

監控服務的内部運作狀态

Pometheus鼓勵使用者監控服務的内部狀态,基于Prometheus豐富的Client庫,使用者可以輕松的在應用程式中添加對Prometheus的支援,進而讓使用者可以擷取服務和應用内部真正的運作狀态。 

強大的資料模型

所有采集的監控資料均以名額(metric)的形式儲存在内置的時間序列資料庫當中(TSDB)。所有的樣本除了基本的名額名稱以外,還包含一組用于描述該樣本特征的标簽。如下所示:

每一條時間序列由名額名稱(Metrics Name)以及一組标簽(Labels)唯一辨別。每條時間序列按照時間的先後順序存儲一系列的樣本值。

http_request_status:名額名稱(Metrics Name)

{code='200',content_path='/api/path',environment='produment'}:表示次元的标簽,基于這些Labels我們可以友善地對監控資料進行聚合,過濾,裁剪。

[value1@timestamp1,value2@timestamp2...]:按照時間的先後順序 存儲的樣本值。

強大的查詢語言PromQL

Prometheus内置了一個強大的資料查詢語言PromQL。通過PromQL可以實作對監控資料的查詢、聚合。同時PromQL也被應用于資料可視化(如Grafana)以及告警當中。

通過PromQL可以輕松回答類似于以下問題:

在過去一段時間中95%應用延遲時間的分布範圍?

預測在4小時後,磁盤空間占用大緻會是什麼情況?

CPU占用率前5位的服務有哪些?(過濾)

高效

對于監控系統而言,大量的監控任務必然導緻有大量的資料産生。而Prometheus可以高效地處理這些資料,對于單一Prometheus Server執行個體而言它可以處理:

數以百萬的監控名額

每秒處理數十萬的資料點

可擴充

可以在每個資料中心、每個團隊運作獨立的Prometheus Sevrer。Prometheus對于聯邦叢集的支援,可以讓多個Prometheus執行個體産生一個邏輯叢集,當單執行個體Prometheus Server處理的任務量過大時,通過使用功能分區(sharding)+聯邦叢集(federation)可以對其進行擴充。

易于內建

使用Prometheus可以快速搭建監控服務,并且可以非常友善地在應用程式中進行內建。目前支援:Java,JMX,Python,Go,Ruby,.Net,Node.js等等語言的用戶端SDK,基于這些SDK可以快速讓應用程式納入到 Prometheus的監控當中,或者開發自己的監控資料收集程式。

同時這些用戶端收集的監控資料,不僅僅支援 Prometheus,還能支援Graphite這些其他的監控工具。

同時Prometheus還支援與其他的監控系統進行內建:Graphite, Statsd, Collected, Scollector, muini, Nagios等。Prometheus社群還提供了大量第三方實作的監控資料采集支援:JMX,CloudWatch,EC2,MySQL,PostgresSQL,Haskell,Bash,SNMP,Consul,Haproxy,Mesos,Bind,CouchDB,Django,Memcached,RabbitMQ,Redis,RethinkDB,Rsyslog等等。

可視化

Prometheus Server中自帶的Prometheus UI,可以友善地直接對資料進行查詢,并且支援直接以圖形化的形式展示資料。同時Prometheus還提供了一個獨立的基于Ruby On Rails的Dashboard解決方案 Promdash。最新的Grafana可視化工具也已經提供了完整的Prometheus支援,基于Grafana可以建立更加精美的監控圖示。基于Prometheus提供的API還可以實作自己的監控可視化UI。

開放性

通常來說當我們需要監控一個應用程式時,一般需要該應用程式提供對相應監控系統協定的支援,是以應用程式會與所選擇的監控系統進行綁定。為了減少這種綁定所帶來的限制,對于決策者而言要麼你就直接在應用中內建該監控系統的支援,要麼就在外部建立單獨的服務來适配不同的監控系統。

而對于Prometheus來說,使用Prometheus的client library的輸出格式不止支援Prometheus的格式化資料,也可以輸出支援其它監控系統的格式化資料,比如Graphite。是以你甚至可以在不使用Prometheus的情況下,采用Prometheus的client library來讓你的應用程式支援監控資料采集。

Prometheus 架構

Prometheus 安裝配置

Prometheus Server:主伺服器,負責收集和存儲時間序列資料

client libraies:應用程式代碼插樁,将監控名額嵌入到被監控應用程式中

Pushgateway:推送網關,為支援short-lived作業提供一個推送網關

exporter:專門為一些應用開發的資料攝取元件—exporter,例如:HAProxy、StatsD、Graphite等等。

Alertmanager:專門用于處理alert的元件

Prometheus既然設計為一個次元存儲模型,可以把它了解為一個OLAP系統。

存儲計算層

Prometheus Server,裡面包含了存儲引擎和計算引擎。

Retrieval元件為取數元件,它會主動從Pushgateway或者Exporter拉取名額資料。

Service discovery,可以動态發現要監控的目标。

TSDB,資料核心存儲與查詢。

HTTP server,對外提供HTTP服務。

采集層

采集層分為兩類,一類是生命周期較短的作業,還有一類是生命周期較長的作業。

短作業:直接通過API,在退出時間名額推送給Pushgateway。

長作業:Retrieval元件直接從Job或者Exporter拉取資料。

應用層

應用層主要分為兩種,一種是AlertManager,另一種是資料可視化。

AlertManager

對接Pagerduty,是一套付費的監控報警系統。可實作短信報警、5分鐘無人ack打電話通知、仍然無人ack,通知值班人員Manager...

Emial,發送郵件

資料可視化

Prometheus build-in WebUI

Grafana

其他基于API開發的用戶端

Prometheus 下載下傳

Prometheus 安裝配置
Prometheus 安裝配置

Prometheus 安裝

安裝Prometheus Server

Prometheus基于Golang編寫,編譯後的軟體包,不依賴于任何的第三方依賴。隻需要下載下傳對應平台的二進制包,解壓并且添加基本的配置即可正常啟動Prometheus Server。

1. 解壓

2. 添加配置prometheus.yml

Prometheus 安裝配置

3. 配置說明

1、global配置塊:控制Prometheus伺服器的全局配置

scrape_interval:配置拉取資料的時間間隔,預設為1分鐘。

evaluation_interval:規則驗證(生成alert)的時間間隔,預設為1分鐘。

2、rule_files配置塊:規則配置檔案

3、scrape_configs配置塊:配置采集目标相關, prometheus監視的目标。Prometheus自身的運作資訊可以通過HTTP通路,是以Prometheus可以監控自己的運作資料。

job_name:監控作業的名稱

static_configs:表示靜态目标配置,就是固定從某個target拉取資料

targets:指定監控的目标,其實就是從哪兒拉取資料。Prometheus會從http://hadoop1:9090/metrics上拉取資料。

Prometheus是可以在運作時自動加載配置的。啟動時需要添加:--web.enable-lifecycle

4. 啟動

安裝Pushgateway

Prometheus在正常情況下是采用拉模式從産生metric的作業或者exporter(比如專門監控主機的NodeExporter)拉取監控資料。但是我們要監控的是Flink on YARN作業,想要讓Prometheus自動發現作業的送出、結束以及自動拉取資料顯然是比較困難的。

PushGateway就是一個中轉元件,通過配置Flink on YARN作業将metric推到PushGateway,Prometheus再從PushGateway拉取就可以了。

直接解壓啟動即可,無需配置

安裝Node Exporter(選擇性安裝)

在Prometheus的架構設計中,Prometheus Server并不直接服務監控特定的目标,其主要任務負責資料的收集,存儲并且對外提供資料查詢支援。是以為了能夠能夠監控到某些東西,如主機的CPU使用率,我們需要使用到Exporter。

Prometheus周期性的從Exporter暴露的HTTP服務位址(通常是/metrics)拉取監控樣本資料。

Exporter可以是一個相對開放的概念,其可以是一個獨立運作的程式獨立于監控目标以外,也可以是直接内置在監控目标中。隻要能夠向Prometheus提供标準格式的監控樣本資料即可。

為了能夠采集到主機的運作名額如CPU, 記憶體,磁盤等資訊。我們可以使用Node Exporter。Node Exporter同樣采用Golang編寫,并且不存在任何的第三方依賴,隻需要下載下傳,解壓即可運作。可以從https://prometheus.io/download/ 擷取最新的node exporter版本的二進制包。

2. 啟動

3. 檢視

4. 設定開機自啟(所有機器)

設為開機自啟動

啟動服務

Prometheus 安裝檢視

浏覽器輸入:http://hadoop01:9090/

點選 Status,選中Targets:

Prometheus 安裝配置

prometheus、pushgateway和node exporter都是up狀态,表示安裝啟動成功:

Prometheus 安裝配置

繼續閱讀