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']

示例配置檔案中有三個配置塊:globalrule_filesscrape_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,請查閱概覽,獲取接下來要探索的一些想法。

本頁內容