mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Alerting: Sanitize invalid label/annotation names for external alertmanagers (#54537)
* Alerting: Sanitize invalid label/annotation names for external alertmanagers Grafana's built-in Alertmanager supports both Unicode label keys and values; however, if using an external Prometheus Alertmanager label keys must be compatible with their data model. This means label keys must only contain ASCII letters, numbers, as well as underscores and match the regex `[a-zA-Z_][a-zA-Z0-9_]*`. Any invalid characters will now be removed or replaced by the Grafana alerting engine before being sent to the external Alertmanager according to the following rules: - `Whitespace` will be removed. - `ASCII characters` will be replaced with `_`. - `All other characters` will be replaced with their lower-case hex representation. * Prefix hex replacements with `0x` * Refactor for clarity * Apply suggestions from code review Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com> Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
This commit is contained in:
@@ -23,6 +23,20 @@ This topic explains why labels are a fundamental component of alerting.
|
||||
|
||||
{{< figure src="/static/img/docs/alerting/unified/rule-edit-details-8-0.png" max-width="550px" caption="Alert details" >}}
|
||||
|
||||
# External Alertmanager Compatibility
|
||||
|
||||
Grafana's built-in Alertmanager supports both Unicode label keys and values. If you are using an external Prometheus Alertmanager, label keys must be compatible with their [data model](https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels).
|
||||
This means that label keys must only contain **ASCII letters**, **numbers**, as well as **underscores** and match the regex `[a-zA-Z_][a-zA-Z0-9_]*`.
|
||||
Any invalid characters will be removed or replaced by the Grafana alerting engine before being sent to the external Alertmanager according to the following rules:
|
||||
|
||||
- `Whitespace` will be removed.
|
||||
- `ASCII characters` will be replaced with `_`.
|
||||
- `All other characters` will be replaced with their lower-case hex representation. If this is the first character it will be prefixed with `_`.
|
||||
|
||||
Example: A label key/value pair `Alert! 🔔="🔥"` will become `Alert_0x1f514="🔥"`.
|
||||
|
||||
**Note** If multiple label keys are sanitized to the same value, the duplicates will have a short hash of the original label appended as a suffix.
|
||||
|
||||
# Grafana reserved labels
|
||||
|
||||
> **Note:** Labels prefixed with `grafana_` are reserved by Grafana for special use. If a manually configured label is added beginning with `grafana_` it may be overwritten in case of collision.
|
||||
|
||||
Reference in New Issue
Block a user