mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Alerting: Pass metrics Registerer into NewExternalAlertmanagerSender. (#88313)
* Alerting: Pass metrics Registerer into NewExternalAlertmanagerSender. I will work on a separate change to export the metrics from Grafana, this is a little more complicated. * Typo
This commit is contained in:
parent
bbef011e43
commit
ed42119907
@ -17,6 +17,7 @@ import (
|
||||
amgeneral "github.com/prometheus/alertmanager/api/v2/client/general"
|
||||
amreceiver "github.com/prometheus/alertmanager/api/v2/client/receiver"
|
||||
amsilence "github.com/prometheus/alertmanager/api/v2/client/silence"
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
|
||||
alertingClusterPB "github.com/grafana/alerting/cluster/clusterpb"
|
||||
alertingNotify "github.com/grafana/alerting/notify"
|
||||
@ -123,7 +124,7 @@ func NewAlertmanager(cfg AlertmanagerConfig, store stateStore, decryptFn Decrypt
|
||||
return c.Do(req.WithContext(ctx))
|
||||
}
|
||||
senderLogger := log.New("ngalert.sender.external-alertmanager")
|
||||
s := sender.NewExternalAlertmanagerSender(senderLogger, sender.WithDoFunc(doFunc))
|
||||
s := sender.NewExternalAlertmanagerSender(senderLogger, prometheus.NewRegistry(), sender.WithDoFunc(doFunc))
|
||||
s.Run()
|
||||
err = s.ApplyConfig(cfg.OrgID, 0, []sender.ExternalAMcfg{{URL: cfg.URL + "/alertmanager"}})
|
||||
if err != nil {
|
||||
|
@ -12,6 +12,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/benbjohnson/clock"
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
|
||||
"github.com/grafana/grafana/pkg/api/datasource"
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
@ -164,7 +165,7 @@ func (d *AlertsRouter) SyncAndApplyConfigFromDatabase(ctx context.Context) error
|
||||
// No sender and have Alertmanager(s) to send to - start a new one.
|
||||
d.logger.Info("Creating new sender for the external alertmanagers", "org", cfg.OrgID, "alertmanagers", redactedAMs)
|
||||
senderLogger := log.New("ngalert.sender.external-alertmanager")
|
||||
s := NewExternalAlertmanagerSender(senderLogger)
|
||||
s := NewExternalAlertmanagerSender(senderLogger, prometheus.NewRegistry())
|
||||
d.externalAlertmanagers[cfg.OrgID] = s
|
||||
s.Run()
|
||||
|
||||
|
@ -80,7 +80,7 @@ func (cfg *ExternalAMcfg) headerString() string {
|
||||
return result.String()
|
||||
}
|
||||
|
||||
func NewExternalAlertmanagerSender(l log.Logger, opts ...Option) *ExternalAlertmanager {
|
||||
func NewExternalAlertmanagerSender(l log.Logger, reg prometheus.Registerer, opts ...Option) *ExternalAlertmanager {
|
||||
sdCtx, sdCancel := context.WithCancel(context.Background())
|
||||
s := &ExternalAlertmanager{
|
||||
logger: l,
|
||||
@ -90,7 +90,7 @@ func NewExternalAlertmanagerSender(l log.Logger, opts ...Option) *ExternalAlertm
|
||||
s.manager = NewManager(
|
||||
// Injecting a new registry here means these metrics are not exported.
|
||||
// Once we fix the individual Alertmanager metrics we should fix this scenario too.
|
||||
&Options{QueueCapacity: defaultMaxQueueCapacity, Registerer: prometheus.NewRegistry()},
|
||||
&Options{QueueCapacity: defaultMaxQueueCapacity, Registerer: reg},
|
||||
s.logger,
|
||||
)
|
||||
|
||||
|
@ -5,6 +5,7 @@ import (
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
"github.com/prometheus/alertmanager/api/v2/models"
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
"github.com/prometheus/prometheus/model/labels"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
@ -50,7 +51,7 @@ func TestSanitizeLabelName(t *testing.T) {
|
||||
|
||||
for _, tc := range cases {
|
||||
logger := log.New("ngalert.sender.external-alertmanager")
|
||||
am := NewExternalAlertmanagerSender(logger)
|
||||
am := NewExternalAlertmanagerSender(logger, prometheus.NewRegistry())
|
||||
t.Run(tc.desc, func(t *testing.T) {
|
||||
res, err := am.sanitizeLabelName(tc.labelName)
|
||||
|
||||
@ -98,7 +99,7 @@ func TestSanitizeLabelSet(t *testing.T) {
|
||||
|
||||
for _, tc := range cases {
|
||||
logger := log.New("ngalert.sender.external-alertmanager")
|
||||
am := NewExternalAlertmanagerSender(logger)
|
||||
am := NewExternalAlertmanagerSender(logger, prometheus.NewRegistry())
|
||||
t.Run(tc.desc, func(t *testing.T) {
|
||||
require.Equal(t, tc.expectedResult, am.sanitizeLabelSet(tc.labelset))
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user