根據(jù)我們的穩(wěn)定承諾实蔽,Prometheus 2.0版本包含許多向后不兼容的更改。 本文檔提供了從Prometheus 1.8遷移到Prometheus 2.0的指導(dǎo)谨读。
一局装、標(biāo)志
Prometheus命令行標(biāo)志的格式已更改。現(xiàn)在所有標(biāo)志都使用雙破折號而不是單個破折號劳殖。公共標(biāo)志(--config.file
铐尚, --web.listen-address
和--web.external-url
)仍然相同,但除此之外哆姻,幾乎所有與存儲相關(guān)的標(biāo)志都已被刪除宣增。
一些值得注意的標(biāo)志已刪除:
-alertmanager.url
在Prometheus 2.0中,已刪除用于配置靜態(tài)Alertmanager URL的命令行標(biāo)志∶В現(xiàn)在必須通過服務(wù)發(fā)現(xiàn)來發(fā)現(xiàn)Alertmanager爹脾,請參閱Alertmanager服務(wù)發(fā)現(xiàn)。-log.format
在Prometheus 2.0中箕昭,日志只能流式傳輸?shù)綐?biāo)準(zhǔn)錯誤灵妨。-query.staleness-delta
已重命名為--query.lookback-delta
; Prometheus 2.0引入了一種處理陳舊性的新機(jī)制,請參見陳舊性落竹。-storage.local.*
Prometheus 2.0引入了一個新的存儲引擎泌霍,因此刪除了與舊引擎相關(guān)的所有標(biāo)志。有關(guān)新引擎的信息述召,請參閱存儲朱转。-storage.remote.*
Prometheus 2.0刪除了已經(jīng)棄用的遠(yuǎn)程存儲標(biāo)志,如果提供它們將無法啟動积暖。要寫入InfluxDB肋拔,Graphite或OpenTSDB,請使用相關(guān)的存儲適配器呀酸。
二凉蜂、Alertmanager服務(wù)發(fā)現(xiàn)
在Prometheus 1.4中引入了Alertmanager服務(wù)發(fā)現(xiàn),允許Prometheus使用與刮擦目標(biāo)相同的機(jī)制動態(tài)發(fā)現(xiàn)Alertmanager復(fù)制品。 在Prometheus 2.0中窿吩,已刪除靜態(tài)Alertmanager配置的命令行標(biāo)志茎杂,因此以下命令行標(biāo)志:
./prometheus -alertmanager.url=http://alertmanager:9093/
將在prometheus.yml
配置文件中替換為以下內(nèi)容:
alerting:
alertmanagers:
- static_configs:
- targets:
- alertmanager:9093
您還可以在Alertmanager配置中使用所有常用的Prometheus服務(wù)發(fā)現(xiàn)集成和重新標(biāo)記。 此代碼段指示Prometheus使用name: alertmanger
:alertmanager和非空端口在default
命名空間中搜索Kubernetes pod纫雁。
alerting:
alertmanagers:
- kubernetes_sd_configs:
- role: pod
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
relabel_configs:
- source_labels: [__meta_kubernetes_pod_label_name]
regex: alertmanager
action: keep
- source_labels: [__meta_kubernetes_namespace]
regex: default
action: keep
- source_labels: [__meta_kubernetes_pod_container_port_number]
regex:
action: drop
三煌往、記錄規(guī)則和報警
配置警報和錄制規(guī)則的格式已更改為YAML。 舊格式的錄制規(guī)則和警報示例:
job:request_duration_seconds:histogram_quantile99 =
histogram_quantile(0.99, sum(rate(request_duration_seconds_bucket[1m])) by (le, job))
ALERT FrontendRequestLatency
IF job:request_duration_seconds:histogram_quantile99{job="frontend"} > 0.1
FOR 5m
ANNOTATIONS {
summary = "High frontend request latency",
}
看起來像這樣:
groups:
- name: example.rules
rules:
- record: job:request_duration_seconds:histogram_quantile99
expr: histogram_quantile(0.99, sum(rate(request_duration_seconds_bucket[1m]))
BY (le, job))
- alert: FrontendRequestLatency
expr: job:request_duration_seconds:histogram_quantile99{job="frontend"} > 0.1
for: 5m
annotations:
summary: High frontend request latency
為了幫助進(jìn)行更改轧邪,promtool
工具具有自動執(zhí)行規(guī)則轉(zhuǎn)換的模式刽脖。 給定.rules
文件,它將以新格式輸出.rules.yml
文件忌愚。 例如:
$ promtool update rules example.rules
請注意曲管,您需要使用2.0中的promtool,而不是1.8硕糊。
四院水、存儲
Prometheus 2.0中的數(shù)據(jù)格式已完全改變,并且不向后兼容1.8简十。 為了保持對歷史監(jiān)控數(shù)據(jù)的訪問檬某,我們建議您運(yùn)行至少與Prometheus 2.0實例并行運(yùn)行至少版本1.8.1的非刮擦Prometheus實例,并讓新服務(wù)器通過遠(yuǎn)程讀取協(xié)議從舊服務(wù)器讀取現(xiàn)有數(shù)據(jù)螟蝙。
您的Prometheus 1.8實例應(yīng)該使用以下標(biāo)志和僅包含external_labels
設(shè)置(如果有)的配置文件啟動:
$ ./prometheus-1.8.1.linux-amd64/prometheus -web.listen-address ":9094" -config.file old.yml
然后可以使用以下標(biāo)志啟動Prometheus 2.0(在同一臺機(jī)器上):
$ ./prometheus-2.0.0.linux-amd64/prometheus --config.file prometheus.yml
除了完整的現(xiàn)有配置之外恢恼,prometheus.yml還包含哪些節(jié):
remote_read:
- url: "http://localhost:9094/api/v1/read"
五、PromQL
從PromQL中刪除了以下功能:
-
drop_common_labels
函數(shù) - 應(yīng)該使用不使用聚合修飾符胰默。 -
keep_common
聚合修飾符 - 應(yīng)該使用修飾符厅瞎。 -
count_scalar
函數(shù) -absent()
或在操作中正確傳播標(biāo)簽可以更好地處理用例。
有關(guān)詳細(xì)信息初坠,請參閱issue#3060。
六彭雾、雜項
6.1 普羅米修斯非root用戶
Prometheus Docker鏡像現(xiàn)在可以作為非root用戶運(yùn)行Prometheus碟刺。 如果您希望Prometheus UI / API偵聽低端口號(例如,端口80)薯酝,則需要覆蓋它半沽。 對于Kubernetes,您將使用以下YAML:
apiVersion: v1
kind: Pod
metadata:
name: security-context-demo-2
spec:
securityContext:
runAsUser: 0
...
有關(guān)更多詳細(xì)信息吴菠,請參閱為Pod或容器配置安全上下文者填。
如果您使用的是Docker,則會使用以下代碼段:
docker run -u root -p 80:80 prom/prometheus:v2.0.0-rc.2 --web.listen-address :80
6.2 普羅米修斯生命周期
如果您使用Prometheus /-/reload
加載HTTP端點在更改時自動重新加載Prometheus配置做葵,則出于安全原因占哟,默認(rèn)情況下會禁用這些端點,這是Prometheus 2.0中的。 要啟用它們榨乎,請設(shè)置--web.enable-lifecycle
標(biāo)志怎燥。
七、鏈接
Prometheus官網(wǎng)地址:https://prometheus.io/
我的Github:https://github.com/Alrights/prometheus