Prometheus 2.0 Alpha.3 新しいルールフォーマット
2017年6月22日筆者: Goutham Veeramachaneni
本日、Prometheus 2.0 の 3 番目のアルファ版をリリースします。新しいストレージレイヤーの様々なバグ修正に加え、いくつかの計画された破壊的変更が含まれています。
フラグの変更
まず、新しいフラグライブラリに移行しました。これにより、これまで Prometheus が使用していた単一ダッシュの代わりに、より一般的なダブルダッシュ -- プレフィックスがフラグに使用されます。デプロイメントはそれに応じて適応させる必要があります。さらに、このアルファ版ではいくつかのフラグが削除されました。Prometheus 1.0.0 以降の完全なリストは次のとおりです。
web.telemetry-path- すべての
storage.remote.*フラグ - すべての
storage.local.*フラグ query.staleness-deltaalertmanager.url
レコーディングルール(Recording Rules)の変更
アラートとレコーディングルールは 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 自体は別のルールによって生成されています。HighNetworkTraffic アラートが instance:network_bytes:rate1m の現在の値が記録された後に実行された場合にのみ、期待される結果を得ることができます。
- ルールとアラートは、ユーザーがさらに別の 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 の安定版リリースへの移行にご協力ください!バグは issue tracker に報告し、一般的なフィードバックは コミュニティチャンネル で提供してください。