41 lines
1.0 KiB
Python
41 lines
1.0 KiB
Python
#!/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)
|