Alert Rule Groups

Alert Rule Groups contain a list of alerts which should evaluate at the same interval. Every rule group must belong to a folder and contain at least one rule.

The easiest way to get the YAML specification for an alert rule is to use the modify export feature, introduced in Grafana 10.

The following snippet shows an example alert rule group with a single alert that fires when the temperature is below zero degrees.

---
apiVersion: grafana.integreatly.org/v1beta1
kind: Grafana
metadata:
  name: grafana
  labels:
    dashboards: "grafana"
spec:
  config:
    log:
      mode: "console"
    auth:
      disable_login_form: "false"
    security:
      admin_user: root
      admin_password: secret

    ## Starting from Grafana 11.3.0, it is possible to enforce
    ## a limit on how many alert rule versions should be stored
    ## in a database (including the current version of the rule).
    ## The default value in Grafana is "0", which means no limit.
    ## To mitigate that behaviour, the operator sets it to 5
    ## by default starting from v5.16.0
    # unified_alerting:
    #   rule_version_record_limit: "5"
---
apiVersion: grafana.integreatly.org/v1beta1
kind: GrafanaFolder
metadata:
  name: test-folder
spec:
  instanceSelector:
    matchLabels:
      dashboards: "grafana"
---
apiVersion: grafana.integreatly.org/v1beta1
kind: GrafanaAlertRuleGroup
metadata:
  name: grafanaalertrulegroup-sample
spec:
  folderRef: test-folder
  instanceSelector:
    matchLabels:
      dashboards: "grafana"
  interval: 5m
  rules:
    - condition: B
      data:
        - datasourceUid: grafanacloud-demoinfra-prom
          model:
            datasource:
              type: prometheus
              uid: grafanacloud-demoinfra-prom
            editorMode: code
            expr: weather_temp_c{}
            instant: true
            intervalMs: 1000
            legendFormat: __auto
            maxDataPoints: 43200
            range: false
            refId: A
          refId: A
          relativeTimeRange:
            from: 600
        - datasourceUid: __expr__
          model:
            conditions:
              - evaluator:
                  params:
                    - 0
                  type: lt
                operator:
                  type: and
                query:
                  params:
                    - C
                reducer:
                  params: []
                  type: last
                type: query
            datasource:
              type: __expr__
              uid: __expr__
            expression: A
            intervalMs: 1000
            maxDataPoints: 43200
            refId: B
            type: threshold
          refId: B
          relativeTimeRange:
            from: 600
      execErrState: Error
      for: 5m0s
      noDataState: NoData
      title: Temperature below zero
      uid: 4843de5c-4f8a-4af0-9509-23526a04faf8