Skip to content

Commit 7e65d91

Browse files
Refactor quota overcommit rules (#1089)
Similar to #1087, this commit refactors the KubeCPUQuotaOvercommit and KubeMemoryQuotaOvercommit alerting rules to reduce duplication. Signed-off-by: Simon Pasquier <[email protected]>
1 parent 9251df6 commit 7e65d91

File tree

1 file changed

+31
-46
lines changed

1 file changed

+31
-46
lines changed

alerts/resource_alerts.libsonnet

Lines changed: 31 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,27 @@ local utils = import '../lib/utils.libsonnet';
5656
)
5757
||| % $._config { resource: resource },
5858

59+
local kubeQuotaOvercommitExpression(resource) = if $._config.showMultiCluster then
60+
|||
61+
sum by(%(clusterLabel)s) (
62+
min without(resource) (kube_resourcequota{%(prefixedNamespaceSelector)s%(kubeStateMetricsSelector)s, type="hard", resource=~"(%(resource)s|requests.%(resource)s)"})
63+
)
64+
/
65+
sum by(%(clusterLabel)s) (
66+
kube_node_status_allocatable{resource="%(resource)s", %(kubeStateMetricsSelector)s}
67+
) > %(namespaceOvercommitFactor)s
68+
||| % $._config { resource: resource }
69+
else
70+
|||
71+
sum (
72+
min without(resource) (kube_resourcequota{%(prefixedNamespaceSelector)s%(kubeStateMetricsSelector)s, type="hard", resource=~"(%(resource)s|requests.%(resource)s)"})
73+
)
74+
/
75+
sum (
76+
kube_node_status_allocatable{resource="%(resource)s", %(kubeStateMetricsSelector)s}
77+
) > %(namespaceOvercommitFactor)s
78+
||| % $._config { resource: resource },
79+
5980
_config+:: {
6081
kubeStateMetricsSelector: error 'must provide selector for kube-state-metrics',
6182
nodeExporterSelector: error 'must provide selector for node-exporter',
@@ -114,63 +135,27 @@ local utils = import '../lib/utils.libsonnet';
114135
},
115136
annotations: {
116137
summary: 'Cluster has overcommitted CPU resource requests.',
138+
description: 'Cluster%s has overcommitted CPU resource requests for Namespaces.' % [
139+
utils.ifShowMultiCluster($._config, ' {{ $labels.%(clusterLabel)s }}' % $._config),
140+
],
117141
},
142+
expr: kubeQuotaOvercommitExpression('cpu'),
118143
'for': '5m',
119-
} +
120-
if $._config.showMultiCluster then {
121-
expr: |||
122-
sum(min without(resource) (kube_resourcequota{%(prefixedNamespaceSelector)s%(kubeStateMetricsSelector)s, type="hard", resource=~"(cpu|requests.cpu)"})) by (%(clusterLabel)s)
123-
/
124-
sum(kube_node_status_allocatable{resource="cpu", %(kubeStateMetricsSelector)s}) by (%(clusterLabel)s)
125-
> %(namespaceOvercommitFactor)s
126-
||| % $._config,
127-
annotations+: {
128-
description: 'Cluster {{ $labels.%(clusterLabel)s }} has overcommitted CPU resource requests for Namespaces.' % $._config,
129-
},
130-
} else
131-
{
132-
expr: |||
133-
sum(min without(resource) (kube_resourcequota{%(prefixedNamespaceSelector)s%(kubeStateMetricsSelector)s, type="hard", resource=~"(cpu|requests.cpu)"}))
134-
/
135-
sum(kube_node_status_allocatable{resource="cpu", %(kubeStateMetricsSelector)s})
136-
> %(namespaceOvercommitFactor)s
137-
||| % $._config,
138-
annotations+: {
139-
description: 'Cluster has overcommitted CPU resource requests for Namespaces.',
140-
},
141-
},
144+
},
142145
{
143146
alert: 'KubeMemoryQuotaOvercommit',
144147
labels: {
145148
severity: 'warning',
146149
},
147150
annotations: {
148151
summary: 'Cluster has overcommitted memory resource requests.',
152+
description: 'Cluster%s has overcommitted memory resource requests for Namespaces.' % [
153+
utils.ifShowMultiCluster($._config, ' {{ $labels.%(clusterLabel)s }}' % $._config),
154+
],
149155
},
156+
expr: kubeQuotaOvercommitExpression('memory'),
150157
'for': '5m',
151-
} +
152-
if $._config.showMultiCluster then {
153-
expr: |||
154-
sum(min without(resource) (kube_resourcequota{%(prefixedNamespaceSelector)s%(kubeStateMetricsSelector)s, type="hard", resource=~"(memory|requests.memory)"})) by (%(clusterLabel)s)
155-
/
156-
sum(kube_node_status_allocatable{resource="memory", %(kubeStateMetricsSelector)s}) by (%(clusterLabel)s)
157-
> %(namespaceOvercommitFactor)s
158-
||| % $._config,
159-
annotations+: {
160-
description: 'Cluster {{ $labels.%(clusterLabel)s }} has overcommitted memory resource requests for Namespaces.' % $._config,
161-
},
162-
} else
163-
{
164-
expr: |||
165-
sum(min without(resource) (kube_resourcequota{%(prefixedNamespaceSelector)s%(kubeStateMetricsSelector)s, type="hard", resource=~"(memory|requests.memory)"}))
166-
/
167-
sum(kube_node_status_allocatable{resource="memory", %(kubeStateMetricsSelector)s})
168-
> %(namespaceOvercommitFactor)s
169-
||| % $._config,
170-
annotations+: {
171-
description: 'Cluster has overcommitted memory resource requests for Namespaces.',
172-
},
173-
},
158+
},
174159
{
175160
alert: 'KubeQuotaAlmostFull',
176161
expr: |||

0 commit comments

Comments
 (0)