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-delta
alertmanager.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の安定版リリースに向けて私たちを助けてください!バグはイシュートラッカーで報告し、一般的なフィードバックはコミュニティチャネルを通じて提供できます。