Prometheus 2.0的更改和迁移
总结了 Prometheus 2.0 的主要更改和迁移备忘录。
主要变更点
-
- ストレージ部分がリライトされてパフォーマンスが大きく向上
CPU、ディスク使用量、I/O のすべてが改善された
オプションがシンプルになり -storage.local.target-heap-size のチューニングが不要に(後述)
v1.x からデータファイルの移行はできないので注意
コードは prometheus/tsdb という独立したレポジトリで管理されている
staleness の取扱が変わった
staleness とはターゲットが消えたりして有効でなくなった time series を無視するための仕組み
1.x では直近 5 分間データがなければ time series が無効になったと判定していた
2.0 ではstaleness のマーカーが実装され timeseries が終了したことが明示的にわかるようになった
オプション、設定ファイルにいくつか変更あり
v1.x から起動オプション、設定ファイルを修正する必要あり
1. 从 x 到 2.0 的过渡
关于迁移,有一份名为PROMETHEUS 2.0迁移指南的文档进行了总结。由于配置文件在v1.x版本和2.0版本中并没有发生大的改变,因此只需进行一些部分调整即可完成迁移。以下是主要的迁移注意事项。
-
- 1.x とのデータの互換性はないのでデータ移行はできない
1.8 移行であれば scrape を止めた旧バージョンを並行して動かしておき新バージョンから remote_read で参照することは可能
アラートルール、レコーディングルールの記述が yaml 形式に変わった
promtool で自動変換可能 (後述)
https://prometheus.io/docs/prometheus/2.0/migration/#recording-rules-and-alerts
コマンドライン引数のダッシュが一つから二つに変更
例: -config.file が –config.file に
フラグライブラリが go 標準の flag から alecthomas/kingpinに変わったことに起因
下記のコマンドライン引数が削除された
-alertmanager.url: 設定ファイルで指定する
-log.format: stderr への出力だけになった。
-query.staleness-delta: –query.lookback-delta にリネームされた。
-storage.local.*: ストレージエンジンが変わったことでなくなった。–storage.tsdb.* で新しいストレージエンジンの設定を行う(後述)
-storage.remote.*: もともと deprecated だったフラグが削除された。
PromQL から下記の関数が削除された
drop_common_labels: 代わりに without を使う
keep_common: 代わりに by を使う
count_scalar: time series の存在をチェックしたい場合は absent を利用する
設定ファイルのリロード用エンドポイント /-/reload はセキュリティ上の理由でデフォルト無効になった
–web.enable-lifecycle で有効にできる
prometheus の Docker イメージが non-root で実行されるようになった
80 番のような特権ポートを使いたい場合は指定が必要
储存选项
在中国本地化语言中的翻译为:
– 替代storage.local.*选项,新增了–storage.tsdb.*选项。数据的保留期(retention)与v1版本相同,但删除了用于指定内存使用量的-storage.local.target-heap-size选项,使选项更加简单。
为什么不再需要-storage.local.target-heap-size?
在2.0版本中,不再需要通过storage.local.target-heap-size显式指定内存大小,是因为Go层面上的块数据缓存处理由自己负责的离场操作(evict)变得不再必要,而是通过使用mmap将其委托给内核处理。参考:无法部署v2.0.0-beta.0 #480的评论。
选项
$ docker run prom/prometheus:v2.0.0 -h
--storage.tsdb.path="data/"
Base path for metrics storage.
--storage.tsdb.min-block-duration=2h
Minimum duration of a data block before being
persisted.
--storage.tsdb.max-block-duration=<duration>
Maximum duration compacted blocks may span.
(Defaults to 10% of the retention period)
--storage.tsdb.retention=15d
How long to retain samples in the storage.
--storage.tsdb.no-lockfile
Do not create lockfile in data directory.
使用 promtool 将警报规则转换。
使用 promtool 可以将下面的警报规则进行转换。
$ docker run -v $PWD:/current --entrypoint /bin/promtool prom/prometheus:v2.0.0 update rules /current/general.rule
Updating /current/general.rule
转换前的规则将保存为带有名为.yml的前缀的文件名的转换结果。
# 変換前
ALERT InstanceDown
IF up == 0
FOR 5m
LABELS { severity = "page" }
ANNOTATIONS {summary = "Instance {{ $labels.instance }} down"}
# 変換後
groups:
- name: /current/general.rule
rules:
- alert: InstanceDown
expr: up == 0
for: 5m
labels:
severity: page
annotations:
summary: Instance {{ $labels.instance }} down
请参考
-
- https://prometheus.io/blog/2017/11/08/announcing-prometheus-2-0/
- https://prometheus.io/docs/prometheus/2.0/migration/