#!/usr/bin/env python3 # https://pimylifeup.com/raspberry-pi-temperature/ import os import time import subprocess from prometheus_client import start_http_server, Gauge, REGISTRY, GC_COLLECTOR, PLATFORM_COLLECTOR, PROCESS_COLLECTOR REGISTRY.unregister(GC_COLLECTOR) REGISTRY.unregister(PLATFORM_COLLECTOR) REGISTRY.unregister(PROCESS_COLLECTOR) def setup_gauge(): g = Gauge(f'sys_cpu_temp_celsius_degrees', 'CPU Temperature', ['node_name']) g.set_function(_get_temp) g.labels(_get_node_name()) def _get_temp(): return float(subprocess.run(['/usr/bin/vcgencmd', 'measure_temp'], capture_output=True).stdout.decode('utf-8') .replace('temp=', '').replace("'C\n", '')) def _get_node_name(): # https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/ try: return os.environ['NODE_NAME'] except: return 'unknown-node' if __name__ == '__main__': setup_gauge() start_http_server(8555) while True: # Stay alive! time.sleep(1)