Alert Annotations
Every Kloudfuse alert rule carries a set of annotations: free-form key-value pairs attached to the rule. Kloudfuse uses some of these annotations to record how the alert was built, so that it can rebuild the query builder, draw the right visualization, and render the alert detail page correctly. You can add your own annotations alongside them to carry context such as an owning team, a ticket reference, or an escalation note.
This page lists the annotation names that Kloudfuse reserves, explains what each one carries, and describes how to add your own annotations safely.
Annotations Compared to Labels
Alert rules carry two separate key-value collections. They are not interchangeable.
- Annotations
-
Descriptive metadata about the alert. Annotations do not affect routing or grouping. Kloudfuse stores its own rendering metadata here, and your custom annotations appear in the Annotations section of the alert detail page.
- Labels
-
Identifying metadata that participates in routing, grouping, and silencing. Kloudfuse stores custom labels here, and also records the contact points selected for the alert as labels.
| Contact points and custom labels are stored as labels, not as annotations. Do not attempt to change an alert’s notification target by editing its annotations. |
Adding Custom Annotations
Add your own annotations while creating or editing any alert.
-
Open the alert for creation or editing, and scroll to the alert details section.
-
In the Custom annotations field, enter an annotation name and its value.
-
Add as many key-value pairs as you need.
-
Save the alert.
Custom annotations appear in the Annotations section of the alert detail page. Kloudfuse renders any value that contains a URL as a clickable link, which makes annotations a convenient place to store links to runbooks, dashboards, or tickets.
For a runbook link, prefer the dedicated Runbook URL field in the alert details form over a custom annotation. Kloudfuse stores it as runbook_url and surfaces it consistently across the alert views.
|
Reserved Annotation Names
Kloudfuse reserves the annotation names listed in this section. When you enter one of them in the Custom annotations field, Kloudfuse rejects the entry with the message Annotation key <name> is reserved. Please use a different key.
|
Do not reuse a reserved annotation name for your own metadata, and do not edit the value of a reserved annotation directly in Grafana. Kloudfuse parses these values when it renders an alert. A reserved annotation that holds an unexpected value can cause the alert detail page to fail to load, or cause the query builder to open with the wrong query when you edit the alert. If you need to attach your own metadata, choose a name that does not appear in the tables on this page. Prefixing your annotation names, for example |
Descriptive Annotations
These annotations hold text you supply when you create the alert. They are the annotations most likely to appear in a notification template.
| Name | Description | Example |
|---|---|---|
|
Short title of the alert. This is distinct from the rule name and the rule ID. |
|
|
Longer description of what the alert detects and why it matters. |
|
|
Link to the runbook for responders. Kloudfuse renders it as a clickable link. |
Classification Annotations
Kloudfuse reads these two annotations to decide which detail view, parameter panel, and chart to render for an alert. They are set automatically from the alert type you choose in the UI.
| Name | Description | Values |
|---|---|---|
|
Signal the alert is built on. |
|
|
Detection method the alert uses. |
|
Internal State Annotations
Kloudfuse writes these annotations to preserve state that the underlying Grafana alert rule model cannot hold. Treat their values as opaque.
| Name | Description |
|---|---|
|
JSON blob holding the complete query builder state for the alert, including queries, formulas, and filters. Kloudfuse replays this blob to reopen the query builder when you edit the alert. Without it, an alert can only be edited as a raw query. |
|
Pending period configured for the alert, preserved so that the UI can restore it. This matters in particular when the underlying Grafana |
|
Version of the Kloudfuse alert schema that created or last saved the rule. Kloudfuse uses it to apply the correct backward-compatibility handling, such as query unescaping for older log alerts. |
|
Records the part of the product that created the alert, for example an alert created from an APM view. |
|
ISO-8601 timestamp recorded when the rule was created. |
|
Set to |
|
UID of the dashboard the alert was created from, when the alert originated from a dashboard panel. |
|
ID of the dashboard panel the alert was created from. |
Grafana hides annotation names that begin with a double underscore. Kloudfuse follows the same convention for the dashboard link annotations, and displays only __value__ and __value_string__ from Grafana’s own internal set.
|
Warning Threshold Annotations
An alert configured with both a critical and a warning threshold is stored as two rules: the main rule, and a companion warning rule whose name ends with [Warning]. These annotations tie the pair together, and Kloudfuse merges them back into a single alert in the UI.
| Name | Description |
|---|---|
|
Threshold value for the warning condition. |
|
Recovery threshold value for the warning condition. |
|
JSON array of the contact points notified for the warning condition. |
|
On the companion warning rule, the UID of the main rule it belongs to. |
| Deleting or renaming the companion warning rule outside the Kloudfuse UI orphans it. The UI then shows it as a separate alert rather than as the warning threshold of its parent. |
Reserved Legacy Annotations
These names are still reserved, so that alerts created by older releases continue to render, but current releases no longer write them. Do not use them for your own metadata.
| Name | Description |
|---|---|
|
Deprecated. Formerly recorded the component an alert applied to. |
|
Deprecated. Stored the LogQL query for log alerts created when LogQL could be entered directly in the UI. The UI retains it for backward compatibility only; entering LogQL directly is no longer supported. |
|
Stored the inner PromQL expression of an RRCF alert, so that the expression could be restored for editing. |
|
Set on preinstalled alerts only, with a value such as |
|
Reserved for internal use. |
|
Superseded by |
|
Recorded the notification policy group an alert belonged to. Notification policy grouping has been retired, and Kloudfuse strips this annotation on save, so that restoring an older version of a rule cannot re-enroll it. |
Reserved Label Names
Kloudfuse also reserves two label names, which are excluded from the Custom labels field and stripped when an alert is saved:
-
kfuse_policy -
kfuse_policy_group
Both belong to the retired notification policy subtree. They are recognized only so that alerts created by older releases can be cleaned up.
Editing Alerts Outside Kloudfuse
Kloudfuse alerts are backed by Grafana alert rules, so it is technically possible to edit a rule’s annotations through Grafana directly. Avoid it.
-
Adding an annotation whose name collides with a reserved name can break the Kloudfuse alert detail page for that alert.
-
Changing the value of
ruleType,alertType, orextraDatacauses Kloudfuse to render the wrong view for the alert, or to fail to open the query builder when you edit it. -
Removing
parentRuleUidfrom a warning rule detaches it from its parent alert.
Make all annotation changes through the Kloudfuse alert creation and editing screens, which validate reserved names before saving.
Best Practices
-
Use
summaryanddescriptionfor text that responders read first, and reserve custom annotations for structured metadata such as an owning team or a ticket ID. -
Use the Runbook URL field for the runbook rather than inventing your own link annotation.
-
Keep annotation values short. Long values are stored on every alert instance and are carried into every notification.
-
Put anything that must affect routing, grouping, or silencing into labels, not annotations.
-
Choose distinctive custom annotation names to reduce the chance of colliding with a name that a future Kloudfuse release reserves.