2023-02-20 21:45:03 -08:00

54 lines
1.4 KiB
Python

#!/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}')
node_name_label = _get_node_name()
logging.info(f'Retrieved node_name label {node_name_label}')
g.labels(node_name=node_name_label)
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)