Prometheus: Update dependency to v0.52.0 (#87809)

* Prometheus: Update dependency to v0.52.0

* go work sync

* fix panics in tests

* go work sync

* prometheus v0.52.0

* handle errors

* Update pkg/services/ngalert/sender/sender_test.go

Co-authored-by: Santiago <santiagohernandez.1997@gmail.com>

* Update pkg/services/ngalert/sender/sender_test.go

Co-authored-by: Santiago <santiagohernandez.1997@gmail.com>

---------

Co-authored-by: Santiago <santiagohernandez.1997@gmail.com>
Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
This commit is contained in:
Kyle Brandt
2024-05-28 09:22:20 -04:00
committed by GitHub
parent 502bd5612e
commit a738cb42d8
15 changed files with 543 additions and 426 deletions

View File

@@ -22,6 +22,8 @@ import (
alertingClusterPB "github.com/grafana/alerting/cluster/clusterpb"
alertingNotify "github.com/grafana/alerting/notify"
"gopkg.in/yaml.v3"
"github.com/grafana/grafana/pkg/infra/log"
apimodels "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions"
"github.com/grafana/grafana/pkg/services/ngalert/metrics"
@@ -29,7 +31,6 @@ import (
"github.com/grafana/grafana/pkg/services/ngalert/notifier"
remoteClient "github.com/grafana/grafana/pkg/services/ngalert/remote/client"
"github.com/grafana/grafana/pkg/services/ngalert/sender"
"gopkg.in/yaml.v3"
)
type stateStore interface {
@@ -124,7 +125,10 @@ 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, prometheus.NewRegistry(), sender.WithDoFunc(doFunc))
s, err := sender.NewExternalAlertmanagerSender(senderLogger, prometheus.NewRegistry(), sender.WithDoFunc(doFunc))
if err != nil {
return nil, err
}
s.Run()
err = s.ApplyConfig(cfg.OrgID, 0, []sender.ExternalAMcfg{{URL: cfg.URL + "/alertmanager"}})
if err != nil {

View File

@@ -165,7 +165,10 @@ 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, prometheus.NewRegistry())
s, err := NewExternalAlertmanagerSender(senderLogger, prometheus.NewRegistry())
if err != nil {
return err
}
d.externalAlertmanagers[cfg.OrgID] = s
s.Run()

View File

@@ -80,7 +80,7 @@ func (cfg *ExternalAMcfg) headerString() string {
return result.String()
}
func NewExternalAlertmanagerSender(l log.Logger, reg prometheus.Registerer, opts ...Option) *ExternalAlertmanager {
func NewExternalAlertmanagerSender(l log.Logger, reg prometheus.Registerer, opts ...Option) (*ExternalAlertmanager, error) {
sdCtx, sdCancel := context.WithCancel(context.Background())
s := &ExternalAlertmanager{
logger: l,
@@ -93,14 +93,22 @@ func NewExternalAlertmanagerSender(l log.Logger, reg prometheus.Registerer, opts
&Options{QueueCapacity: defaultMaxQueueCapacity, Registerer: reg},
s.logger,
)
sdMetrics, err := discovery.CreateAndRegisterSDMetrics(prometheus.NewRegistry())
if err != nil {
s.logger.Error("failed to register service discovery metrics", "error", err)
return nil, err
}
s.sdManager = discovery.NewManager(sdCtx, s.logger, prometheus.NewRegistry(), sdMetrics)
s.sdManager = discovery.NewManager(sdCtx, s.logger)
if s.sdManager == nil {
return nil, errors.New("failed to create new discovery manager")
}
for _, opt := range opts {
opt(s)
}
return s
return s, nil
}
// ApplyConfig syncs a configuration with the sender.

View File

@@ -3,11 +3,12 @@ package sender
import (
"testing"
"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"
"github.com/grafana/grafana/pkg/infra/log"
)
func TestSanitizeLabelName(t *testing.T) {
@@ -51,7 +52,8 @@ func TestSanitizeLabelName(t *testing.T) {
for _, tc := range cases {
logger := log.New("ngalert.sender.external-alertmanager")
am := NewExternalAlertmanagerSender(logger, prometheus.NewRegistry())
am, err := NewExternalAlertmanagerSender(logger, prometheus.NewRegistry())
require.NoError(t, err)
t.Run(tc.desc, func(t *testing.T) {
res, err := am.sanitizeLabelName(tc.labelName)
@@ -99,7 +101,8 @@ func TestSanitizeLabelSet(t *testing.T) {
for _, tc := range cases {
logger := log.New("ngalert.sender.external-alertmanager")
am := NewExternalAlertmanagerSender(logger, prometheus.NewRegistry())
am, err := NewExternalAlertmanagerSender(logger, prometheus.NewRegistry())
require.NoError(t, err)
t.Run(tc.desc, func(t *testing.T) {
require.Equal(t, tc.expectedResult, am.sanitizeLabelSet(tc.labelset))
})