Skip to content

Commit aff4d97

Browse files
authored
Merge pull request #2134 from machadovilaca/add-volume-mod-to-pvc-info-metric
feat: add volumemode to PVC info metric
2 parents a9bdda0 + 0d45f1a commit aff4d97

File tree

3 files changed

+29
-17
lines changed

3 files changed

+29
-17
lines changed

docs/persistentvolumeclaim-metrics.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
# PersistentVolumeClaim Metrics
22

3-
| Metric name | Metric type | Description | Unit (where applicable) | Labels/tags | Status |
4-
| ----------- | ------------- | ----------- | ----------- | ----------- | ----------- |
5-
| kube_persistentvolumeclaim_annotations | Gauge | | | `persistentvolumeclaim`=&lt;persistentvolumeclaim-name&gt; <br> `namespace`=&lt;persistentvolumeclaim-namespace&gt; <br> `annotation_PERSISTENTVOLUMECLAIM_ANNOTATION`=&lt;PERSISTENTVOLUMECLAIM_ANNOATION&gt; | EXPERIMENTAL |
6-
| kube_persistentvolumeclaim_access_mode | Gauge | | | `access_mode`=&lt;persistentvolumeclaim-access-mode&gt; <br>`namespace`=&lt;persistentvolumeclaim-namespace&gt; <br> `persistentvolumeclaim`=&lt;persistentvolumeclaim-name&gt; | STABLE |
7-
| kube_persistentvolumeclaim_info | Gauge | | | `namespace`=&lt;persistentvolumeclaim-namespace&gt; <br> `persistentvolumeclaim`=&lt;persistentvolumeclaim-name&gt; <br> `storageclass`=&lt;persistentvolumeclaim-storageclassname&gt;<br>`volumename`=&lt;volumename&gt; | STABLE |
8-
| kube_persistentvolumeclaim_labels | Gauge | | | `persistentvolumeclaim`=&lt;persistentvolumeclaim-name&gt; <br> `namespace`=&lt;persistentvolumeclaim-namespace&gt; <br> `label_PERSISTENTVOLUMECLAIM_LABEL`=&lt;PERSISTENTVOLUMECLAIM_LABEL&gt; | STABLE |
9-
| kube_persistentvolumeclaim_resource_requests_storage_bytes | Gauge | | | `namespace`=&lt;persistentvolumeclaim-namespace&gt; <br> `persistentvolumeclaim`=&lt;persistentvolumeclaim-name&gt; | STABLE |
10-
| kube_persistentvolumeclaim_status_condition | Gauge | | | `namespace` =&lt;persistentvolumeclaim-namespace&gt; <br> `persistentvolumeclaim`=&lt;persistentvolumeclaim-name&gt; <br> `type`=&lt;persistentvolumeclaim-condition-type&gt; <br> `status`=&lt;true\false\unknown&gt; | EXPERIMENTAL |
11-
| kube_persistentvolumeclaim_status_phase | Gauge | | | `namespace`=&lt;persistentvolumeclaim-namespace&gt; <br> `persistentvolumeclaim`=&lt;persistentvolumeclaim-name&gt; <br> `phase`=&lt;Pending\Bound\Lost&gt; | STABLE |
12-
| kube_persistentvolumeclaim_created | Gauge | Unix creation timestamp | seconds | `namespace`=&lt;persistentvolumeclaim-namespace&gt; <br> `persistentvolumeclaim`=&lt;persistentvolumeclaim-name&gt; | EXPERIMENTAL |
13-
| kube_persistentvolumeclaim_deletion_timestamp | Gauge | Unix deletion timestamp | seconds | `namespace`=&lt;persistentvolumeclaim-namespace&gt; <br> `persistentvolumeclaim`=&lt;persistentvolumeclaim-name&gt; | EXPERIMENTAL |
3+
| Metric name | Metric type | Description | Unit (where applicable) | Labels/tags | Status |
4+
| ----------- | ------------- | ----------- | ----------- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ----------- |
5+
| kube_persistentvolumeclaim_annotations | Gauge | | | `persistentvolumeclaim`=&lt;persistentvolumeclaim-name&gt; <br> `namespace`=&lt;persistentvolumeclaim-namespace&gt; <br> `annotation_PERSISTENTVOLUMECLAIM_ANNOTATION`=&lt;PERSISTENTVOLUMECLAIM_ANNOATION&gt; | EXPERIMENTAL |
6+
| kube_persistentvolumeclaim_access_mode | Gauge | | | `access_mode`=&lt;persistentvolumeclaim-access-mode&gt; <br>`namespace`=&lt;persistentvolumeclaim-namespace&gt; <br> `persistentvolumeclaim`=&lt;persistentvolumeclaim-name&gt; | STABLE |
7+
| kube_persistentvolumeclaim_info | Gauge | | | `namespace`=&lt;persistentvolumeclaim-namespace&gt; <br> `persistentvolumeclaim`=&lt;persistentvolumeclaim-name&gt; <br> `storageclass`=&lt;persistentvolumeclaim-storageclassname&gt;<br>`volumename`=&lt;volumename&gt;<br>`volumemode`=&lt;volumemode&gt; | STABLE |
8+
| kube_persistentvolumeclaim_labels | Gauge | | | `persistentvolumeclaim`=&lt;persistentvolumeclaim-name&gt; <br> `namespace`=&lt;persistentvolumeclaim-namespace&gt; <br> `label_PERSISTENTVOLUMECLAIM_LABEL`=&lt;PERSISTENTVOLUMECLAIM_LABEL&gt; | STABLE |
9+
| kube_persistentvolumeclaim_resource_requests_storage_bytes | Gauge | | | `namespace`=&lt;persistentvolumeclaim-namespace&gt; <br> `persistentvolumeclaim`=&lt;persistentvolumeclaim-name&gt; | STABLE |
10+
| kube_persistentvolumeclaim_status_condition | Gauge | | | `namespace` =&lt;persistentvolumeclaim-namespace&gt; <br> `persistentvolumeclaim`=&lt;persistentvolumeclaim-name&gt; <br> `type`=&lt;persistentvolumeclaim-condition-type&gt; <br> `status`=&lt;true\false\unknown&gt; | EXPERIMENTAL |
11+
| kube_persistentvolumeclaim_status_phase | Gauge | | | `namespace`=&lt;persistentvolumeclaim-namespace&gt; <br> `persistentvolumeclaim`=&lt;persistentvolumeclaim-name&gt; <br> `phase`=&lt;Pending\Bound\Lost&gt; | STABLE |
12+
| kube_persistentvolumeclaim_created | Gauge | Unix creation timestamp | seconds | `namespace`=&lt;persistentvolumeclaim-namespace&gt; <br> `persistentvolumeclaim`=&lt;persistentvolumeclaim-name&gt; | EXPERIMENTAL |
13+
| kube_persistentvolumeclaim_deletion_timestamp | Gauge | Unix deletion timestamp | seconds | `namespace`=&lt;persistentvolumeclaim-namespace&gt; <br> `persistentvolumeclaim`=&lt;persistentvolumeclaim-name&gt; | EXPERIMENTAL |
1414

1515
Note:
1616

internal/store/persistentvolumeclaim.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,17 @@ func persistentVolumeClaimMetricFamilies(allowAnnotationsList, allowLabelsList [
8989
wrapPersistentVolumeClaimFunc(func(p *v1.PersistentVolumeClaim) *metric.Family {
9090
storageClassName := getPersistentVolumeClaimClass(p)
9191
volumeName := p.Spec.VolumeName
92+
93+
volumeMode := ""
94+
if p.Spec.VolumeMode != nil {
95+
volumeMode = string(*p.Spec.VolumeMode)
96+
}
97+
9298
return &metric.Family{
9399
Metrics: []*metric.Metric{
94100
{
95-
LabelKeys: []string{"storageclass", "volumename"},
96-
LabelValues: []string{storageClassName, volumeName},
101+
LabelKeys: []string{"storageclass", "volumename", "volumemode"},
102+
LabelValues: []string{storageClassName, volumeName, volumeMode},
97103
Value: 1,
98104
},
99105
},

internal/store/persistentvolumeclaim_test.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929

3030
func TestPersistentVolumeClaimStore(t *testing.T) {
3131
storageClassName := "rbd"
32+
volumeMode := v1.PersistentVolumeBlock
3233
cases := []generateMetricsTestCase{
3334
// Verify phase enumerations.
3435
{
@@ -56,6 +57,7 @@ func TestPersistentVolumeClaimStore(t *testing.T) {
5657
},
5758
},
5859
VolumeName: "pvc-mysql-data",
60+
VolumeMode: &volumeMode,
5961
},
6062
Status: v1.PersistentVolumeClaimStatus{
6163
Phase: v1.ClaimBound,
@@ -84,7 +86,7 @@ func TestPersistentVolumeClaimStore(t *testing.T) {
8486
# TYPE kube_persistentvolumeclaim_status_phase gauge
8587
# TYPE kube_persistentvolumeclaim_status_condition gauge
8688
kube_persistentvolumeclaim_created{namespace="default",persistentvolumeclaim="mysql-data"} 1.5e+09
87-
kube_persistentvolumeclaim_info{namespace="default",persistentvolumeclaim="mysql-data",storageclass="rbd",volumename="pvc-mysql-data"} 1
89+
kube_persistentvolumeclaim_info{namespace="default",persistentvolumeclaim="mysql-data",storageclass="rbd",volumename="pvc-mysql-data",volumemode="Block"} 1
8890
kube_persistentvolumeclaim_status_phase{namespace="default",persistentvolumeclaim="mysql-data",phase="Bound"} 1
8991
kube_persistentvolumeclaim_status_phase{namespace="default",persistentvolumeclaim="mysql-data",phase="Lost"} 0
9092
kube_persistentvolumeclaim_status_phase{namespace="default",persistentvolumeclaim="mysql-data",phase="Pending"} 0
@@ -128,6 +130,7 @@ func TestPersistentVolumeClaimStore(t *testing.T) {
128130
},
129131
},
130132
VolumeName: "pvc-mysql-data",
133+
VolumeMode: &volumeMode,
131134
},
132135
Status: v1.PersistentVolumeClaimStatus{
133136
Phase: v1.ClaimBound,
@@ -156,7 +159,7 @@ func TestPersistentVolumeClaimStore(t *testing.T) {
156159
# TYPE kube_persistentvolumeclaim_status_phase gauge
157160
# TYPE kube_persistentvolumeclaim_status_condition gauge
158161
kube_persistentvolumeclaim_created{namespace="default",persistentvolumeclaim="mysql-data"} 1.5e+09
159-
kube_persistentvolumeclaim_info{namespace="default",persistentvolumeclaim="mysql-data",storageclass="rbd",volumename="pvc-mysql-data"} 1
162+
kube_persistentvolumeclaim_info{namespace="default",persistentvolumeclaim="mysql-data",storageclass="rbd",volumename="pvc-mysql-data",volumemode="Block"} 1
160163
kube_persistentvolumeclaim_status_phase{namespace="default",persistentvolumeclaim="mysql-data",phase="Bound"} 1
161164
kube_persistentvolumeclaim_status_phase{namespace="default",persistentvolumeclaim="mysql-data",phase="Lost"} 0
162165
kube_persistentvolumeclaim_status_phase{namespace="default",persistentvolumeclaim="mysql-data",phase="Pending"} 0
@@ -189,6 +192,7 @@ func TestPersistentVolumeClaimStore(t *testing.T) {
189192
},
190193
StorageClassName: &storageClassName,
191194
VolumeName: "pvc-prometheus-data",
195+
VolumeMode: &volumeMode,
192196
},
193197
Status: v1.PersistentVolumeClaimStatus{
194198
Phase: v1.ClaimPending,
@@ -210,7 +214,7 @@ func TestPersistentVolumeClaimStore(t *testing.T) {
210214
# TYPE kube_persistentvolumeclaim_status_phase gauge
211215
# TYPE kube_persistentvolumeclaim_status_condition gauge
212216
kube_persistentvolumeclaim_created{namespace="default",persistentvolumeclaim="prometheus-data"} 1.5e+09
213-
kube_persistentvolumeclaim_info{namespace="default",persistentvolumeclaim="prometheus-data",storageclass="rbd",volumename="pvc-prometheus-data"} 1
217+
kube_persistentvolumeclaim_info{namespace="default",persistentvolumeclaim="prometheus-data",storageclass="rbd",volumename="pvc-prometheus-data",volumemode="Block"} 1
214218
kube_persistentvolumeclaim_status_phase{namespace="default",persistentvolumeclaim="prometheus-data",phase="Bound"} 0
215219
kube_persistentvolumeclaim_status_phase{namespace="default",persistentvolumeclaim="prometheus-data",phase="Lost"} 0
216220
kube_persistentvolumeclaim_status_phase{namespace="default",persistentvolumeclaim="prometheus-data",phase="Pending"} 1
@@ -229,6 +233,7 @@ func TestPersistentVolumeClaimStore(t *testing.T) {
229233
AccessModes: []v1.PersistentVolumeAccessMode{
230234
v1.ReadWriteOnce,
231235
},
236+
VolumeMode: &volumeMode,
232237
},
233238
Status: v1.PersistentVolumeClaimStatus{
234239
Phase: v1.ClaimLost,
@@ -257,7 +262,7 @@ func TestPersistentVolumeClaimStore(t *testing.T) {
257262
# TYPE kube_persistentvolumeclaim_status_phase gauge
258263
# TYPE kube_persistentvolumeclaim_status_condition gauge
259264
kube_persistentvolumeclaim_created{namespace="",persistentvolumeclaim="mongo-data"} 1.5e+09
260-
kube_persistentvolumeclaim_info{namespace="",persistentvolumeclaim="mongo-data",storageclass="",volumename=""} 1
265+
kube_persistentvolumeclaim_info{namespace="",persistentvolumeclaim="mongo-data",storageclass="",volumename="",volumemode="Block"} 1
261266
kube_persistentvolumeclaim_status_phase{namespace="",persistentvolumeclaim="mongo-data",phase="Bound"} 0
262267
kube_persistentvolumeclaim_status_phase{namespace="",persistentvolumeclaim="mongo-data",phase="Lost"} 1
263268
kube_persistentvolumeclaim_status_phase{namespace="",persistentvolumeclaim="mongo-data",phase="Pending"} 0
@@ -293,6 +298,7 @@ func TestPersistentVolumeClaimStore(t *testing.T) {
293298
},
294299
},
295300
VolumeName: "pvc-postgresql-data",
301+
VolumeMode: &volumeMode,
296302
},
297303
Status: v1.PersistentVolumeClaimStatus{
298304
Phase: v1.ClaimBound,

0 commit comments

Comments
 (0)