mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Alerting: Configurable externalLabels for Loki state history (#62404)
* Add config option for external labels * Remove redundant nilcheck
This commit is contained in:
parent
c8e7e7ccf1
commit
b4682fe3cb
@ -30,6 +30,7 @@ type remoteLokiClient interface {
|
||||
|
||||
type RemoteLokiBackend struct {
|
||||
client remoteLokiClient
|
||||
externalLabels map[string]string
|
||||
log log.Logger
|
||||
}
|
||||
|
||||
@ -37,6 +38,7 @@ func NewRemoteLokiBackend(cfg LokiConfig) *RemoteLokiBackend {
|
||||
logger := log.New("ngalert.state.historian", "backend", "loki")
|
||||
return &RemoteLokiBackend{
|
||||
client: newLokiClient(cfg, logger),
|
||||
externalLabels: cfg.ExternalLabels,
|
||||
log: logger,
|
||||
}
|
||||
}
|
||||
@ -62,7 +64,7 @@ func (h *RemoteLokiBackend) statesToStreams(rule history_model.RuleMeta, states
|
||||
continue
|
||||
}
|
||||
|
||||
labels := removePrivateLabels(state.State.Labels)
|
||||
labels := h.addExternalLabels(removePrivateLabels(state.State.Labels))
|
||||
labels[OrgIDLabel] = fmt.Sprint(rule.OrgID)
|
||||
labels[RuleUIDLabel] = fmt.Sprint(rule.UID)
|
||||
labels[GroupLabel] = fmt.Sprint(rule.Group)
|
||||
@ -124,6 +126,13 @@ func (h *RemoteLokiBackend) recordStreams(ctx context.Context, streams []stream,
|
||||
return nil
|
||||
}
|
||||
|
||||
func (h *RemoteLokiBackend) addExternalLabels(labels data.Labels) data.Labels {
|
||||
for k, v := range h.externalLabels {
|
||||
labels[k] = v
|
||||
}
|
||||
return labels
|
||||
}
|
||||
|
||||
type lokiEntry struct {
|
||||
SchemaVersion int `json:"schemaVersion"`
|
||||
Previous string `json:"previous"`
|
||||
|
@ -20,6 +20,7 @@ type LokiConfig struct {
|
||||
BasicAuthUser string
|
||||
BasicAuthPassword string
|
||||
TenantID string
|
||||
ExternalLabels map[string]string
|
||||
}
|
||||
|
||||
type httpLokiClient struct {
|
||||
|
@ -108,6 +108,7 @@ type UnifiedAlertingStateHistorySettings struct {
|
||||
// if one of them is set.
|
||||
LokiBasicAuthPassword string
|
||||
LokiBasicAuthUsername string
|
||||
ExternalLabels map[string]string
|
||||
}
|
||||
|
||||
// IsEnabled returns true if UnifiedAlertingSettings.Enabled is either nil or true.
|
||||
@ -317,6 +318,7 @@ func (cfg *Cfg) ReadUnifiedAlertingSettings(iniFile *ini.File) error {
|
||||
uaCfg.ReservedLabels = uaCfgReservedLabels
|
||||
|
||||
stateHistory := iniFile.Section("unified_alerting.state_history")
|
||||
stateHistoryLabels := iniFile.Section("unified_alerting.state_history.external_labels")
|
||||
uaCfgStateHistory := UnifiedAlertingStateHistorySettings{
|
||||
Enabled: stateHistory.Key("enabled").MustBool(stateHistoryDefaultEnabled),
|
||||
Backend: stateHistory.Key("backend").MustString("annotations"),
|
||||
@ -324,6 +326,7 @@ func (cfg *Cfg) ReadUnifiedAlertingSettings(iniFile *ini.File) error {
|
||||
LokiTenantID: stateHistory.Key("loki_tenant_id").MustString(""),
|
||||
LokiBasicAuthUsername: stateHistory.Key("loki_basic_auth_username").MustString(""),
|
||||
LokiBasicAuthPassword: stateHistory.Key("loki_basic_auth_password").MustString(""),
|
||||
ExternalLabels: stateHistoryLabels.KeysHash(),
|
||||
}
|
||||
uaCfg.StateHistory = uaCfgStateHistory
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user