From c22f1d14e5e6dce37af3137d01fc00d836f61534 Mon Sep 17 00:00:00 2001
From: Sheogorath <sheogorath@shivering-isles.com>
Date: Sun, 8 Oct 2023 03:19:24 +0200
Subject: [PATCH] fix(nut-exporter): Adjust metrics to cotnain UPS name

---
 charts/nut-exporter/Chart.yaml                |  2 +-
 charts/nut-exporter/README.md                 |  4 ++--
 charts/nut-exporter/dashboards/default.json   | 22 +++++++++----------
 charts/nut-exporter/templates/podmonitor.yaml |  1 +
 charts/nut-exporter/values.yaml               |  6 ++---
 5 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/charts/nut-exporter/Chart.yaml b/charts/nut-exporter/Chart.yaml
index 5a4bc4a97..2972fae4e 100644
--- a/charts/nut-exporter/Chart.yaml
+++ b/charts/nut-exporter/Chart.yaml
@@ -13,5 +13,5 @@ sources:
   - https://github.com/acolombier/nut_exporter/tree/feat/add-helm-chart
 
 type: application
-version: 0.3.3
+version: 0.3.4
 appVersion: 3.0.0
diff --git a/charts/nut-exporter/README.md b/charts/nut-exporter/README.md
index ccdd0f011..b7bf285d7 100644
--- a/charts/nut-exporter/README.md
+++ b/charts/nut-exporter/README.md
@@ -1,6 +1,6 @@
 # nut-exporter
 
-![Version: 0.3.3](https://img.shields.io/badge/Version-0.3.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 3.0.0](https://img.shields.io/badge/AppVersion-3.0.0-informational?style=flat-square)
+![Version: 0.3.4](https://img.shields.io/badge/Version-0.3.4-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 3.0.0](https://img.shields.io/badge/AppVersion-3.0.0-informational?style=flat-square)
 
 Installs NUT exporter in Kubernetes
 
@@ -21,7 +21,7 @@ Installs NUT exporter in Kubernetes
 | image.repository | string | `"ghcr.io/druggeri/nut_exporter"` |  |
 | image.tag | string | `""` |  |
 | nodeSelector | object | `{}` |  |
-| podMonitor | object | `{"enabled":true,"labels":{},"params":{},"relabelings":[]}` | Enables podMonitor object for prometheus-operator based setups |
+| podMonitor | object | `{"enabled":true,"labels":{},"params":{},"relabelings":[{"source_labels":["__param_ups"],"target_label":"ups"}]}` | Enables podMonitor object for prometheus-operator based setups |
 | podMonitor.params | object | `{}` | parameters that are used on the scrape target required for functional dashboard |
 | podSecurityContext.runAsGroup | int | `3642` |  |
 | podSecurityContext.runAsNonRoot | bool | `true` |  |
diff --git a/charts/nut-exporter/dashboards/default.json b/charts/nut-exporter/dashboards/default.json
index 54a2abc89..5d9b12034 100755
--- a/charts/nut-exporter/dashboards/default.json
+++ b/charts/nut-exporter/dashboards/default.json
@@ -145,7 +145,7 @@
             "type": "prometheus",
             "uid": "${datasource}"
           },
-          "expr": "network_ups_tools_ups_status == 1",
+          "expr": "max by (ups, flag) (network_ups_tools_ups_status) == 1",
           "interval": "",
           "legendFormat": "{{flag}}",
           "refId": "A"
@@ -211,7 +211,7 @@
             "type": "prometheus",
             "uid": "${datasource}"
           },
-          "expr": "network_ups_tools_device_info{ups=\"$ups\"}",
+          "expr": "max by (ups, model, mfr, serial) (network_ups_tools_device_info{ups=\"$ups\"})",
           "interval": "",
           "legendFormat": "{{mfr}}",
           "refId": "A"
@@ -277,7 +277,7 @@
             "type": "prometheus",
             "uid": "${datasource}"
           },
-          "expr": "network_ups_tools_device_info{ups=\"$ups\"}",
+          "expr": "max by (ups, model, mfr, serial) (network_ups_tools_device_info{ups=\"$ups\"})",
           "interval": "",
           "legendFormat": "{{model}}",
           "refId": "A"
@@ -351,7 +351,7 @@
             "type": "prometheus",
             "uid": "${datasource}"
           },
-          "expr": "network_ups_tools_battery_charge{ups=\"$ups\"}",
+          "expr": "min by (ups) (network_ups_tools_battery_charge{ups=\"$ups\")}",
           "instant": false,
           "interval": "",
           "legendFormat": "",
@@ -431,7 +431,7 @@
             "type": "prometheus",
             "uid": "${datasource}"
           },
-          "expr": "network_ups_tools_battery_runtime{ups=\"$ups\"}",
+          "expr": "min by (ups) (network_ups_tools_battery_runtime{ups=\"$ups\")}",
           "interval": "",
           "legendFormat": "",
           "refId": "A"
@@ -540,7 +540,7 @@
             "type": "prometheus",
             "uid": "${datasource}"
           },
-          "expr": "network_ups_tools_ups_load{ups=\"$ups\"}",
+          "expr": "max by (ups) (network_ups_tools_ups_load{ups=\"$ups\"})",
           "interval": "",
           "legendFormat": "",
           "refId": "A"
@@ -635,7 +635,7 @@
             "type": "prometheus",
             "uid": "${datasource}"
           },
-          "expr": "network_ups_tools_battery_runtime{ups=\"$ups\"}",
+          "expr": "min by (ups) (network_ups_tools_battery_runtime{ups=\"$ups\"})",
           "interval": "",
           "legendFormat": "",
           "refId": "A"
@@ -710,7 +710,7 @@
             "type": "prometheus",
             "uid": "${datasource}"
           },
-          "expr": "network_ups_tools_input_voltage{ups=\"$ups\"}",
+          "expr": "avg by (ups) (network_ups_tools_input_voltage{ups=\"$ups\"})",
           "interval": "",
           "legendFormat": "",
           "refId": "A"
@@ -771,7 +771,7 @@
             "type": "prometheus",
             "uid": "${datasource}"
           },
-          "expr": "network_ups_tools_input_voltage{ups=\"$ups\"}",
+          "expr": "avg by (ups) (network_ups_tools_input_voltage{ups=\"$ups\"})",
           "interval": "",
           "legendFormat": "",
           "refId": "A"
@@ -888,7 +888,7 @@
             "type": "prometheus",
             "uid": "${datasource}"
           },
-          "expr": "network_ups_tools_battery_voltage{ups=\"$ups\"}",
+          "expr": "min by (ups) (network_ups_tools_battery_voltage{ups=\"$ups\"})",
           "interval": "",
           "legendFormat": "",
           "refId": "A"
@@ -949,7 +949,7 @@
             "type": "prometheus",
             "uid": "${datasource}"
           },
-          "expr": "network_ups_tools_battery_voltage{ups=\"$ups\"}",
+          "expr": "min by (ups) (network_ups_tools_battery_voltage{ups=\"$ups\"})",
           "interval": "",
           "legendFormat": "",
           "refId": "A"
diff --git a/charts/nut-exporter/templates/podmonitor.yaml b/charts/nut-exporter/templates/podmonitor.yaml
index a20f34470..537d71d98 100644
--- a/charts/nut-exporter/templates/podmonitor.yaml
+++ b/charts/nut-exporter/templates/podmonitor.yaml
@@ -26,6 +26,7 @@ spec:
       params:
         {{ toYaml . | nindent 8}}
       {{- end }}
+      {{- with .Values.podMonitor.metricLabels }}
   jobLabel: nut-exporter
   namespaceSelector:
     matchNames:
diff --git a/charts/nut-exporter/values.yaml b/charts/nut-exporter/values.yaml
index 9f7c3729b..ca99461cc 100644
--- a/charts/nut-exporter/values.yaml
+++ b/charts/nut-exporter/values.yaml
@@ -13,9 +13,9 @@ dashboard:
 podMonitor:
   enabled: true
   labels: {}
-  relabelings: []
-    # - replacement: "My UPS"
-    #   targetLabel: ups
+  relabelings:
+    - source_labels: [__param_ups]
+      target_label: ups
   # -- parameters that are used on the scrape target required for functional dashboard
   params: {}
     # ups:
-- 
GitLab