Skip to content

Commit

Permalink
Merge pull request #327 from pyrra-dev/fix-latency-burnrates-regexp
Browse files Browse the repository at this point in the history
slo: Fix latency burnrate recording rules with regexp matchers
  • Loading branch information
metalmatze authored Jun 16, 2022
2 parents 1f6478a + ef1494b commit 70b3a1a
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 40 deletions.
8 changes: 6 additions & 2 deletions slo/promql_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,10 @@ var (
Window: model.Duration(14 * 24 * time.Hour),
Indicator: Indicator{
Latency: &LatencyIndicator{
Grouping: []string{
"resource",
"verb",
},
Success: Metric{
Name: "apiserver_request_duration_seconds_bucket",
LabelMatchers: []*labels.Matcher{
Expand Down Expand Up @@ -312,7 +316,7 @@ func TestObjective_QueryTotal(t *testing.T) {
}, {
name: "apiserver-read-resource-latency",
objective: objectiveAPIServerLatency(),
expected: `sum(apiserver_request_duration_seconds:increase2w{job="apiserver",resource=~"resource|",slo="apiserver-read-resource-latency",verb=~"LIST|GET"})`,
expected: `sum by(resource, verb) (apiserver_request_duration_seconds:increase2w{job="apiserver",resource=~"resource|",slo="apiserver-read-resource-latency",verb=~"LIST|GET"})`,
}}
for _, tc := range testcases {
t.Run(tc.name, func(t *testing.T) {
Expand Down Expand Up @@ -381,7 +385,7 @@ func TestObjective_QueryErrors(t *testing.T) {
}, {
name: "apiserver-read-resource-latency",
objective: objectiveAPIServerLatency(),
expected: `sum(apiserver_request_duration_seconds:increase2w{job="apiserver",le="",resource=~"resource|",slo="apiserver-read-resource-latency",verb=~"LIST|GET"}) - sum(apiserver_request_duration_seconds:increase2w{job="apiserver",le="0.1",resource=~"resource|",slo="apiserver-read-resource-latency",verb=~"LIST|GET"})`,
expected: `sum by(resource, verb) (apiserver_request_duration_seconds:increase2w{job="apiserver",le="",resource=~"resource|",slo="apiserver-read-resource-latency",verb=~"LIST|GET"}) - sum by(resource, verb) (apiserver_request_duration_seconds:increase2w{job="apiserver",le="0.1",resource=~"resource|",slo="apiserver-read-resource-latency",verb=~"LIST|GET"})`,
}}
for _, tc := range testcases {
t.Run(tc.name, func(t *testing.T) {
Expand Down
11 changes: 6 additions & 5 deletions slo/rules.go
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,12 @@ func (o Objective) Burnrates() (monitoringv1.RuleGroup, error) {
if m.Name == labels.MetricName {
continue
}
if _, ok := groupingMap[m.Name]; !ok {
if m.Type == labels.MatchRegexp || m.Type == labels.MatchNotRegexp {
continue
}
}

alertMatchers = append(alertMatchers, m.String())
}
alertMatchers = append(alertMatchers, fmt.Sprintf(`slo="%s"`, sloName))
Expand Down Expand Up @@ -299,11 +305,6 @@ func (o Objective) Burnrate(timerange time.Duration) string {
for _, s := range o.Indicator.Latency.Grouping {
groupingMap[s] = struct{}{}
}
for _, m := range o.Indicator.Latency.Total.LabelMatchers {
if m.Type == labels.MatchRegexp || m.Type == labels.MatchNotRegexp {
groupingMap[m.Name] = struct{}{}
}
}

grouping := make([]string, 0, len(groupingMap))
for s := range groupingMap {
Expand Down
Loading

0 comments on commit 70b3a1a

Please sign in to comment.