Skip to content

Commit d15cce1

Browse files
committed
jsonnet,test/rules: fix cluster:kubelet_volume_stats_used_bytes:provisioner:sum and add tests
1 parent c7528cc commit d15cce1

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

jsonnet/rules.jsonnet

+10-1
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,16 @@ local droppedKsmLabels = 'endpoint, instance, job, pod, service';
211211
record: 'cluster:kube_persistentvolumeclaim_resource_requests_storage_bytes:provisioner:sum',
212212
},
213213
{
214-
expr: 'sum by (provisioner) (kubelet_volume_stats_used_bytes * on (namespace,persistentvolumeclaim) group_right() (kube_persistentvolumeclaim_info * on (storageclass) group_left(provisioner) kube_storageclass_info))',
214+
expr: |||
215+
sum by (provisioner) (
216+
topk by (namespace, persistentvolumeclaim) (
217+
1, kubelet_volume_stats_used_bytes
218+
) * on (namespace,persistentvolumeclaim) group_right()
219+
topk by (namespace, persistentvolumeclaim) (
220+
1, kube_persistentvolumeclaim_info * on(storageclass) group_left(provisioner) topk by(storageclass) (1, max by(storageclass, provisioner) (kube_storageclass_info))
221+
)
222+
)
223+
|||,
215224
record: 'cluster:kubelet_volume_stats_used_bytes:provisioner:sum',
216225
},
217226
{

test/rules/bz1879520.yaml

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Tests for https://bugzilla.redhat.com/show_bug.cgi?id=1879520.
2+
# Having more than one storage class tied to one provisioner can lead to
3+
# problems with many-to-many matching. Recording rule need to account for this.
4+
5+
rule_files:
6+
- rules.yaml
7+
8+
evaluation_interval: 30s
9+
10+
tests:
11+
- interval: 1m
12+
input_series:
13+
- series: 'kube_storageclass_info{endpoint="https-main",instance="10.130.2.7:8443",job="kube-state-metrics",namespace="openshift-monitoring",pod="kube-state-metrics-6674fd6cfd-4crcl",provisioner="kubernetes.io/gce-pd",reclaimPolicy="Delete",service="kube-state-metrics",storageclass="standard",volumeBindingMode="WaitForFirstConsumer"}'
14+
values: '1+0x5'
15+
- series: 'kube_persistentvolumeclaim_info{endpoint="https-main",instance="10.130.2.7:8443",job="kube-state-metrics",namespace="xiuwang",persistentvolumeclaim="jenkins",pod="kube-state-metrics-6674fd6cfd-4crcl",service="kube-state-metrics",storageclass="standard",volumename="pvc-555e1a2c-326d-42f6-a914-512a720574e0"}'
16+
values: '1+0x5'
17+
- series: 'kubelet_volume_stats_used_bytes{endpoint="https-metrics",instance="10.0.32.5:10250",job="kubelet",metrics_path="/metrics",namespace="xiuwang",node="dyan-upg0916-09160342-w-a-l-rhel-0",persistentvolumeclaim="jenkins",service="kubelet"}'
18+
values: '336764928+0x5'
19+
promql_expr_test:
20+
- expr: cluster:kubelet_volume_stats_used_bytes:provisioner:sum
21+
eval_time: 1m
22+
exp_samples:
23+
- labels: 'cluster:kubelet_volume_stats_used_bytes:provisioner:sum{provisioner="kubernetes.io/gce-pd"}'
24+
value: 3.36764928E+08
25+
- interval: 1m
26+
input_series:
27+
- series: 'kube_storageclass_info{endpoint="https-main",instance="10.130.2.7:8443",job="kube-state-metrics",namespace="openshift-monitoring",pod="kube-state-metrics-6674fd6cfd-4crcl",prometheus="openshift-monitoring/k8s",provisioner="kubernetes.io/gce-pd",reclaimPolicy="Delete",service="kube-state-metrics",storageclass="standard",volumeBindingMode="WaitForFirstConsumer"}'
28+
values: '1+0x5'
29+
- series: 'kube_persistentvolumeclaim_info{endpoint="https-main",instance="10.130.2.7:8443",job="kube-state-metrics",namespace="xiuwang",persistentvolumeclaim="jenkins",pod="kube-state-metrics-6674fd6cfd-4crcl",prometheus="openshift-monitoring/k8s",service="kube-state-metrics",storageclass="standard",volumename="pvc-555e1a2c-326d-42f6-a914-512a720574e0"}'
30+
values: '1+0x5'
31+
- series: 'kubelet_volume_stats_used_bytes{endpoint="https-metrics",instance="192.168.101.30:10250",job="kubelet",metrics_path="/metrics",namespace="xiuwang",node="scdosw1054.ocpnpr01.npr.isaq.app",persistentvolumeclaim="jenkins",prometheus="openshift-monitoring/k8s",service="kubelet"}'
32+
values: '336764921+0x5'
33+
- series: 'kubelet_volume_stats_used_bytes{endpoint="https-metrics",instance="192.168.101.23:10250",job="kubelet",metrics_path="/metrics",namespace="xiuwang",node="scdosw1051.ocpnpr01.npr.isaq.app",persistentvolumeclaim="jenkins",prometheus="openshift-monitoring/k8s",service="kubelet"}'
34+
values: '336764928+0x5'
35+
promql_expr_test:
36+
- expr: cluster:kubelet_volume_stats_used_bytes:provisioner:sum
37+
eval_time: 1m
38+
exp_samples:
39+
- labels: 'cluster:kubelet_volume_stats_used_bytes:provisioner:sum{provisioner="kubernetes.io/gce-pd"}'
40+
value: 3.36764928E+08

0 commit comments

Comments
 (0)