From f00e85ebbb1a1e0ad68aa489ebecdf40a070d876 Mon Sep 17 00:00:00 2001 From: Sebastian Widmer Date: Wed, 21 Dec 2022 17:14:32 +0100 Subject: [PATCH 1/2] Fix query on PV info change Can happen on CSI driver updates. --- .../appuio_cloud_persistent_storage.promql | 14 ++-- .../appuio_cloud_persistent_storage.jsonnet | 81 +++++++++++++++++++ 2 files changed, 89 insertions(+), 6 deletions(-) create mode 100644 pkg/db/seeds/promtest/appuio_cloud_persistent_storage.jsonnet diff --git a/pkg/db/seeds/appuio_cloud_persistent_storage.promql b/pkg/db/seeds/appuio_cloud_persistent_storage.promql index 19e2bb0..f3d6c09 100644 --- a/pkg/db/seeds/appuio_cloud_persistent_storage.promql +++ b/pkg/db/seeds/appuio_cloud_persistent_storage.promql @@ -26,12 +26,14 @@ sum_over_time( on (cluster_id,persistentvolume) group_left(storageclass) # Do not differantiate between regular and encrypted storage class versions. - label_replace( - kube_persistentvolume_info, - "storageclass", - "$1", - "storageclass", - "([^-]+)-encrypted" + min by (cluster_id, persistentvolume, storageclass) ( + label_replace( + kube_persistentvolume_info, + "storageclass", + "$1", + "storageclass", + "([^-]+)-encrypted" + ) ) * # Join the namespace label to get the tenant diff --git a/pkg/db/seeds/promtest/appuio_cloud_persistent_storage.jsonnet b/pkg/db/seeds/promtest/appuio_cloud_persistent_storage.jsonnet new file mode 100644 index 0000000..4a25d5e --- /dev/null +++ b/pkg/db/seeds/promtest/appuio_cloud_persistent_storage.jsonnet @@ -0,0 +1,81 @@ +local c = import 'common.libsonnet'; + +local query = importstr '../appuio_cloud_persistent_storage.promql'; + +local commonLabels = { + cluster_id: 'c-appuio-cloudscale-lpg-2', + tenant_id: 'c-appuio-cloudscale-lpg-2', +}; + +// One pvc, minimal (=1 byte) request +// 10 samples +local baseSeries = { + testprojectNamespaceOrgLabel: c.series('kube_namespace_labels', commonLabels { + namespace: 'testproject', + label_appuio_io_organization: 'cherry-pickers-inc', + }, '1x10'), + + local pvcID = 'pvc-da01b12d-2e31-44da-8312-f91169256221', + pvCapacity: c.series('kube_persistentvolume_capacity_bytes', commonLabels { + persistentvolume: pvcID, + }, '1x10'), + pvInfo: c.series('kube_persistentvolume_info', commonLabels { + persistentvolume: pvcID, + storageclass: 'ssd', + }, '1x10'), + pvcRef: c.series('kube_persistentvolume_claim_ref', commonLabels { + claim_namespace: 'testproject', + name: 'important-database', + persistentvolume: pvcID, + }, '1x10'), +}; + +local baseCalculatedLabels = { + category: 'c-appuio-cloudscale-lpg-2:testproject', + cluster_id: 'c-appuio-cloudscale-lpg-2', + namespace: 'testproject', + product: 'appuio_cloud_persistent_storage:c-appuio-cloudscale-lpg-2:cherry-pickers-inc:testproject:ssd', + storageclass: 'ssd', + tenant_id: 'cherry-pickers-inc', +}; + +{ + tests: [ + c.test('minimal PVC', + baseSeries, + query, + { + labels: c.formatLabels(baseCalculatedLabels), + value: 10, + }), + c.test('higher than 1GiB request', + baseSeries { + pvCapacity+: { + values: '%sx10' % (5 * 1024 * 1024 * 1024), + }, + }, + query, + { + labels: c.formatLabels(baseCalculatedLabels), + value: 5 * 10, + }), + + c.test('unrelated kube_persistentvolume_info changes do not throw errors - there is an overlap since series go stale only after a few missed scrapes', + baseSeries { + pvInfo+: { + values: '1x10 _x10 stale', + }, + pvInfoUpdated: self.pvInfo { + _labels+:: { + csi_volume_handle: '672004be-a86b-44e0-b446-1255a1f8b340', + }, + values: '_x5 1x15', + }, + }, + query, + { + labels: c.formatLabels(baseCalculatedLabels), + value: 10, + }), + ], +} From 31bcfe9008b58c9cb97a756b7aa0cdb7aa508ed0 Mon Sep 17 00:00:00 2001 From: Sebastian Widmer Date: Thu, 22 Dec 2022 14:27:22 +0100 Subject: [PATCH 2/2] Apply suggestions from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Christian Häusler <794584+corvus-ch@users.noreply.github.com> --- .../seeds/promtest/appuio_cloud_persistent_storage.jsonnet | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pkg/db/seeds/promtest/appuio_cloud_persistent_storage.jsonnet b/pkg/db/seeds/promtest/appuio_cloud_persistent_storage.jsonnet index 4a25d5e..b1a7a79 100644 --- a/pkg/db/seeds/promtest/appuio_cloud_persistent_storage.jsonnet +++ b/pkg/db/seeds/promtest/appuio_cloud_persistent_storage.jsonnet @@ -62,14 +62,11 @@ local baseCalculatedLabels = { c.test('unrelated kube_persistentvolume_info changes do not throw errors - there is an overlap since series go stale only after a few missed scrapes', baseSeries { - pvInfo+: { - values: '1x10 _x10 stale', - }, pvInfoUpdated: self.pvInfo { _labels+:: { csi_volume_handle: '672004be-a86b-44e0-b446-1255a1f8b340', }, - values: '_x5 1x15', + values: '_x5 1x5', }, }, query,