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的架構(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ì)。
.tar``.gz
)。tar -xvzf prometheus-*.tar.gz
sudo mv prometheus-*/prometheus /usr/local/bin/
sudo mv prometheus-*/promtool /usr/local/bin/
prometheus.yml
,位于Prometheus二進(jìn)制文件所在目錄的config
子目錄中。
global:
scrape_interval: 15s
scrape_configs:
- 這個(gè)配置文件定義了兩個(gè)監(jiān)控任務(wù):一個(gè)是監(jiān)控Prometheus自身的指標(biāo)(通常用于測(cè)試),另一個(gè)是監(jiān)控節(jié)點(diǎn)指標(biāo)。
./prometheus --config.file=/path/to/prometheus.yml
node_exporter
用于抓取系統(tǒng)級(jí)別的指標(biāo)。node_exporter
,你可以在Linux上使用以下命令啟動(dòng)它:
./node_exporter --web.listen-address=":9100"
請(qǐng)注意,這些步驟可能會(huì)根據(jù)你的操作系統(tǒng)和Prometheus的版本有所不同。始終參考最新的官方文檔以獲取最準(zhǔn)確的安裝指南。
配置Prometheus服務(wù)器涉及編輯Prometheus的配置文件,通常是prometheus.yml
。以下是配置Prometheus服務(wù)器的步驟,包括抓取間隔、告警配置、規(guī)則文件和數(shù)據(jù)源。
prometheus.yml
文件中,你可以設(shè)置全局的抓取間隔,這將應(yīng)用于所有抓取任務(wù),除非在特定任務(wù)中被覆蓋。例如:
global:
scrape_interval: 15s # 全局抓取間隔設(shè)置為15秒
evaluation_interval: 15s # 規(guī)則評(píng)估間隔也設(shè)置為15秒
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"
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
prometheus.yml
中被引用。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
relabel_configs
)、TLS配置、代理配置等。./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)等)。
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ù)器并確保它能夠從配置的數(shù)據(jù)源抓取數(shù)據(jù),你需要按照以下步驟操作:
prometheus.yml
文件,以及其他可能的配置文件,如告警規(guī)則文件alert.rules
。./prometheus --config.file=/path/to/prometheus.yml
/path/to/prometheus.yml
替換為你的配置文件的實(shí)際路徑。http://localhost:9090
。Status
” > “Targets
”頁(yè)面,查看Prometheus是否成功從配置的數(shù)據(jù)源抓取數(shù)據(jù)。健康的抓取目標(biāo)會(huì)顯示綠色的狀態(tài)指示器。up
,來(lái)檢查Prometheus是否能夠從目標(biāo)獲取數(shù)據(jù)。--web.enable-admin-api
標(biāo)志來(lái)啟用管理API,這允許你檢查Prometheus的狀態(tài)和性能指標(biāo)。如果你遇到任何問(wèn)題,比如Prometheus無(wú)法從目標(biāo)抓取數(shù)據(jù),檢查以下幾點(diǎn):
Grafana是一個(gè)流行的開(kāi)源分析和監(jiān)控解決方案,它支持連接到多種數(shù)據(jù)源,包括Prometheus。以下是使用Grafana連接到Prometheus并展示監(jiān)控?cái)?shù)據(jù)的步驟:
sudo service grafana-server start
或
sudo systemctl start grafana-server
http://localhost:3000
。http://localhost:9090
。up
來(lái)檢查所有監(jiān)控目標(biāo)的狀態(tài),或者查詢rate(http_requests_total[5m])
來(lái)獲取過(guò)去5分鐘內(nèi)HTTP請(qǐng)求的速率。Grafana也支持基于Prometheus數(shù)據(jù)源的告警。你可以在面板設(shè)置中定義告警規(guī)則,并配置通知通道(如電子郵件、Slack等)。Grafana提供了豐富的功能,包括變量、模板、注釋等。花時(shí)間探索這些功能,以充分利用Grafana的潛力。
更多建議: