Alerting: Add support for retrieving imported Prometheus Alertmanager configurations (#106864)

This commit is contained in:
Alexander Akhmetov
2025-06-18 10:49:40 +02:00
committed by GitHub
parent 4bfd7b6d7c
commit 8c6df8b449
9 changed files with 550 additions and 151 deletions
+15 -16
View File
@@ -514,6 +514,9 @@
"notificationSettings": {
"$ref": "#/definitions/AlertRuleNotificationSettings"
},
"provenance": {
"$ref": "#/definitions/Provenance"
},
"queriedDatasourceUIDs": {
"items": {
"type": "string"
@@ -579,7 +582,8 @@
"AlertmanagerUserConfig": {
"properties": {
"alertmanager_config": {
"$ref": "#/definitions/Config"
"description": "Configuration for Alertmanager in YAML format.\nin: body",
"type": "string"
},
"template_files": {
"additionalProperties": {
@@ -1434,20 +1438,6 @@
"title": "Frames is a slice of Frame pointers.",
"type": "array"
},
"GettableAlertmanagerUserConfig": {
"properties": {
"alertmanager_config": {
"type": "string"
},
"template_files": {
"additionalProperties": {
"type": "string"
},
"type": "object"
}
},
"type": "object"
},
"GettableAlertmanagers": {
"properties": {
"data": {
@@ -3719,6 +3709,7 @@
"type": "object"
},
"Route": {
"description": "A Route is a node that contains definitions of how to handle alerts. This is modified\nfrom the upstream alertmanager in that it adds the ObjectMatchers property.",
"properties": {
"active_time_intervals": {
"items": {
@@ -3760,6 +3751,12 @@
},
"type": "array"
},
"object_matchers": {
"$ref": "#/definitions/ObjectMatchers"
},
"provenance": {
"$ref": "#/definitions/Provenance"
},
"receiver": {
"type": "string"
},
@@ -3773,7 +3770,6 @@
"type": "array"
}
},
"title": "A Route is a node that contains definitions of how to handle alerts.",
"type": "object"
},
"RouteExport": {
@@ -3869,6 +3865,9 @@
"notificationSettings": {
"$ref": "#/definitions/AlertRuleNotificationSettings"
},
"provenance": {
"$ref": "#/definitions/Provenance"
},
"query": {
"type": "string"
},
@@ -1,9 +1,7 @@
package definitions
import (
"github.com/prometheus/alertmanager/config"
"github.com/prometheus/common/model"
"gopkg.in/yaml.v3"
)
// Route for mimirtool
@@ -230,7 +228,7 @@ import (
// - application/yaml
//
// Responses:
// 200: GettableAlertmanagerUserConfig
// 200: AlertmanagerUserConfig
// 403: ForbiddenError
// Route for `mimirtool alertmanager delete`
@@ -347,33 +345,8 @@ type RouteConvertPrometheusDeleteAlertmanagerConfigParams struct {
// swagger:model
type AlertmanagerUserConfig struct {
AlertmanagerConfig config.Config `yaml:"alertmanager_config" json:"alertmanager_config"`
TemplateFiles map[string]string `yaml:"template_files" json:"template_files"`
}
func (c *AlertmanagerUserConfig) UnmarshalYAML(value *yaml.Node) error {
// mimirtool sends alertmanager_config as a string
type cortexAlertmanagerUserConfig struct {
TemplateFiles map[string]string `yaml:"template_files" json:"template_files"`
AlertmanagerConfig string `yaml:"alertmanager_config" json:"alertmanager_config"`
}
var tmp cortexAlertmanagerUserConfig
if err := value.Decode(&tmp); err != nil {
return err
}
if err := yaml.Unmarshal([]byte(tmp.AlertmanagerConfig), &c.AlertmanagerConfig); err != nil {
return err
}
c.TemplateFiles = tmp.TemplateFiles
return nil
}
// swagger:model
type GettableAlertmanagerUserConfig struct {
// Configuration for Alertmanager in YAML format.
// in: body
AlertmanagerConfig string `yaml:"alertmanager_config" json:"alertmanager_config"`
TemplateFiles map[string]string `yaml:"template_files" json:"template_files"`
}
+10 -17
View File
@@ -514,6 +514,9 @@
"notificationSettings": {
"$ref": "#/definitions/AlertRuleNotificationSettings"
},
"provenance": {
"$ref": "#/definitions/Provenance"
},
"queriedDatasourceUIDs": {
"items": {
"type": "string"
@@ -579,7 +582,8 @@
"AlertmanagerUserConfig": {
"properties": {
"alertmanager_config": {
"$ref": "#/definitions/Config"
"description": "Configuration for Alertmanager in YAML format.\nin: body",
"type": "string"
},
"template_files": {
"additionalProperties": {
@@ -1434,20 +1438,6 @@
"title": "Frames is a slice of Frame pointers.",
"type": "array"
},
"GettableAlertmanagerUserConfig": {
"properties": {
"alertmanager_config": {
"type": "string"
},
"template_files": {
"additionalProperties": {
"type": "string"
},
"type": "object"
}
},
"type": "object"
},
"GettableAlertmanagers": {
"properties": {
"data": {
@@ -3875,6 +3865,9 @@
"notificationSettings": {
"$ref": "#/definitions/AlertRuleNotificationSettings"
},
"provenance": {
"$ref": "#/definitions/Provenance"
},
"query": {
"type": "string"
},
@@ -6923,9 +6916,9 @@
],
"responses": {
"200": {
"description": "GettableAlertmanagerUserConfig",
"description": "AlertmanagerUserConfig",
"schema": {
"$ref": "#/definitions/GettableAlertmanagerUserConfig"
"$ref": "#/definitions/AlertmanagerUserConfig"
}
},
"403": {
+10 -17
View File
@@ -1381,9 +1381,9 @@
],
"responses": {
"200": {
"description": "GettableAlertmanagerUserConfig",
"description": "AlertmanagerUserConfig",
"schema": {
"$ref": "#/definitions/GettableAlertmanagerUserConfig"
"$ref": "#/definitions/AlertmanagerUserConfig"
}
},
"403": {
@@ -4812,6 +4812,9 @@
"notificationSettings": {
"$ref": "#/definitions/AlertRuleNotificationSettings"
},
"provenance": {
"$ref": "#/definitions/Provenance"
},
"queriedDatasourceUIDs": {
"type": "array",
"items": {
@@ -4868,7 +4871,8 @@
"type": "object",
"properties": {
"alertmanager_config": {
"$ref": "#/definitions/Config"
"description": "Configuration for Alertmanager in YAML format.\nin: body",
"type": "string"
},
"template_files": {
"type": "object",
@@ -5723,20 +5727,6 @@
"$ref": "#/definitions/Frame"
}
},
"GettableAlertmanagerUserConfig": {
"type": "object",
"properties": {
"alertmanager_config": {
"type": "string"
},
"template_files": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
},
"GettableAlertmanagers": {
"type": "object",
"properties": {
@@ -8172,6 +8162,9 @@
"notificationSettings": {
"$ref": "#/definitions/AlertRuleNotificationSettings"
},
"provenance": {
"$ref": "#/definitions/Provenance"
},
"query": {
"type": "string"
},