Prometheus 入門
歡迎使用 Prometheus!Prometheus 是一個監控平臺,透過從被監控目標的 HTTP 指標端點抓取指標來收集資料。本指南將向您展示如何安裝、配置 Prometheus 並使用它監控我們的第一個資源。您將下載、安裝並執行 Prometheus。您還將下載並安裝一個匯出器,這是一種在主機和服務上公開時間序列資料的工具。我們的第一個匯出器將是 Prometheus 本身,它提供了各種主機級別的指標,例如記憶體使用情況、垃圾回收等。
下載 Prometheus
下載適用於您平臺的 Prometheus 最新版本,然後解壓。
tar xvfz prometheus-*.tar.gz
cd prometheus-*
Prometheus 伺服器是一個單獨的二進位制檔案,名為 prometheus(在 Microsoft Windows 上為 prometheus.exe)。我們可以執行該二進位制檔案並傳入 --help 標誌來檢視其選項幫助。
./prometheus --help
usage: prometheus [<flags>]
The Prometheus monitoring server
. . .
在啟動 Prometheus 之前,我們先配置它。
配置 Prometheus
Prometheus 的配置採用 YAML 格式。Prometheus 下載包中包含一個名為 prometheus.yml 的示例配置檔案,這是一個很好的入門起點。
我們已刪除示例檔案中的大部分註釋,使其更簡潔(註釋是以 # 開頭的行)。
global:
scrape_interval: 15s
evaluation_interval: 15s
rule_files:
# - "first.rules"
# - "second.rules"
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
示例配置檔案中有三個配置塊:global、rule_files 和 scrape_configs。
global 塊控制 Prometheus 伺服器的全域性配置。我們有兩個選項。第一個是 scrape_interval,它控制 Prometheus 抓取目標的頻率。您可以為單個目標覆蓋此設定。在此示例中,全域性設定是每 15 秒抓取一次。evaluation_interval 選項控制 Prometheus 評估規則的頻率。Prometheus 使用規則來建立新的時間序列並生成告警。
rule_files 塊指定了我們希望 Prometheus 伺服器載入的任何規則的位置。目前我們還沒有規則。
最後一個塊是 scrape_configs,它控制 Prometheus 監控哪些資源。由於 Prometheus 也將自身資料作為 HTTP 端點暴露,因此它可以抓取和監控自身的健康狀況。在預設配置中,有一個名為 prometheus 的作業,它抓取 Prometheus 伺服器暴露的時間序列資料。該作業包含一個靜態配置的目標,即埠 9090 上的 localhost。Prometheus 期望在目標上的 /metrics 路徑下提供指標。因此,這個預設作業透過 URL https://:9090/metrics 進行抓取。
返回的時間序列資料將詳細描述 Prometheus 伺服器的狀態和效能。
有關配置選項的完整說明,請參閱配置文件。
啟動 Prometheus
要使用我們新建立的配置檔案啟動 Prometheus,請進入包含 Prometheus 二進位制檔案的目錄並執行
./prometheus --config.file=prometheus.yml
Prometheus 應該會啟動。您還應該能夠訪問其自身的狀態頁面,地址為 https://:9090 。給它大約 30 秒時間,讓它從自己的 HTTP 指標端點收集關於自身的資料。
您還可以透過訪問其自身的指標端點來驗證 Prometheus 是否正在提供關於自身的指標:https://:9090/metrics 。
使用表示式瀏覽器
讓我們嘗試檢視 Prometheus 收集到的一些關於自身的資料。要使用 Prometheus 內建的表示式瀏覽器,請導航到 https://:9090/query 並選擇“Table”選項卡。
正如您可以從 https://:9090/metrics 看到的那樣,Prometheus 暴露的關於自身的其中一個指標是 promhttp_metric_handler_requests_total(Prometheus 伺服器處理的 /metrics 請求總數)。請將此指標輸入到表示式控制檯。
promhttp_metric_handler_requests_total
這應該會返回許多不同的時間序列(以及每個序列記錄的最新值),它們都具有指標名稱 promhttp_metric_handler_requests_total,但帶有不同的標籤。這些標籤表示不同的請求狀態。
如果我們只對 HTTP 狀態碼為 200 的請求感興趣,可以使用此查詢來檢索該資訊。
promhttp_metric_handler_requests_total{code="200"}
要計算返回的時間序列數量,您可以這樣寫:
count(promhttp_metric_handler_requests_total)
有關表示式語言的更多資訊,請參閱表示式語言文件。
使用圖形介面
要繪製表示式圖形,請導航到 https://:9090/query 並使用“Graph”選項卡。
例如,輸入以下表達式以繪製在 Prometheus 自身抓取過程中,返回狀態碼為 200 的每秒 HTTP 請求速率。
rate(promhttp_metric_handler_requests_total{code="200"}[1m])
您可以嘗試調整圖形範圍引數和其他設定。
監控其他目標
僅從 Prometheus 收集指標並不能很好地展現 Prometheus 的全部功能。為了更好地瞭解 Prometheus 的用途,我們建議查閱其他匯出器的文件。使用 Node Exporter 監控 Linux 或 macOS 主機指標指南是一個很好的起點。
總結
在本指南中,您安裝了 Prometheus,配置了一個 Prometheus 例項來監控資源,並學習了在 Prometheus 表示式瀏覽器中處理時間序列資料的一些基礎知識。要繼續瞭解 Prometheus,請查閱概覽,獲取接下來要探索的一些想法。