翻譯 原文鏈接
這片文章類似程序中的Hello World
及穗,將會向你展示安裝、配置和使用Prometheus绵载。我們將會在本地下載埂陆、運行Prometheus,配置Prometheus監(jiān)控自己和一些樣例應(yīng)用娃豹;然后使用收集到的數(shù)據(jù)進行查詢焚虱、規(guī)則應(yīng)用、畫圖懂版。
下載鹃栽、運行Prometheus
配置Prometheus監(jiān)控自己
啟動Prometheus
訪問Prometheus,使用畫圖功能
創(chuàng)建一些測試targets
Go客戶端庫包含一些測試樣例躯畴,這些樣例會產(chǎn)生三個服務(wù)的虛假metrics谍咆,比如:RPC延遲。使用這些樣例之前私股,請確保你已經(jīng)安裝Go,并且構(gòu)建好Go的運行環(huán)境(正確的配置GOPATH恩掷、GOROOT)倡鲸。
下載Prometheus的GO客戶端庫,并運行三個測試服務(wù):
# Fetch the client library code and compile example.
git clone https://github.com/prometheus/client_golang.git
cd client_golang/examples/random
go get -d
go build
# Start 3 example targets in separate terminals:
./random -listen-address=:8080
./random -listen-address=:8081
./random -listen-address=:8082
這樣我們就能夠通過訪問http://localhost:8080/metrics
, http://localhost:8081/metrics
, and http://localhost:8082/metrics
獲取監(jiān)控數(shù)據(jù)黄娘。
配置Prometheus監(jiān)控測試targets
我們把上述三個targes分為兩組峭状。假設(shè)8080和8080端口的服務(wù)是生產(chǎn)上的服務(wù),8082端口的服務(wù)是"金絲雀"服務(wù)逼争。我們給第一組targets打上group="production"
的標(biāo)簽优床,給第二組targets打上group="canary"
的標(biāo)簽。詳細的配置如下:
scrape_configs:
- job_name: 'example-random'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
static_configs:
- targets: ['localhost:8080', 'localhost:8081']
labels:
group: 'production'
- targets: ['localhost:8082']
labels:
group: 'canary'
我們看到通過修改prometheus.yml的scrape_configs部分來監(jiān)控測試樣例誓焦,reload Prometheus使之生效胆敞。
如此,通過訪問Prometheus可以查詢到rpc_durations_seconds
metric杂伟。
通過配置規(guī)則產(chǎn)生新的時間序列
當(dāng)查詢移层、聚合成千上百的時間序列時,需要很多的計算赫粥,結(jié)果放回比較慢观话。為了解決這個問題,使查詢更高效越平;Prometheus允許我們通過配置“記錄規(guī)則”频蛔,根據(jù)預(yù)先記錄表達式和抓取的監(jiān)控數(shù)據(jù)灵迫,產(chǎn)生新的時間序列。這個時間序列開始的時間為規(guī)則生效的時間晦溪,而不是原數(shù)據(jù)的起始時間瀑粥。
比如說我們對這個avg(rate(rpc_durations_seconds_count[5m])) by (job, service)
查詢結(jié)果感興趣(你可以在graph界面輸入上面的查詢語句,畫出相應(yīng)的圖)尼变。為了預(yù)先記錄這樣一個新的時間序列(我們可以直接查詢這個時間序列得到我們想要的結(jié)果利凑,而不用經(jīng)過復(fù)雜的聚合運算),我們創(chuàng)建一個新的文件prometheus.rules.yml嫌术,該文件包含如下規(guī)則:
groups:
- name: example
rules:
- record: job_service:rpc_durations_seconds_count:avg_rate5m
expr: avg(rate(rpc_durations_seconds_count[5m])) by (job, service)
job_service:rpc_durations_seconds_count:avg_rate5m
是新的metric name哀澈。
為了是上述規(guī)則文件生效,需要修改配置文件prometheus.yml中的全局配置的rule_files
度气,增加規(guī)則文件:
rule_files:
# - "first_rules.yml"
- 'prometheus.rules.yml'
reload Prometheus配置割按,通過畫圖界面能夠查詢到job_service:rpc_durations_seconds_count:avg_rate5m
metric。