mirror of
https://github.com/grafana/grafana.git
synced 2024-11-22 08:56:43 -06:00
Alerting: Update alerting package and imports from cluster and clusterpb (#79786)
* Alerting: Update alerting package * update to latest commit * alias for imports
This commit is contained in:
parent
c1c3e9387a
commit
c46da8ea9b
2
go.mod
2
go.mod
@ -59,7 +59,7 @@ require (
|
|||||||
github.com/google/uuid v1.4.0 // @grafana/backend-platform
|
github.com/google/uuid v1.4.0 // @grafana/backend-platform
|
||||||
github.com/google/wire v0.5.0 // @grafana/backend-platform
|
github.com/google/wire v0.5.0 // @grafana/backend-platform
|
||||||
github.com/gorilla/websocket v1.5.0 // @grafana/grafana-app-platform-squad
|
github.com/gorilla/websocket v1.5.0 // @grafana/grafana-app-platform-squad
|
||||||
github.com/grafana/alerting v0.0.0-20231101090315-bf12694896a8 // @grafana/alerting-squad-backend
|
github.com/grafana/alerting v0.0.0-20231221110807-c17ec6241a66 // @grafana/alerting-squad-backend
|
||||||
github.com/grafana/cuetsy v0.1.11 // @grafana/grafana-as-code
|
github.com/grafana/cuetsy v0.1.11 // @grafana/grafana-as-code
|
||||||
github.com/grafana/grafana-aws-sdk v0.19.1 // @grafana/aws-datasources
|
github.com/grafana/grafana-aws-sdk v0.19.1 // @grafana/aws-datasources
|
||||||
github.com/grafana/grafana-azure-sdk-go v1.11.0 // @grafana/backend-platform
|
github.com/grafana/grafana-azure-sdk-go v1.11.0 // @grafana/backend-platform
|
||||||
|
4
go.sum
4
go.sum
@ -1805,8 +1805,8 @@ github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWm
|
|||||||
github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||||
github.com/gotestyourself/gotestyourself v1.3.0/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY=
|
github.com/gotestyourself/gotestyourself v1.3.0/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY=
|
||||||
github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY=
|
github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY=
|
||||||
github.com/grafana/alerting v0.0.0-20231101090315-bf12694896a8 h1:uoaAgS743libLwhuQUQEDO2YpFaQI5viyY4NrcyibUg=
|
github.com/grafana/alerting v0.0.0-20231221110807-c17ec6241a66 h1:qX3Reeg7jiLIgXSvxWJj/r/EngiMdiFev+FIsKpjFiE=
|
||||||
github.com/grafana/alerting v0.0.0-20231101090315-bf12694896a8/go.mod h1:lR9bhQrESIeOqKtC4Y+fK4mqtLmJFDffFt9q4cWRa8k=
|
github.com/grafana/alerting v0.0.0-20231221110807-c17ec6241a66/go.mod h1:lR9bhQrESIeOqKtC4Y+fK4mqtLmJFDffFt9q4cWRa8k=
|
||||||
github.com/grafana/codejen v0.0.3 h1:tAWxoTUuhgmEqxJPOLtJoxlPBbMULFwKFOcRsPRPXDw=
|
github.com/grafana/codejen v0.0.3 h1:tAWxoTUuhgmEqxJPOLtJoxlPBbMULFwKFOcRsPRPXDw=
|
||||||
github.com/grafana/codejen v0.0.3/go.mod h1:zmwwM/DRyQB7pfuBjTWII3CWtxcXh8LTwAYGfDfpR6s=
|
github.com/grafana/codejen v0.0.3/go.mod h1:zmwwM/DRyQB7pfuBjTWII3CWtxcXh8LTwAYGfDfpR6s=
|
||||||
github.com/grafana/cue v0.0.0-20230926092038-971951014e3f h1:TmYAMnqg3d5KYEAaT6PtTguL2GjLfvr6wnAX8Azw6tQ=
|
github.com/grafana/cue v0.0.0-20230926092038-971951014e3f h1:TmYAMnqg3d5KYEAaT6PtTguL2GjLfvr6wnAX8Azw6tQ=
|
||||||
|
@ -7,8 +7,8 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
|
alertingClusterPB "github.com/grafana/alerting/cluster/clusterpb"
|
||||||
alertingNotify "github.com/grafana/alerting/notify"
|
alertingNotify "github.com/grafana/alerting/notify"
|
||||||
"github.com/prometheus/alertmanager/cluster/clusterpb"
|
|
||||||
|
|
||||||
"github.com/grafana/grafana/pkg/infra/kvstore"
|
"github.com/grafana/grafana/pkg/infra/kvstore"
|
||||||
"github.com/grafana/grafana/pkg/infra/log"
|
"github.com/grafana/grafana/pkg/infra/log"
|
||||||
@ -77,7 +77,7 @@ func (fileStore *FileStore) GetFullState(ctx context.Context, filenames ...strin
|
|||||||
return "", fmt.Errorf("no values for org %d", fileStore.orgID)
|
return "", fmt.Errorf("no values for org %d", fileStore.orgID)
|
||||||
}
|
}
|
||||||
|
|
||||||
var parts []clusterpb.Part
|
var parts []alertingClusterPB.Part
|
||||||
for _, f := range filenames {
|
for _, f := range filenames {
|
||||||
v, ok := keys[f]
|
v, ok := keys[f]
|
||||||
if !ok {
|
if !ok {
|
||||||
@ -88,10 +88,10 @@ func (fileStore *FileStore) GetFullState(ctx context.Context, filenames ...strin
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("error decoding value for key %q", f)
|
return "", fmt.Errorf("error decoding value for key %q", f)
|
||||||
}
|
}
|
||||||
parts = append(parts, clusterpb.Part{Key: f, Data: b})
|
parts = append(parts, alertingClusterPB.Part{Key: f, Data: b})
|
||||||
}
|
}
|
||||||
|
|
||||||
fs := clusterpb.FullState{
|
fs := alertingClusterPB.FullState{
|
||||||
Parts: parts,
|
Parts: parts,
|
||||||
}
|
}
|
||||||
b, err := fs.Marshal()
|
b, err := fs.Marshal()
|
||||||
|
@ -9,7 +9,7 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/prometheus/alertmanager/cluster"
|
alertingCluster "github.com/grafana/alerting/cluster"
|
||||||
"github.com/prometheus/client_golang/prometheus"
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
|
|
||||||
alertingNotify "github.com/grafana/alerting/notify"
|
alertingNotify "github.com/grafana/alerting/notify"
|
||||||
@ -137,7 +137,7 @@ func (moa *MultiOrgAlertmanager) setupClustering(cfg *setting.Cfg) error {
|
|||||||
// We set the settlement timeout to be a multiple of the gossip interval,
|
// We set the settlement timeout to be a multiple of the gossip interval,
|
||||||
// ensuring that a sufficient number of broadcasts have occurred, thereby
|
// ensuring that a sufficient number of broadcasts have occurred, thereby
|
||||||
// increasing the probability of success when waiting for the cluster to settle.
|
// increasing the probability of success when waiting for the cluster to settle.
|
||||||
const settleTimeout = cluster.DefaultGossipInterval * 10
|
const settleTimeout = alertingCluster.DefaultGossipInterval * 10
|
||||||
// Redis setup.
|
// Redis setup.
|
||||||
if cfg.UnifiedAlerting.HARedisAddr != "" {
|
if cfg.UnifiedAlerting.HARedisAddr != "" {
|
||||||
redisPeer, err := newRedisPeer(redisConfig{
|
redisPeer, err := newRedisPeer(redisConfig{
|
||||||
@ -160,7 +160,7 @@ func (moa *MultiOrgAlertmanager) setupClustering(cfg *setting.Cfg) error {
|
|||||||
}
|
}
|
||||||
// Memberlist setup.
|
// Memberlist setup.
|
||||||
if len(cfg.UnifiedAlerting.HAPeers) > 0 {
|
if len(cfg.UnifiedAlerting.HAPeers) > 0 {
|
||||||
peer, err := cluster.Create(
|
peer, err := alertingCluster.Create(
|
||||||
clusterLogger,
|
clusterLogger,
|
||||||
moa.metrics.Registerer,
|
moa.metrics.Registerer,
|
||||||
cfg.UnifiedAlerting.HAListenAddr,
|
cfg.UnifiedAlerting.HAListenAddr,
|
||||||
@ -169,9 +169,9 @@ func (moa *MultiOrgAlertmanager) setupClustering(cfg *setting.Cfg) error {
|
|||||||
true,
|
true,
|
||||||
cfg.UnifiedAlerting.HAPushPullInterval,
|
cfg.UnifiedAlerting.HAPushPullInterval,
|
||||||
cfg.UnifiedAlerting.HAGossipInterval,
|
cfg.UnifiedAlerting.HAGossipInterval,
|
||||||
cluster.DefaultTCPTimeout,
|
alertingCluster.DefaultTCPTimeout,
|
||||||
cluster.DefaultProbeTimeout,
|
alertingCluster.DefaultProbeTimeout,
|
||||||
cluster.DefaultProbeInterval,
|
alertingCluster.DefaultProbeInterval,
|
||||||
nil,
|
nil,
|
||||||
true,
|
true,
|
||||||
cfg.UnifiedAlerting.HALabel,
|
cfg.UnifiedAlerting.HALabel,
|
||||||
@ -181,7 +181,7 @@ func (moa *MultiOrgAlertmanager) setupClustering(cfg *setting.Cfg) error {
|
|||||||
return fmt.Errorf("unable to initialize gossip mesh: %w", err)
|
return fmt.Errorf("unable to initialize gossip mesh: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = peer.Join(cluster.DefaultReconnectInterval, cluster.DefaultReconnectTimeout)
|
err = peer.Join(alertingCluster.DefaultReconnectInterval, alertingCluster.DefaultReconnectTimeout)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
moa.logger.Error("Msg", "Unable to join gossip mesh while initializing cluster for high availability mode", "error", err)
|
moa.logger.Error("Msg", "Unable to join gossip mesh while initializing cluster for high availability mode", "error", err)
|
||||||
}
|
}
|
||||||
@ -385,7 +385,7 @@ func (moa *MultiOrgAlertmanager) StopAndWait() {
|
|||||||
am.StopAndWait()
|
am.StopAndWait()
|
||||||
}
|
}
|
||||||
|
|
||||||
p, ok := moa.peer.(*cluster.Peer)
|
p, ok := moa.peer.(*alertingCluster.Peer)
|
||||||
if ok {
|
if ok {
|
||||||
moa.settleCancel()
|
moa.settleCancel()
|
||||||
if err := p.Leave(10 * time.Second); err != nil {
|
if err := p.Leave(10 * time.Second); err != nil {
|
||||||
@ -423,7 +423,7 @@ type NilPeer struct{}
|
|||||||
|
|
||||||
func (p *NilPeer) Position() int { return 0 }
|
func (p *NilPeer) Position() int { return 0 }
|
||||||
func (p *NilPeer) WaitReady(context.Context) error { return nil }
|
func (p *NilPeer) WaitReady(context.Context) error { return nil }
|
||||||
func (p *NilPeer) AddState(string, cluster.State, prometheus.Registerer) cluster.ClusterChannel {
|
func (p *NilPeer) AddState(string, alertingCluster.State, prometheus.Registerer) alertingCluster.ClusterChannel {
|
||||||
return &NilChannel{}
|
return &NilChannel{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,8 +4,8 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
|
|
||||||
"github.com/gogo/protobuf/proto"
|
"github.com/gogo/protobuf/proto"
|
||||||
"github.com/prometheus/alertmanager/cluster"
|
alertingCluster "github.com/grafana/alerting/cluster"
|
||||||
"github.com/prometheus/alertmanager/cluster/clusterpb"
|
alertingClusterPB "github.com/grafana/alerting/cluster/clusterpb"
|
||||||
)
|
)
|
||||||
|
|
||||||
type RedisChannel struct {
|
type RedisChannel struct {
|
||||||
@ -16,7 +16,7 @@ type RedisChannel struct {
|
|||||||
msgc chan []byte
|
msgc chan []byte
|
||||||
}
|
}
|
||||||
|
|
||||||
func newRedisChannel(p *redisPeer, key, channel, msgType string) cluster.ClusterChannel {
|
func newRedisChannel(p *redisPeer, key, channel, msgType string) alertingCluster.ClusterChannel {
|
||||||
redisChannel := &RedisChannel{
|
redisChannel := &RedisChannel{
|
||||||
p: p,
|
p: p,
|
||||||
key: key,
|
key: key,
|
||||||
@ -50,7 +50,7 @@ func (c *RedisChannel) handleMessages() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *RedisChannel) Broadcast(b []byte) {
|
func (c *RedisChannel) Broadcast(b []byte) {
|
||||||
b, err := proto.Marshal(&clusterpb.Part{Key: c.key, Data: b})
|
b, err := proto.Marshal(&alertingClusterPB.Part{Key: c.key, Data: b})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.p.logger.Error("Error marshalling broadcast into proto", "err", err, "channel", c.channel)
|
c.p.logger.Error("Error marshalling broadcast into proto", "err", err, "channel", c.channel)
|
||||||
return
|
return
|
||||||
|
@ -10,8 +10,8 @@ import (
|
|||||||
|
|
||||||
"github.com/gogo/protobuf/proto"
|
"github.com/gogo/protobuf/proto"
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
"github.com/prometheus/alertmanager/cluster"
|
alertingCluster "github.com/grafana/alerting/cluster"
|
||||||
"github.com/prometheus/alertmanager/cluster/clusterpb"
|
alertingClusterPB "github.com/grafana/alerting/cluster/clusterpb"
|
||||||
"github.com/prometheus/client_golang/prometheus"
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
|
|
||||||
"github.com/redis/go-redis/v9"
|
"github.com/redis/go-redis/v9"
|
||||||
@ -54,7 +54,7 @@ type redisPeer struct {
|
|||||||
redis *redis.Client
|
redis *redis.Client
|
||||||
prefix string
|
prefix string
|
||||||
logger log.Logger
|
logger log.Logger
|
||||||
states map[string]cluster.State
|
states map[string]alertingCluster.State
|
||||||
subs map[string]*redis.PubSub
|
subs map[string]*redis.PubSub
|
||||||
statesMtx sync.RWMutex
|
statesMtx sync.RWMutex
|
||||||
|
|
||||||
@ -110,7 +110,7 @@ func newRedisPeer(cfg redisConfig, logger log.Logger, reg prometheus.Registerer,
|
|||||||
name: name,
|
name: name,
|
||||||
redis: rdb,
|
redis: rdb,
|
||||||
logger: logger,
|
logger: logger,
|
||||||
states: map[string]cluster.State{},
|
states: map[string]alertingCluster.State{},
|
||||||
subs: map[string]*redis.PubSub{},
|
subs: map[string]*redis.PubSub{},
|
||||||
pushPullInterval: pushPullInterval,
|
pushPullInterval: pushPullInterval,
|
||||||
readyc: make(chan struct{}),
|
readyc: make(chan struct{}),
|
||||||
@ -425,7 +425,7 @@ func (p *redisPeer) Settle(ctx context.Context, interval time.Duration) {
|
|||||||
close(p.readyc)
|
close(p.readyc)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *redisPeer) AddState(key string, state cluster.State, _ prometheus.Registerer) cluster.ClusterChannel {
|
func (p *redisPeer) AddState(key string, state alertingCluster.State, _ prometheus.Registerer) alertingCluster.ClusterChannel {
|
||||||
p.statesMtx.Lock()
|
p.statesMtx.Lock()
|
||||||
defer p.statesMtx.Unlock()
|
defer p.statesMtx.Unlock()
|
||||||
p.states[key] = state
|
p.states[key] = state
|
||||||
@ -453,7 +453,7 @@ func (p *redisPeer) mergePartialState(buf []byte) {
|
|||||||
p.messagesReceived.WithLabelValues(update).Inc()
|
p.messagesReceived.WithLabelValues(update).Inc()
|
||||||
p.messagesReceivedSize.WithLabelValues(update).Add(float64(len(buf)))
|
p.messagesReceivedSize.WithLabelValues(update).Add(float64(len(buf)))
|
||||||
|
|
||||||
var part clusterpb.Part
|
var part alertingClusterPB.Part
|
||||||
if err := proto.Unmarshal(buf, &part); err != nil {
|
if err := proto.Unmarshal(buf, &part); err != nil {
|
||||||
p.logger.Warn("Error decoding the received broadcast message", "err", err)
|
p.logger.Warn("Error decoding the received broadcast message", "err", err)
|
||||||
return
|
return
|
||||||
@ -510,7 +510,7 @@ func (p *redisPeer) mergeFullState(buf []byte) {
|
|||||||
p.messagesReceived.WithLabelValues(fullState).Inc()
|
p.messagesReceived.WithLabelValues(fullState).Inc()
|
||||||
p.messagesReceivedSize.WithLabelValues(fullState).Add(float64(len(buf)))
|
p.messagesReceivedSize.WithLabelValues(fullState).Add(float64(len(buf)))
|
||||||
|
|
||||||
var fs clusterpb.FullState
|
var fs alertingClusterPB.FullState
|
||||||
if err := proto.Unmarshal(buf, &fs); err != nil {
|
if err := proto.Unmarshal(buf, &fs); err != nil {
|
||||||
p.logger.Warn("Error unmarshaling the received remote state", "err", err)
|
p.logger.Warn("Error unmarshaling the received remote state", "err", err)
|
||||||
return
|
return
|
||||||
@ -564,8 +564,8 @@ func (p *redisPeer) requestFullState() {
|
|||||||
func (p *redisPeer) LocalState() []byte {
|
func (p *redisPeer) LocalState() []byte {
|
||||||
p.statesMtx.RLock()
|
p.statesMtx.RLock()
|
||||||
defer p.statesMtx.RUnlock()
|
defer p.statesMtx.RUnlock()
|
||||||
all := &clusterpb.FullState{
|
all := &alertingClusterPB.FullState{
|
||||||
Parts: make([]clusterpb.Part, 0, len(p.states)),
|
Parts: make([]alertingClusterPB.Part, 0, len(p.states)),
|
||||||
}
|
}
|
||||||
|
|
||||||
for key, s := range p.states {
|
for key, s := range p.states {
|
||||||
@ -573,7 +573,7 @@ func (p *redisPeer) LocalState() []byte {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
p.logger.Warn("Error encoding the local state", "err", err, "key", key)
|
p.logger.Warn("Error encoding the local state", "err", err, "key", key)
|
||||||
}
|
}
|
||||||
all.Parts = append(all.Parts, clusterpb.Part{Key: key, Data: b})
|
all.Parts = append(all.Parts, alertingClusterPB.Part{Key: key, Data: b})
|
||||||
}
|
}
|
||||||
b, err := proto.Marshal(all)
|
b, err := proto.Marshal(all)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -7,8 +7,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
alertingCluster "github.com/grafana/alerting/cluster"
|
||||||
"github.com/grafana/grafana-plugin-sdk-go/backend/gtime"
|
"github.com/grafana/grafana-plugin-sdk-go/backend/gtime"
|
||||||
"github.com/prometheus/alertmanager/cluster"
|
|
||||||
"gopkg.in/ini.v1"
|
"gopkg.in/ini.v1"
|
||||||
|
|
||||||
"github.com/grafana/grafana/pkg/util"
|
"github.com/grafana/grafana/pkg/util"
|
||||||
@ -17,8 +17,8 @@ import (
|
|||||||
const (
|
const (
|
||||||
alertmanagerDefaultClusterAddr = "0.0.0.0:9094"
|
alertmanagerDefaultClusterAddr = "0.0.0.0:9094"
|
||||||
alertmanagerDefaultPeerTimeout = 15 * time.Second
|
alertmanagerDefaultPeerTimeout = 15 * time.Second
|
||||||
alertmanagerDefaultGossipInterval = cluster.DefaultGossipInterval
|
alertmanagerDefaultGossipInterval = alertingCluster.DefaultGossipInterval
|
||||||
alertmanagerDefaultPushPullInterval = cluster.DefaultPushPullInterval
|
alertmanagerDefaultPushPullInterval = alertingCluster.DefaultPushPullInterval
|
||||||
alertmanagerDefaultConfigPollInterval = time.Minute
|
alertmanagerDefaultConfigPollInterval = time.Minute
|
||||||
alertmanagerRedisDefaultMaxConns = 5
|
alertmanagerRedisDefaultMaxConns = 5
|
||||||
// To start, the alertmanager needs at least one route defined.
|
// To start, the alertmanager needs at least one route defined.
|
||||||
|
Loading…
Reference in New Issue
Block a user