#!/usr/bin/env python3 # https://pimylifeup.com/raspberry-pi-temperature/ import logging import os import time import subprocess import sys 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) logging.basicConfig(stream=sys.stdout, level=logging.DEBUG) def setup_gauge(): logging.info('Setting up Gauge') g = Gauge(f'sys_cpu_temp_celsius_degrees', 'CPU Temperature', ['node_name']) logging.info(f'Created Gauge: {g}') labels = [_get_node_name()] logging.info(f'Retrieved labels {labels}') g.labels(labels) logging.info('Setting function for Gauge') g.set_function(_get_temp) def _get_temp(): temp = float(subprocess.run(['/usr/bin/vcgencmd', 'measure_temp'], capture_output=True).stdout.decode('utf-8') .replace('temp=', '').replace("'C\n", '')) logging.info(f'Got temp: {temp}') return temp 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)