From 8311ddfacade644073cd7cde6246c1fcae732119 Mon Sep 17 00:00:00 2001 From: leomargontier Date: Sat, 16 Sep 2023 14:33:38 +0200 Subject: [PATCH] python modified to be able to handle Json metrics def gauge() --- mqtt_exporter.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) mode change 100755 => 100644 mqtt_exporter.py diff --git a/mqtt_exporter.py b/mqtt_exporter.py old mode 100755 new mode 100644 index 9aac1aa..2650549 --- a/mqtt_exporter.py +++ b/mqtt_exporter.py @@ -455,10 +455,23 @@ def clear(self): def update(self, label_values, value): child = self.metric.labels(*label_values) + + # Check if value is a string that looks like a JSON object + if isinstance(value, str) and value.startswith('{') and value.endswith('}'): + try: + parsed_value = json.loads(value) + if 'value' in parsed_value: + value = float(parsed_value['value']) + else: + logging.warning(f"JSON object does not contain 'value' field: {value}") + except json.JSONDecodeError: + logging.warning(f"Failed to parse value as JSON: {value}") + child.set(value) return child + class CounterWrapper(): """ Wrapper to provide generic interface to Counter metric