Prometheus Rule Builder
DevOps & SRE Telemetry Automation

Prometheus Alerting- & Recording-Rule-Generator (PromQL) Entwicklerhandbuch

Erstellen und validieren Sie PromQL-Alerting-Regeln, Recording-Regeln, Schwellenwerte, Labels und Runbook-Annotationen visuell.

Prometheus 2.x • K8s Operator CRD • Promtool
Vorlagen:
Regelkonfiguration & PromQL
Interactive PromQL Builder Assistant
Label Matchers (e.g. {mode="idle"}):
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85Live Assistant
Tier: Range Rate Window
Wait before firing
Prometheus 2.42+ anti-flapping
Warning (P2)
:
:
:
# Prometheus Alerting & Recording Rules Specification
# Generated by ToolsAA (100% Client-Side Engine)
groups:
  - name: infrastructure_node_alerts
    interval: 30s
    rules:
      - alert: HostHighCpuLoad
        expr: 100 - (avg by (instance, job) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85
        for: 5m
        keep_firing_for: 2m
        labels:
          severity: warning
          tier: "infra"
          team: "sre-platform"
        annotations:
          summary: "Host CPU utilization exceeds 85% on {{ $labels.instance }}"
          description: "Node {{ $labels.instance }} (job: {{ $labels.job }}) has had CPU utilization above 85% for 5m. Current load is {{ $value | printf \"%.2f\" }}%."
          runbook_url: "https://runbooks.prometheus-operator.dev/runbooks/general/cpu-high-load/"
          dashboard_url: "https://grafana.internal.net/d/node-exporter-full?var-instance={{ $labels.instance }}"
          action_required: "Investigate noisy-neighbor processes via htop or check autoscaling capacity."
Regel-Architekturalert
HostHighCpuLoad

Group: infrastructure_node_alerts | For: 5m

PromQL-AnalyseValid
Rate Counter

Range: Windowed | Annotations: 3 vars

Tooling-Kompatibilität100% Native
Prometheus 2.x & K8s

kube-prometheus-stack • Alertmanager • promtool

PromQL-AST & Ausdrucks-Synthese

Erstellen Sie visuell robuste PromQL-Ausdrücke mit Metrik-Selektoren, Zeitfenstern, Aggregationsfunktionen und Vergleichsschwellenwerten.

100% Browser-Datenschutz

Keine Serverkommunikation oder Telemetrie. Ihre internen Metriknamen, Cluster-Topologien und Runbook-URLs verbleiben sicher in Ihrem Browser.

Promtool & Operator Nativ

Erzeugt standardkonforme Prometheus 2.x Regeldateien, kube-prometheus-stack PrometheusRule-CRDs sowie promtool Unit-Test-Spezifikationen.

Technische Referenz & Architektur-Leitfaden

Prometheus Alerting- & Recording-Rule-Generator (PromQL) Entwicklerhandbuch — Referenz-Leitfaden

Erstellen und validieren Sie PromQL-Alerting-Regeln, Recording-Regeln, Schwellenwerte, Labels und Runbook-Annotationen visuell.

Wichtige Parameter & Steuerelemente

Regeltyp & Bezeichnerstring (alert: / record:)

Gibt an, ob der YAML-Block eine bei Schwellenwertverletzung auslösende Alerting-Regel (`alert: Name`) oder eine vorberechnete Recording-Regel (`record: metric:name`) definiert.

Standard: HighCpuUsage
PromQL-Ausdruck (`expr`)string (PromQL-Syntax)

Die Metrikabfrage, die in jedem Evaluierungsintervall ausgewertet wird, um Alarme auszulösen oder eine aggregierte Zeitreihe aufzuzeichnen.

Standard: 100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85
Wartezeit (`for`)Dauer-String (z. B. 5m, 10m, 1h)

Zeitspanne, die eine Bedingung kontinuierlich erfüllt sein muss, bevor der Status von `Pending` zu `Firing` wechselt, um Fehlalarme durch kurze Spitzen zu verhindern.

Standard: 5m
Labels (`labels`)Key-Value-Map

Metadaten-Schlüssel-Wert-Paare, die für das Alertmanager-Routing, die Gruppierung von Benachrichtigungen, Stummschaltungen und Schweregrade verwendet werden.

Standard: severity: warning, team: sre
Annotationen (`annotations`)Key-Value-Map (unterstützt Go-Templates)

Für Menschen lesbare Diagnoseinformationen wie Zusammenfassung, Beschreibung und Runbook-URLs mit Unterstützung für Variablen wie `{{ $labels.instance }}` und `{{ $value }}`.

Standard: summary: "High CPU load on {{ $labels.instance }}"

Profi-Tipps & Best Practices

Rechenintensive Abfragen mit Recording-Regeln vorab aggregieren

Berechnen Sie aufwendige Raten über lange Zeitfenster (z. B. `rate(http_requests_total[1h])`) vorab mit Recording-Regeln im Format `level:metric:operations`, um die CPU- und Speicherlast bei Dashboard-Aufrufen und Alarmauswertungen drastisch zu senken.

Numerische Werte in Annotationen mit Go-Template-Filtern formatieren

Vermeiden Sie unleserliche Fließkommazahlen wie 0.85231999999 in Benachrichtigungen. Nutzen Sie Template-Filter wie `{{ $value | humanizePercentage }}` oder `{{ $value | printf "%.2f" }}` für klare, aussagekräftige Alarme.

Alarm-Flapping durch angepasste `for`-Dauern verhindern

Wählen Sie für flüchtige Systemmetriken (CPU, I/O-Spitzen, Garbage Collection) eine `for`-Dauer von 5 bis 15 Minuten, während Sie für synthetische Uptime-Prüfungen (wie Blackbox-Exporter `probe_success == 0`) kurze Intervalle von 1 Minute nutzen.

Regelvalidierung mit `promtool` in CI/CD automatisieren

Führen Sie vor jedem Produktiv-Deployment `promtool check rules rules.yml` in Ihrer Pipeline aus, um YAML-Syntaxfehler, ungültige PromQL-Ausdrücke und fehlende Template-Variablen frühzeitig abzufangen.

Häufige Fallstricke & Fehlerbehebung

Alarm verharrt dauerhaft im Status `Pending` und wechselt nie zu `Firing`

Überprüfen Sie, ob der Metrikwert während des Auswertungsfensters kurzzeitig unter den Schwellenwert fällt. Fällt die Bedingung auch nur in einem einzigen Zyklus auf false zurück, wird der Wartezeitzähler auf null zurückgesetzt. Prüfen Sie zudem, ob `evaluation_interval` kleiner als die `for`-Dauer ist.

Rendering des Alarms scheitert mit "template: rule: function not defined"

Prometheus-Annotationen unterstützen nur bestimmte integrierte Go-Template-Funktionen (wie `humanize`, `humanize1024`, `humanizeDuration`, `humanizePercentage`, `title`, `toUpper`, `toLower`). Entfernen Sie benutzerdefinierte Funktionen und stellen Sie sicher, dass Variablen über `$labels.key` oder `$value` angesprochen werden.

Kein Alarm wird ausgelöst, wenn ein überwachter Dienst oder Knoten vollständig abstürzt

Standard-Abfragen wie `http_requests_total > 100` liefern einen leeren Vektor zurück, wenn ein Target keine Metriken mehr sendet. Nutzen Sie zur Erkennung von Totalausfällen dedizierte Regeln mit `absent(up{job="api"}) == 1` oder prüfen Sie direkt auf `up{job="api"} == 0`.

Häufig gestellte Fragen (FAQ)

Was ist der Hauptunterschied zwischen einer Alerting-Regel und einer Recording-Regel?▼

Eine Alerting-Regel prüft einen PromQL-Ausdruck und sendet Benachrichtigungen an den Alertmanager, wenn die Bedingung über die `for`-Dauer anhält. Eine Recording-Regel berechnet regelmäßig rechenintensive PromQL-Abfragen vor und speichert das Ergebnis als neue Zeitreihe in der TSDB.

Wie interagieren regeldefinierte Labels mit Labels aus der Metrik?▼

Labels aus dem `labels`-Block der Regel werden mit den Labels der abgefragten Metrik zusammengeführt. Bei Namenskonflikten überschreiben die in der Regel explizit definierten Labels die ursprünglichen Metrik-Labels.

Können PromQL-Subqueries innerhalb von Alerting-Regeln verwendet werden?▼

Ja, Ausdrücke wie `rate(http_requests_total[5m])[30m:1m]` sind syntaktisch erlaubt, verursachen jedoch eine hohe Auswertungslatenz und CPU-Last. Es wird dringend empfohlen, innere Ratenberechnungen zunächst über eine Recording-Regel vorzuberechnen.

Wie werden automatisierte Unit-Tests für Prometheus-Regeln erstellt?▼

Verwenden Sie `promtool test rules test.yml`. Dort können Sie Mock-Zeitreihendaten und Zeitstempel definieren und automatisiert prüfen, ob ein Alarm zu bestimmten Zeitpunkten im Status `pending` oder `firing` ist.

Welche Konvention wird für die Benennung von Rule-Groups empfohlen?▼

Gruppieren Sie Regeln nach Dienst, Team oder Fehlerdomäne (z. B. `groups: - name: node_exporter_alerts`). Bei Bedarf können pro Gruppe individuelle Auswertungsintervalle (`interval`) festgelegt werden.

Verwandte Werkzeuge & Dienstprogramme

Alle Werkzeuge →
GraphQL SDL zu TypeScript Resolver-Typen Generator Entwicklerhandbuchdeveloper

Generieren Sie typsichere TypeScript-Resolver-Interfaces, Query-/Mutation-Argumente und Parent-Kontexttypen aus GraphQL SDL.

Werkzeug öffnen→
cURL zu C# Konverter (.NET HttpClient, RestSharp & Flurl) Entwickler-Leitfadendeveloper

Konvertieren Sie cURL-Befehlszeilenanforderungen in idiomatischen C#-Code mit .NET HttpClient, RestSharp oder Flurl.Http unter Berücksichtigung von asynchronen Best Practices und Connection Pooling.

Werkzeug öffnen→
cURL-zu-Java-Konverter Entwicklerhandbuch (Java 11+ HttpClient, OkHttp & Spring WebClient)developer

Konvertieren Sie cURL-Befehle in produktionsreife Java-HTTP-Anfragen mit nativem java.net.http.HttpClient, OkHttp3 oder Spring WebClient.

Werkzeug öffnen→
JSON zu XML-Schema (XSD) Definition Generator Entwickler-Leitfadendeveloper

Inferenz von XML-Schema-Definitionen (XSD), komplexen Typstrukturen, Attributen und minOccurs/maxOccurs-Kardinalitätsregeln aus JSON-Beispielen.

Werkzeug öffnen→
Interaktiver .gitignore-Dateigenerator (Node, Python, Go, Rust, Java) Entwicklerhandbuchdeveloper

Erstellen Sie umfassende .gitignore-Vorlagen durch die Kombination von Regeln für Betriebssysteme, IDEs und über 50 Programmiersprachen.

Werkzeug öffnen→
Crontab-Syntax & Quartz Zeitplan-Ausdrücke Cheat Sheetdeveloper

Vollständige Referenz für POSIX-Crontab (5 Felder) und Quartz-Formate (6 Felder). Makros, Ausführungsintervalle und Best Practices zur Vermeidung von Überlappungen.

Werkzeug öffnen→