2023-10-05 12:43:28 +02:00
|
|
|
---
|
|
|
|
sort: 10
|
|
|
|
weight: 10
|
|
|
|
title: VMRule
|
|
|
|
menu:
|
|
|
|
docs:
|
|
|
|
parent: "operator-custom-resources"
|
|
|
|
weight: 10
|
|
|
|
---
|
|
|
|
|
2023-10-02 14:50:08 +02:00
|
|
|
# VMRule
|
|
|
|
|
|
|
|
`VMRule` represents [alerting](https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/)
|
|
|
|
or [recording](https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/) rules
|
|
|
|
for [VMAlert](./vmalert.md) instances.
|
|
|
|
|
|
|
|
The `VMRule` CRD declaratively defines a desired Prometheus rule to be consumed by one or more VMAlert instances.
|
|
|
|
|
|
|
|
`VMRule` object generates [VMAlert](./vmalert.md)
|
|
|
|
with ruleset defined at `VMRule` spec.
|
|
|
|
|
|
|
|
Alerts and recording rules can be saved and applied as YAML files, and dynamically loaded without requiring any restart.
|
|
|
|
|
|
|
|
See more details about rule configuration in [VMAlert docs](https://docs.victoriametrics.com/vmalert.html#quickstart).
|
|
|
|
|
|
|
|
## Specification
|
|
|
|
|
|
|
|
You can see the full actual specification of the `VMRule` resource in
|
|
|
|
the **[API docs -> VMRule](../api.md#vmrule)**.
|
|
|
|
|
|
|
|
Also, you can check out the [examples](#examples) section.
|
|
|
|
|
|
|
|
## Enterprise features
|
|
|
|
|
|
|
|
Custom resource `VMRule` supports feature [Multitenancy](https://docs.victoriametrics.com/vmalert.html#multitenancy)
|
|
|
|
from [VictoriaMetrics Enterprise](https://docs.victoriametrics.com/enterprise.html#victoriametrics-enterprise).
|
|
|
|
|
|
|
|
### Multitenancy
|
|
|
|
|
|
|
|
For using [Multitenancy](https://docs.victoriametrics.com/vmalert.html#multitenancy) in `VMRule`
|
|
|
|
you need to **[enable VMAlert Enterprise](./vmalert.md#enterprise-features)**.
|
|
|
|
|
|
|
|
After that you can add `tenant` field for groups in `VMRule`:
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
apiVersion: operator.victoriametrics.com/v1beta1
|
|
|
|
kind: VMRule
|
|
|
|
metadata:
|
|
|
|
name: vmrule-ent-example
|
|
|
|
spec:
|
|
|
|
groups:
|
|
|
|
- name: vmalert-1
|
|
|
|
rules:
|
|
|
|
# using enterprise features: Multitenancy
|
|
|
|
# more details about multitenancy you can read on https://docs.victoriametrics.com/vmalert.html#multitenancy
|
|
|
|
- tenant: 1
|
|
|
|
alert: vmalert config reload error
|
|
|
|
expr: delta(vmalert_config_last_reload_errors_total[5m]) > 0
|
|
|
|
for: 10s
|
|
|
|
labels:
|
|
|
|
severity: major
|
|
|
|
job: "{{ $labels.job }}"
|
|
|
|
annotations:
|
|
|
|
value: "{{ $value }}"
|
|
|
|
description: 'error reloading vmalert config, reload count for 5 min {{ $value }}'
|
|
|
|
```
|
|
|
|
|
|
|
|
## Examples
|
|
|
|
|
|
|
|
### Alerting rule
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
apiVersion: operator.victoriametrics.com/v1beta1
|
|
|
|
kind: VMRule
|
|
|
|
metadata:
|
|
|
|
name: vmrule-alerting-example
|
|
|
|
spec:
|
|
|
|
groups:
|
|
|
|
- name: vmalert
|
|
|
|
rules:
|
|
|
|
- alert: vmalert config reload error
|
|
|
|
expr: delta(vmalert_config_last_reload_errors_total[5m]) > 0
|
|
|
|
for: 10s
|
|
|
|
labels:
|
|
|
|
severity: major
|
|
|
|
job: "{{ $labels.job }}"
|
|
|
|
annotations:
|
|
|
|
value: "{{ $value }}"
|
|
|
|
description: 'error reloading vmalert config, reload count for 5 min {{ $value }}'
|
|
|
|
```
|
|
|
|
|
|
|
|
### Recording rule
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
apiVersion: operator.victoriametrics.com/v1beta1
|
|
|
|
kind: VMRule
|
|
|
|
metadata:
|
|
|
|
name: vmrule-recording-example
|
|
|
|
spec:
|
|
|
|
groups:
|
|
|
|
- name: vmalert
|
|
|
|
interval: 1m
|
|
|
|
rules:
|
|
|
|
- alert: vmalert config reload error
|
|
|
|
expr: |-
|
|
|
|
sum by (cluster, namespace, job) (
|
|
|
|
rate(vm_http_request_errors_total[5m])
|
|
|
|
)
|
|
|
|
```
|