本日、Prometheus 2.0の3番目のアルファ版をリリースしました。新しいストレージ層におけるバグ修正に加えて、いくつかの計画された破壊的変更が含まれています。
フラグの変更
まず、新しいフラグライブラリに移行しました。これは、これまでPrometheusで使用されていた単一ダッシュではなく、より一般的なダブルダッシュ--
プレフィックスをフラグに使用します。デプロイメントはそれに応じて適応する必要があります。さらに、このアルファ版ではいくつかのフラグが削除されました。Prometheus 1.0.0以降の完全なリストは以下のとおりです。
web.telemetry-path
- すべての
storage.remote.*
フラグ - すべての
storage.local.*
フラグ query.staleness-delta
alertmanager.url
レコーディングルールの変更
アラートとレコーディングルールは、Prometheusの重要な機能の1つです。しかし、それらにはいくつかの設計上の問題と欠けている機能があります。
すべてのルールが同じ間隔で実行されました。10分間隔で実行する方が適切な負荷の高いルールと、15秒間隔で実行できるルールがあります。
すべてのルールが同時に評価されました。これは実際には、Prometheusの最も古い未解決のバグです。これにはいくつかの問題があり、明白な問題は、多くのルールがある場合、すべての評価間隔で負荷が急増することです。もう1つの問題は、互いに依存するルールに古いデータが供給される可能性があることです。例えば
instance:network_bytes:rate1m = sum by(instance) (rate(network_bytes_total[1m]))
ALERT HighNetworkTraffic
IF instance:network_bytes:rate1m > 10e6
FOR 5m
ここでは、instance:network_bytes:rate1m
に対してアラートを発生させていますが、instance:network_bytes:rate1m
自体は別のルールによって生成されています。instance:network_bytes:rate1m
の現在の値が記録された後に、アラートHighNetworkTraffic
が実行された場合にのみ、期待通りの結果を得ることができます。
- ルールとアラートでは、ユーザーがさらに別のDSLを学習する必要がありました。
上記の問題を解決するために、ルールのグループ化は以前から提案されていましたが、最近になってPrometheus 2.0の一部として実装されました。この実装の一環として、ルールを広く知られているYAML形式に移行しました。これにより、ユーザーの環境における一般的なパターンに基づいてアラートルールを生成することも容易になります。
新しいフォーマットは以下のとおりです。
groups:
- name: my-group-name
interval: 30s # defaults to global interval
rules:
- record: instance:errors:rate5m
expr: rate(errors_total[5m])
- record: instance:requests:rate5m
expr: rate(requests_total[5m])
- alert: HighErrors
# Expressions remain PromQL as before and can be spread over
# multiple lines via YAML’s multi-line strings.
expr: |
sum without(instance) (instance:errors:rate5m)
/
sum without(instance) (instance:requests:rate5m)
for: 5m
labels:
severity: critical
annotations:
description: "stuff's happening with {{ $labels.service }}"
各グループのルールは順次実行され、グループごとに評価間隔を設定できます。
この変更は破壊的変更であるため、2.0リリースでリリースし、マイグレーションのためのpromtool
コマンドを追加しました: promtool update rules <filenames>
変換されたファイルには.yml
サフィックスが追加され、Prometheus設定のrule_files
句を調整する必要があります。
この新しいアルファ版をテストして、Prometheus 2.0の安定版リリースに向けて取り組むお手伝いをお願いします!バグは問題トラッカーで報告し、一般的なフィードバックはコミュニティチャネルから提供してください。