mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Alerting: Add metric to check for default AM configurations (#80225)
* Alerting: Add metric to check for default AM configurations * Use a gauge for the config hash * don't go out of bounds when converting uint64 to float64 * expose metric for config hash * update metrics after applying config
This commit is contained in:
@@ -24,6 +24,7 @@ func NewAlertmanagerMetrics(r prometheus.Registerer) *Alertmanager {
|
||||
}
|
||||
|
||||
type AlertmanagerConfigMetrics struct {
|
||||
ConfigHash *prometheus.GaugeVec
|
||||
Matchers prometheus.Gauge
|
||||
MatchRE prometheus.Gauge
|
||||
Match prometheus.Gauge
|
||||
@@ -32,6 +33,10 @@ type AlertmanagerConfigMetrics struct {
|
||||
|
||||
func NewAlertmanagerConfigMetrics(r prometheus.Registerer) *AlertmanagerConfigMetrics {
|
||||
m := &AlertmanagerConfigMetrics{
|
||||
ConfigHash: prometheus.NewGaugeVec(prometheus.GaugeOpts{
|
||||
Name: "alertmanager_config_hash",
|
||||
Help: "The hash of the Alertmanager configuration.",
|
||||
}, []string{"org"}),
|
||||
Matchers: prometheus.NewGauge(prometheus.GaugeOpts{
|
||||
Name: "alertmanager_config_matchers",
|
||||
Help: "The total number of matchers",
|
||||
@@ -50,7 +55,7 @@ func NewAlertmanagerConfigMetrics(r prometheus.Registerer) *AlertmanagerConfigMe
|
||||
}),
|
||||
}
|
||||
if r != nil {
|
||||
r.MustRegister(m.Matchers, m.MatchRE, m.Match, m.ObjectMatchers)
|
||||
r.MustRegister(m.ConfigHash, m.Matchers, m.MatchRE, m.Match, m.ObjectMatchers)
|
||||
}
|
||||
return m
|
||||
}
|
||||
|
||||
@@ -117,6 +117,8 @@ type AlertmanagerAggregatedMetrics struct {
|
||||
matchRE *prometheus.Desc
|
||||
match *prometheus.Desc
|
||||
objectMatchers *prometheus.Desc
|
||||
|
||||
configHash *prometheus.Desc
|
||||
}
|
||||
|
||||
func NewAlertmanagerAggregatedMetrics(registries *metrics.TenantRegistries) *AlertmanagerAggregatedMetrics {
|
||||
@@ -253,6 +255,11 @@ func NewAlertmanagerAggregatedMetrics(registries *metrics.TenantRegistries) *Ale
|
||||
fmt.Sprintf("%s_%s_alertmanager_config_object_matchers", Namespace, Subsystem),
|
||||
"The total number of object_matchers",
|
||||
nil, nil),
|
||||
|
||||
configHash: prometheus.NewDesc(
|
||||
fmt.Sprintf("%s_%s_alertmanager_config_hash", Namespace, Subsystem),
|
||||
"The hash of the Alertmanager configuration.",
|
||||
[]string{"org"}, nil),
|
||||
}
|
||||
|
||||
return aggregatedMetrics
|
||||
@@ -296,6 +303,8 @@ func (a *AlertmanagerAggregatedMetrics) Describe(out chan<- *prometheus.Desc) {
|
||||
out <- a.matchRE
|
||||
out <- a.match
|
||||
out <- a.objectMatchers
|
||||
|
||||
out <- a.configHash
|
||||
}
|
||||
|
||||
func (a *AlertmanagerAggregatedMetrics) Collect(out chan<- prometheus.Metric) {
|
||||
@@ -338,4 +347,6 @@ func (a *AlertmanagerAggregatedMetrics) Collect(out chan<- prometheus.Metric) {
|
||||
data.SendSumOfGauges(out, a.matchRE, "alertmanager_config_match_re")
|
||||
data.SendSumOfGauges(out, a.match, "alertmanager_config_match")
|
||||
data.SendSumOfGauges(out, a.objectMatchers, "alertmanager_config_object_matchers")
|
||||
|
||||
data.SendMaxOfGaugesPerTenant(out, a.configHash, "alertmanager_config_hash")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user