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/
广告
将在 10 秒后关闭
bannerAds