Prometheus監(jiān)控工具:開(kāi)源系統(tǒng)監(jiān)控與告警詳解

2024-12-27 11:32 更新

Prometheus是一個(gè)開(kāi)源的系統(tǒng)監(jiān)控和告警工具包,它由前Google工程師在2012年于SoundCloud開(kāi)始研發(fā),并于2016年加入Cloud Native Computing Foundation(CNCF)。Prometheus以其強(qiáng)大的多維數(shù)據(jù)模型、靈活的查詢語(yǔ)言PromQL、不依賴分布式存儲(chǔ)、支持通過(guò)HTTP協(xié)議拉取時(shí)間序列數(shù)據(jù)、以及通過(guò)服務(wù)發(fā)現(xiàn)或靜態(tài)配置來(lái)發(fā)現(xiàn)目標(biāo)服務(wù)對(duì)象等特點(diǎn)而受到廣泛采用。

主要組件

  • Prometheus服務(wù)器:負(fù)責(zé)抓取和存儲(chǔ)時(shí)間序列數(shù)據(jù)。
  • 客戶端庫(kù):用于在應(yīng)用程序代碼中添加監(jiān)控指標(biāo)。
  • 推送網(wǎng)關(guān):用于支持短期任務(wù)的時(shí)間序列數(shù)據(jù)推送。
  • Exporter:用于各種服務(wù)(如HAProxy、StatsD、Graphite等)的監(jiān)控?cái)?shù)據(jù)導(dǎo)出。
  • Alertmanager:用于處理告警。
  • 其他支持工具:如Grafana等,用于數(shù)據(jù)可視化。

Prometheus的架構(gòu)設(shè)計(jì)允許它直接從監(jiān)控目標(biāo)拉取監(jiān)控指標(biāo),或者通過(guò)推送網(wǎng)關(guān)間接獲取。它在本地存儲(chǔ)所有抓取到的樣本數(shù)據(jù),并可以執(zhí)行規(guī)則來(lái)聚合數(shù)據(jù)或生成告警。Prometheus適用于記錄純數(shù)字的時(shí)間序列數(shù)據(jù),適合機(jī)器監(jiān)控和高度動(dòng)態(tài)的服務(wù)導(dǎo)向架構(gòu)監(jiān)控,特別是在微服務(wù)架構(gòu)中,其對(duì)多維數(shù)據(jù)收集和查詢的支持是一個(gè)顯著優(yōu)勢(shì)。

安裝和配置步驟

  1. 下載并安裝Prometheus服務(wù)器及其組件
    • 訪問(wèn)Prometheus的官方網(wǎng)站下載頁(yè)面:Prometheus Downloads
    • 選擇適合你操作系統(tǒng)的版本進(jìn)行下載。V哥下載的是壓縮包格式(.tar``.gz)。

  1. 解壓下載的文件
    • 解壓壓縮包。比如我是在Linux上,可以使用以下命令:
      tar -xvzf prometheus-*.tar.gz

  1. 移動(dòng)二進(jìn)制文件到PATH中
    • 為了能夠從任何位置運(yùn)行Prometheus,我們需要將Prometheus的二進(jìn)制文件移動(dòng)到你的系統(tǒng)PATH中。例如:
      sudo mv prometheus-*/prometheus /usr/local/bin/
      sudo mv prometheus-*/promtool /usr/local/bin/

  1. 配置Prometheus
    • Prometheus的配置文件通常命名為prometheus.yml,位于Prometheus二進(jìn)制文件所在目錄的config子目錄中。
    • 編輯這個(gè)配置文件,指定數(shù)據(jù)存儲(chǔ)位置、抓取間隔以及要監(jiān)控的目標(biāo):
      
      global:
      scrape_interval: 15s

scrape_configs:

  • job_name: 'prometheus' static_configs:
    • targets: ['localhost:9090']
  • job_name: 'node' static_configs:
    • targets: ['localhost:9100']
      
      - 這個(gè)配置文件定義了兩個(gè)監(jiān)控任務(wù):一個(gè)是監(jiān)控Prometheus自身的指標(biāo)(通常用于測(cè)試),另一個(gè)是監(jiān)控節(jié)點(diǎn)指標(biāo)。

  1. 啟動(dòng)Prometheus服務(wù)器
    • 在Prometheus的安裝目錄中,運(yùn)行以下命令來(lái)啟動(dòng)Prometheus服務(wù)器:
      ./prometheus --config.file=/path/to/prometheus.yml
    • 你可以通過(guò)Web瀏覽器訪問(wèn) http://localhost:9090 來(lái)查看Prometheus的Web界面。

  1. 安裝和配置Exporters
    • Exporter是用于抓取特定服務(wù)或應(yīng)用程序指標(biāo)的代理。例如,node_exporter用于抓取系統(tǒng)級(jí)別的指標(biāo)。
    • 根據(jù)需要下載并運(yùn)行相應(yīng)的Exporter。例如,對(duì)于node_exporter,你可以在Linux上使用以下命令啟動(dòng)它:
      ./node_exporter --web.listen-address=":9100"
    • 確保在Prometheus配置文件中添加了Exporter的監(jiān)控目標(biāo)。

  1. 安裝Alertmanager(可選)
    • Alertmanager是Prometheus的告警處理組件。
    • 從Prometheus的下載頁(yè)面下載Alertmanager,解壓并按照Prometheus的類似步驟啟動(dòng)它。
    • 配置Alertmanager以接收Prometheus的告警并定義如何處理這些告警。

  1. 安裝Grafana(可選)
    • Grafana是一個(gè)開(kāi)源的分析和監(jiān)控平臺(tái),可以與Prometheus集成,用于可視化監(jiān)控?cái)?shù)據(jù)。
    • 從Grafana的官方網(wǎng)站下載并安裝Grafana。
    • 在Grafana中添加Prometheus作為數(shù)據(jù)源,然后創(chuàng)建儀表板來(lái)展示監(jiān)控?cái)?shù)據(jù)。

請(qǐng)注意,這些步驟可能會(huì)根據(jù)你的操作系統(tǒng)和Prometheus的版本有所不同。始終參考最新的官方文檔以獲取最準(zhǔn)確的安裝指南。

配置Prometheus服務(wù)器

配置Prometheus服務(wù)器涉及編輯Prometheus的配置文件,通常是prometheus.yml。以下是配置Prometheus服務(wù)器的步驟,包括抓取間隔、告警配置、規(guī)則文件和數(shù)據(jù)源。

  1. 配置抓取間隔: 在prometheus.yml文件中,你可以設(shè)置全局的抓取間隔,這將應(yīng)用于所有抓取任務(wù),除非在特定任務(wù)中被覆蓋。例如:
    global:
     scrape_interval: 15s # 全局抓取間隔設(shè)置為15秒
     evaluation_interval: 15s # 規(guī)則評(píng)估間隔也設(shè)置為15秒

  1. 配置告警: 告警配置通常在Prometheus的配置文件中定義,但具體的告警規(guī)則是在單獨(dú)的規(guī)則文件中定義的。首先,你需要在prometheus.yml中指定告警管理器(Alertmanager)的配置:
    alerting:
     alertmanagers:
       - static_configs:
           - targets:
             - localhost:9093 # Alertmanager的監(jiān)聽(tīng)地址和端口

    然后,創(chuàng)建告警規(guī)則文件(例如alert.rules),并將其引用在prometheus.yml中:

    rule_files:
     - "alert.rules"

  1. 定義告警規(guī)則: 在告警規(guī)則文件alert.rules中,你可以定義具體的告警條件。例如:
    groups:
     - name: example
       rules:
         - alert: HighRequestLatency
           expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5
           for: 10m
           labels:
             severity: page
           annotations:
             summary: High request latency

  1. 配置規(guī)則文件: 除了告警規(guī)則,你還可以在規(guī)則文件中定義記錄規(guī)則(recording rules),這些規(guī)則用于在Prometheus中創(chuàng)建新的時(shí)序數(shù)據(jù),例如計(jì)算平均值或百分位數(shù)。這些規(guī)則也會(huì)在prometheus.yml中被引用。

  1. 配置數(shù)據(jù)源: 在prometheus.yml中,你需要定義數(shù)據(jù)源,即Prometheus需要抓取的目標(biāo)。這些目標(biāo)可以是Exporter、服務(wù)發(fā)現(xiàn)機(jī)制或其他Prometheus服務(wù)器。以下是一些示例配置:
    scrape_configs:
     - job_name: 'prometheus'
       static_configs:
         - targets: ['localhost:9090']
     - job_name: 'node'
       static_configs:
         - targets: ['localhost:9100'] # 假設(shè)node_exporter運(yùn)行在9100端口
     - job_name: 'app'
       dns_sd_configs:
         - names: ['app.service.consul']
           port: 80

  1. 高級(jí)配置: 你還可以配置其他高級(jí)選項(xiàng),如重寫規(guī)則(relabel_configs)、TLS配置、代理配置等。

  1. 啟動(dòng)Prometheus: 配置完成后,重新啟動(dòng)Prometheus服務(wù)器以應(yīng)用新的配置。如果你使用的是二進(jìn)制方式安裝的Prometheus,可以使用以下命令啟動(dòng):
    ./prometheus --config.file=prometheus.yml --web.enable-admin-api --web.enable-lifecycle

    --web.enable-admin-api--web.enable-lifecycle是可選的,它們?cè)试S你通過(guò)HTTP API來(lái)管理Prometheus(如停止接收數(shù)據(jù)、獲取當(dāng)前狀態(tài)等)。

  1. 驗(yàn)證配置: 啟動(dòng)Prometheus后,通過(guò)訪問(wèn)Prometheus的Web界面(通常是 http://localhost:9090)來(lái)驗(yàn)證配置是否正確。你可以在“Status” > “Targets”頁(yè)面查看抓取目標(biāo)的狀態(tài),確保所有目標(biāo)都是健康的。

請(qǐng)記得,配置文件中的路徑和端口需要根據(jù)你的實(shí)際部署環(huán)境進(jìn)行調(diào)整。此外,Prometheus的配置非常靈活,你可以根據(jù)需要進(jìn)行詳細(xì)配置。始終參考最新的Prometheus官方文檔以獲取最準(zhǔn)確的配置指導(dǎo)。

啟動(dòng)Prometheus服務(wù)器

要啟動(dòng)Prometheus服務(wù)器并確保它能夠從配置的數(shù)據(jù)源抓取數(shù)據(jù),你需要按照以下步驟操作:

  1. 準(zhǔn)備配置文件: 確保你已經(jīng)根據(jù)之前的指導(dǎo)創(chuàng)建并配置了prometheus.yml文件,以及其他可能的配置文件,如告警規(guī)則文件alert.rules。

  1. 啟動(dòng)Prometheus
    • 打開(kāi)終端或命令行界面。
    • 導(dǎo)航到包含Prometheus二進(jìn)制文件的目錄。
    • 運(yùn)行以下命令來(lái)啟動(dòng)Prometheus服務(wù)器:
      ./prometheus --config.file=/path/to/prometheus.yml
    • 確保將/path/to/prometheus.yml替換為你的配置文件的實(shí)際路徑。

  1. 檢查Prometheus狀態(tài)
    • 訪問(wèn)Prometheus的Web UI,通常是 http://localhost:9090。
    • 轉(zhuǎn)到“Status” > “Targets”頁(yè)面,查看Prometheus是否成功從配置的數(shù)據(jù)源抓取數(shù)據(jù)。健康的抓取目標(biāo)會(huì)顯示綠色的狀態(tài)指示器。

  1. 檢查日志輸出
    • 查看Prometheus的日志輸出,以確保沒(méi)有錯(cuò)誤信息。你可以在命令行界面查看啟動(dòng)Prometheus時(shí)的直接輸出,或者查看Prometheus的日志文件(如果你將日志輸出重定向到了文件)。

  1. 驗(yàn)證告警和規(guī)則
    • 如果你配置了告警和規(guī)則文件,轉(zhuǎn)到“Alerts”頁(yè)面查看是否有任何活躍的告警。
    • 轉(zhuǎn)到“Rules”頁(yè)面查看所有規(guī)則的狀態(tài),確保它們都處于“Firing”狀態(tài)。

  1. 檢查數(shù)據(jù)抓取
    • 在Prometheus的Web UI中,你可以嘗試執(zhí)行一些基本的查詢,如up,來(lái)檢查Prometheus是否能夠從目標(biāo)獲取數(shù)據(jù)。
    • 你也可以使用Prometheus的表達(dá)式瀏覽器來(lái)測(cè)試更復(fù)雜的查詢。

  1. 確保長(zhǎng)期運(yùn)行
    • 為了確保Prometheus長(zhǎng)期運(yùn)行,你可能需要將其配置為后臺(tái)服務(wù)或使用類似systemd的系統(tǒng)服務(wù)管理器來(lái)管理Prometheus進(jìn)程。

  1. 配置自動(dòng)重啟
    • 為了確保Prometheus在崩潰或重啟后自動(dòng)啟動(dòng),你應(yīng)該設(shè)置一個(gè)監(jiān)控腳本或使用系統(tǒng)服務(wù)管理器(如systemd、supervisord等)。

  1. 安全考慮
    • 如果Prometheus服務(wù)器可以從互聯(lián)網(wǎng)訪問(wèn),確保配置適當(dāng)?shù)陌踩胧?,如使用HTTPS、訪問(wèn)控制和認(rèn)證。

  1. 監(jiān)控Prometheus本身
    • 監(jiān)控Prometheus服務(wù)器本身的健康狀況也很重要。你可以使用--web.enable-admin-api標(biāo)志來(lái)啟用管理API,這允許你檢查Prometheus的狀態(tài)和性能指標(biāo)。

如果你遇到任何問(wèn)題,比如Prometheus無(wú)法從目標(biāo)抓取數(shù)據(jù),檢查以下幾點(diǎn):

  • 確保Prometheus配置文件中的抓取目標(biāo)地址和端口是正確的。
  • 確保目標(biāo)服務(wù)已經(jīng)啟動(dòng)并且正在監(jiān)聽(tīng)Prometheus配置的端口。
  • 檢查防火墻設(shè)置,確保Prometheus服務(wù)器可以訪問(wèn)目標(biāo)端口。
  • 查看Prometheus的日志輸出,尋找可能的錯(cuò)誤信息或警告。

使用Grafana連接到Prometheus服務(wù)器

Grafana是一個(gè)流行的開(kāi)源分析和監(jiān)控解決方案,它支持連接到多種數(shù)據(jù)源,包括Prometheus。以下是使用Grafana連接到Prometheus并展示監(jiān)控?cái)?shù)據(jù)的步驟:

  1. 安裝Grafana
    • 訪問(wèn)Grafana的官方網(wǎng)站下載頁(yè)面,選擇適合你操作系統(tǒng)的版本進(jìn)行下載并安裝。
    • 或者,如果你使用的是包管理器(如APT for Ubuntu或Homebrew for macOS),可以直接通過(guò)包管理器安裝Grafana。

  1. 啟動(dòng)Grafana
    • 根據(jù)你的安裝方式,啟動(dòng)Grafana。如果你使用的是Linux,可能需要使用命令:
      sudo service grafana-server start

      sudo systemctl start grafana-server

  1. 訪問(wèn)Grafana
    • 在Web瀏覽器中訪問(wèn)Grafana的Web界面,默認(rèn)地址通常是 http://localhost:3000

  1. 配置數(shù)據(jù)源
    • 在Grafana的側(cè)邊欄菜單中,點(diǎn)擊“Configuration”(齒輪圖標(biāo))> “Data Sources” > “Add data source”。
    • 選擇“Prometheus”作為數(shù)據(jù)源類型。
    • 在配置頁(yè)面,輸入你的Prometheus服務(wù)器的URL,例如 http://localhost:9090
    • 填寫其他必要的配置信息,如訪問(wèn)憑據(jù)(如果Prometheus設(shè)置了認(rèn)證)。
    • 點(diǎn)擊“Save & Test”來(lái)測(cè)試連接是否成功。

  1. 創(chuàng)建儀表盤
    • 在Grafana側(cè)邊欄菜單中,點(diǎn)擊“Create” > “Dashboard”。
    • 你可以開(kāi)始創(chuàng)建新的儀表盤或?qū)氍F(xiàn)有的JSON格式的儀表盤。

  1. 添加面板
    • 在儀表盤編輯模式下,點(diǎn)擊“Add query”或“Add panel”來(lái)添加一個(gè)新的面板。
    • 選擇你的Prometheus數(shù)據(jù)源。
    • 使用PromQL(Prometheus Query Language)編寫查詢來(lái)獲取你想要展示的數(shù)據(jù)。例如,你可以查詢up來(lái)檢查所有監(jiān)控目標(biāo)的狀態(tài),或者查詢rate(http_requests_total[5m])來(lái)獲取過(guò)去5分鐘內(nèi)HTTP請(qǐng)求的速率。

  1. 設(shè)置面板選項(xiàng)
    • 根據(jù)需要設(shè)置面板的類型(如圖表、表格、折線圖等)。
    • 調(diào)整面板的樣式和布局,包括顏色、大小、圖例等。

  1. 保存并查看面板
    • 完成面板設(shè)置后,點(diǎn)擊“Save”保存你的面板。
    • 退出編輯模式,查看面板展示的數(shù)據(jù)。

Grafana也支持基于Prometheus數(shù)據(jù)源的告警。你可以在面板設(shè)置中定義告警規(guī)則,并配置通知通道(如電子郵件、Slack等)。Grafana提供了豐富的功能,包括變量、模板、注釋等。花時(shí)間探索這些功能,以充分利用Grafana的潛力。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)