Alerting Reference¶
This page gives starting Prometheus rules for production-preview operators. Tune windows and severities to the backup cadence, restore objectives, and maintenance schedule for the deployment.
Use two direct probes:
- Scrape the native metrics listener configured by
RS3_METRICS_BIND. - Probe unauthenticated
GET /healthzon the S3 listener.
For restore-freshness alerts, also scrape authenticated GET /admin/status
with a trusted exporter and emit the derived admin metrics named in
Metrics.
Example Rules¶
This example assumes backups should advance the accepted v2 chain at least
once per hour. Rs3AcceptedCheckpointStale therefore fires after the newest
accepted checkpoint is more than two hours old.
groups:
- name: rs3.preview
rules:
- alert: Rs3AcceptedCheckpointStale
expr: rs3_admin_v2_last_anchored_commit_age_seconds > 7200
for: 15m
labels:
severity: warning
annotations:
summary: rs3 accepted checkpoint is stale
description: >-
The accepted v2 chain head is older than 2x the expected backup
cadence. Check client backup jobs, commit publishing, and anchor
availability before trusting newer unanchored backend objects.
- alert: Rs3AdminStatusUnavailable
expr: rs3_admin_status_up == 0
for: 5m
labels:
severity: warning
annotations:
summary: rs3 admin status is unavailable
description: >-
The admin-status exporter cannot verify restore and maintenance
facts. Fix this before relying on freshness or anchor-present
alerts.
- alert: Rs3CommitPublishFailures
expr: increase(rs3_repository_v2_commit_batch_publishes_total{result="error"}[15m]) > 0
for: 5m
labels:
severity: warning
annotations:
summary: rs3 commit publish failures detected
description: >-
One or more coordinated v2 write batches failed before acceptance.
Inspect path-redacted repository logs and backend health; clients
may see write failures until publishing recovers.
- alert: Rs3CommitCoordinatorPoisoned
expr: rs3_repository_v2_commit_coordinator_poisoned == 1
for: 1m
labels:
severity: critical
annotations:
summary: rs3 commit coordinator is poisoned
description: >-
The coordinator failed to roll back an unaccepted batch and is
refusing new writes. Keep the gateway fail-closed and perform
operator recovery from the accepted anchor.
- alert: Rs3PossibleAnchorAdvanceFailures
expr: increase(rs3_repository_v2_commit_batch_publish_failures_total{stage="publish"}[15m]) > 0
for: 5m
labels:
severity: warning
annotations:
summary: rs3 commit publish or anchor advance failed
description: >-
The native publish-failure counter includes external anchor advance
failures. Check Kubernetes Lease access, stale-anchor errors,
backend writes, and the accepted anchor before retrying recovery
actions.
- alert: Rs3GatewayMetricsScrapeDown
expr: up{job="rs3-gateway-metrics"} == 0
for: 2m
labels:
severity: critical
annotations:
summary: rs3 metrics scrape is down
description: >-
Prometheus cannot scrape the gateway metrics endpoint. The process
may be down, wedged before metrics install, or unreachable from the
monitoring plane.
- alert: Rs3GatewayHealthProbeFailed
expr: probe_success{job="rs3-gateway-healthz"} == 0
for: 2m
labels:
severity: critical
annotations:
summary: rs3 health probe failed
description: >-
The unauthenticated S3 listener health probe is failing. Check pod
readiness, listener binding, service routing, and recent restarts.
Rationale¶
Rs3AcceptedCheckpointStale catches the most important operator symptom:
backup clients may still be producing objects, but the accepted anchor has not
advanced. Treat newer unanchored backend objects as untrusted until the accepted
chain advances or an operator verifies recovery material.
Rs3CommitPublishFailures and Rs3CommitCoordinatorPoisoned cover the write
path. Publish failures should recover when the backend or anchor does; a
poisoned coordinator means rollback failed too, so writes stay fail-closed until
an operator intervenes.
Rs3PossibleAnchorAdvanceFailures routes possible external-anchor failures
separately. The current native metric records them under stage="publish", so
use repository logs, admin status, and Kubernetes events to distinguish anchor
CAS failures from backend commit-object failures.
Rs3GatewayMetricsScrapeDown, Rs3GatewayHealthProbeFailed, and
Rs3AdminStatusUnavailable protect the monitoring surface itself. Freshness
and publish alerts are not useful if the scraper, health probe, or admin-status
exporter is blind.