Skip to content

Commit 16b5c0d

Browse files
fix for #5989
Signed-off-by: Anand Rajagopal <[email protected]>
1 parent d664dd7 commit 16b5c0d

File tree

7 files changed

+304
-86
lines changed

7 files changed

+304
-86
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
* [CHANGE] Upgrade Dockerfile Node version from 14x to 18x. #5906
55
* [CHANGE] Ingester: Remove `-querier.query-store-for-labels-enabled` flag. Querying long-term store for labels is always enabled. #5984
66
* [FEATURE] Ingester: Experimental: Enable native histogram ingestion via `-blocks-storage.tsdb.enable-native-histograms` flag. #5986
7+
* [FEATURE] Ruler: Add support for filtering out alerts in ListRules API. #6011
78
* [ENHANCEMENT] rulers: Add support to persist tokens in rulers. #5987
89
* [ENHANCEMENT] Query Frontend/Querier: Added store gateway postings touched count and touched size in Querier stats and log in Query Frontend. #5892
910
* [ENHANCEMENT] Query Frontend/Querier: Returns `warnings` on prometheus query responses. #5916

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ shell:
236236
bash
237237

238238
configs-integration-test:
239-
/bin/bash -c "go test -v -tags 'netgo integration' -timeout 30s ./pkg/configs/... ./pkg/ruler/..."
239+
/bin/bash -c "go test -v -tags 'netgo integration' -timeout 60s ./pkg/configs/... ./pkg/ruler/..."
240240

241241
mod-check:
242242
GO111MODULE=on go mod download

pkg/ruler/api.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,18 @@ func (a *API) PrometheusRules(w http.ResponseWriter, req *http.Request) {
135135
return
136136
}
137137

138+
excludeAlerts, err := parseExcludeAlerts(req)
139+
if err != nil {
140+
util_api.RespondError(logger, w, v1.ErrBadData, fmt.Sprintf("invalid parameter %q: %s", "exclude_alerts", err.Error()), http.StatusBadRequest)
141+
return
142+
}
143+
138144
rulesRequest := RulesRequest{
139145
RuleNames: req.Form["rule_name[]"],
140146
RuleGroupNames: req.Form["rule_group[]"],
141147
Files: req.Form["file[]"],
142148
Type: typ,
149+
ExcludeAlerts: excludeAlerts,
143150
}
144151

145152
w.Header().Set("Content-Type", "application/json")
@@ -234,6 +241,20 @@ func (a *API) PrometheusRules(w http.ResponseWriter, req *http.Request) {
234241
}
235242
}
236243

244+
func parseExcludeAlerts(r *http.Request) (bool, error) {
245+
excludeAlertsParam := strings.ToLower(r.URL.Query().Get("exclude_alerts"))
246+
247+
if excludeAlertsParam == "" {
248+
return false, nil
249+
}
250+
251+
excludeAlerts, err := strconv.ParseBool(excludeAlertsParam)
252+
if err != nil {
253+
return false, fmt.Errorf("error converting exclude_alerts: %w", err)
254+
}
255+
return excludeAlerts, nil
256+
}
257+
237258
func (a *API) PrometheusAlerts(w http.ResponseWriter, req *http.Request) {
238259
logger := util_log.WithContext(req.Context(), a.logger)
239260
userID, err := tenant.TenantID(req.Context())

pkg/ruler/ruler.go

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -927,19 +927,21 @@ func (r *Ruler) getLocalRules(userID string, rulesRequest RulesRequest, includeB
927927
continue
928928
}
929929
alerts := []*AlertStateDesc{}
930-
for _, a := range rule.ActiveAlerts() {
931-
alerts = append(alerts, &AlertStateDesc{
932-
State: a.State.String(),
933-
Labels: cortexpb.FromLabelsToLabelAdapters(a.Labels),
934-
Annotations: cortexpb.FromLabelsToLabelAdapters(a.Annotations),
935-
Value: a.Value,
936-
ActiveAt: a.ActiveAt,
937-
FiredAt: a.FiredAt,
938-
ResolvedAt: a.ResolvedAt,
939-
LastSentAt: a.LastSentAt,
940-
ValidUntil: a.ValidUntil,
941-
KeepFiringSince: a.KeepFiringSince,
942-
})
930+
if !rulesRequest.ExcludeAlerts {
931+
for _, a := range rule.ActiveAlerts() {
932+
alerts = append(alerts, &AlertStateDesc{
933+
State: a.State.String(),
934+
Labels: cortexpb.FromLabelsToLabelAdapters(a.Labels),
935+
Annotations: cortexpb.FromLabelsToLabelAdapters(a.Annotations),
936+
Value: a.Value,
937+
ActiveAt: a.ActiveAt,
938+
FiredAt: a.FiredAt,
939+
ResolvedAt: a.ResolvedAt,
940+
LastSentAt: a.LastSentAt,
941+
ValidUntil: a.ValidUntil,
942+
KeepFiringSince: a.KeepFiringSince,
943+
})
944+
}
943945
}
944946
ruleDesc = &RuleStateDesc{
945947
Rule: &rulespb.RuleDesc{
@@ -1146,6 +1148,7 @@ func (r *Ruler) getShardedRules(ctx context.Context, userID string, rulesRequest
11461148
RuleGroupNames: rulesRequest.GetRuleGroupNames(),
11471149
Files: rulesRequest.GetFiles(),
11481150
Type: rulesRequest.GetType(),
1151+
ExcludeAlerts: rulesRequest.GetExcludeAlerts(),
11491152
})
11501153

11511154
if err != nil {

pkg/ruler/ruler.pb.go

Lines changed: 97 additions & 49 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/ruler/ruler.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ message RulesRequest {
2424
repeated string ruleGroupNames = 2;
2525
repeated string files = 3;
2626
string type = 4;
27+
bool excludeAlerts = 5;
2728
}
2829

2930
message RulesResponse {

0 commit comments

Comments
 (0)