Alerting: refactor state tracker (#33292)
* set processing time * merge labels and set on response * use state cache for adding alerts to rules * minor cleanup * add support for NoData and Error results * rename test * bring in changes from other PRs tha have been merged * pr feedback * add integration test * close state tracker cleanup on context.Done * fixup test * rename state tracker * set EvaluationDuration on Result * default labels set as constants * separate cache and state from manager * use RWMutex in cache
This commit is contained in:
@@ -50,7 +50,7 @@ type API struct {
|
||||
AlertingStore store.AlertingStore
|
||||
DataProxy *datasourceproxy.DatasourceProxyService
|
||||
Alertmanager Alertmanager
|
||||
StateTracker *state.StateTracker
|
||||
StateManager *state.Manager
|
||||
}
|
||||
|
||||
// RegisterAPIEndpoints registers API handlers
|
||||
@@ -69,7 +69,7 @@ func (api *API) RegisterAPIEndpoints() {
|
||||
api.RegisterPrometheusApiEndpoints(NewForkedProm(
|
||||
api.DatasourceCache,
|
||||
NewLotexProm(proxy, logger),
|
||||
PrometheusSrv{log: logger, stateTracker: api.StateTracker, store: api.RuleStore},
|
||||
PrometheusSrv{log: logger, manager: api.StateManager, store: api.RuleStore},
|
||||
))
|
||||
// Register endpoints for proxing to Cortex Ruler-compatible backends.
|
||||
api.RegisterRulerApiEndpoints(NewForkedRuler(
|
||||
|
||||
@@ -19,9 +19,9 @@ import (
|
||||
)
|
||||
|
||||
type PrometheusSrv struct {
|
||||
log log.Logger
|
||||
stateTracker *state.StateTracker
|
||||
store store.RuleStore
|
||||
log log.Logger
|
||||
manager *state.Manager
|
||||
store store.RuleStore
|
||||
}
|
||||
|
||||
func (srv PrometheusSrv) RouteGetAlertStatuses(c *models.ReqContext) response.Response {
|
||||
@@ -33,7 +33,7 @@ func (srv PrometheusSrv) RouteGetAlertStatuses(c *models.ReqContext) response.Re
|
||||
Alerts: []*apimodels.Alert{},
|
||||
},
|
||||
}
|
||||
for _, alertState := range srv.stateTracker.GetAll() {
|
||||
for _, alertState := range srv.manager.GetAll() {
|
||||
startsAt := alertState.StartsAt
|
||||
alertResponse.Data.Alerts = append(alertResponse.Data.Alerts, &apimodels.Alert{
|
||||
Labels: map[string]string(alertState.Labels),
|
||||
@@ -88,7 +88,7 @@ func (srv PrometheusSrv) RouteGetRuleStatuses(c *models.ReqContext) response.Res
|
||||
EvaluationTime: 0, // TODO: see if we are able to pass this along with evaluation results
|
||||
}
|
||||
|
||||
stateMap := srv.stateTracker.GetStatesByRuleUID()
|
||||
stateMap := srv.manager.GetStatesByRuleUID()
|
||||
for _, rule := range alertRuleQuery.Result {
|
||||
alertingRule := apimodels.AlertingRule{
|
||||
State: "inactive",
|
||||
|
||||
Reference in New Issue
Block a user