summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillermo Ramos2025-05-29 09:26:27 +0200
committerGuillermo Ramos2025-05-29 09:26:27 +0200
commitb73b01a56a19ab093566ecc55592801014bc1f61 (patch)
tree0ccd775bbb15406449c584f33cbf13f3b19b9a3e
downloadmicroservices-master.tar.gz
smarttmp_exporterHEADmaster
-rwxr-xr-xsmarttemp_exporter/smarttemp_exporter24
-rw-r--r--smarttemp_exporter/smarttemp_exporter.openrc14
2 files changed, 38 insertions, 0 deletions
diff --git a/smarttemp_exporter/smarttemp_exporter b/smarttemp_exporter/smarttemp_exporter
new file mode 100755
index 0000000..2cacb07
--- /dev/null
+++ b/smarttemp_exporter/smarttemp_exporter
@@ -0,0 +1,24 @@
+#!/bin/sh
+# Copyright 2023-2025 Guillermo Ramos <gramos@gramos.me>
+
+# Flush HTTP request
+while read -r LINE && ! echo "$LINE" | grep -qE '^\s*$'; do
+ true
+done
+
+printf 'HTTP/1.1 200 OK\n'
+printf 'Content-Type: text/plain\n\n'
+
+echo '# HELP smart_temp_celsius SMART drive temperature attribute'
+echo '# TYPE smart_temp_celsius gauge'
+
+drives="$(ls /dev/sd?)"
+for drive in $drives; do
+ smartdata="$(smartctl -a "$drive")"
+ serial="$(echo "$smartdata" | awk -F':[[:space:]]+' '$1 == "Serial Number" {print $2}')"
+ model="$(echo "$smartdata" | awk -F':[[:space:]]+' '$1 == "Device Model" {print $2}')"
+ temp="$(echo "$smartdata" | awk '$2 == "Temperature_Celsius" {print $10}')"
+ if [ -n "$serial" ] && [ -n "$model" ]; then
+ printf 'smart_temp_celsius{device="%s", model="%s", serial="%s"} %s\n' "$drive" "$model" "$serial" "$temp"
+ fi
+done
diff --git a/smarttemp_exporter/smarttemp_exporter.openrc b/smarttemp_exporter/smarttemp_exporter.openrc
new file mode 100644
index 0000000..6663f22
--- /dev/null
+++ b/smarttemp_exporter/smarttemp_exporter.openrc
@@ -0,0 +1,14 @@
+#!/sbin/openrc-run
+# Copyright 2023-2025 Guillermo Ramos <gramos@gramos.me>
+# Distributed under the terms of the GNU General Public License v2
+#
+# Requirements:
+# - perl
+# - ucspi-tcp
+
+command='/usr/bin/tcpserver'
+command_args='-H 0.0.0.0 9123 /usr/local/bin/smarttemp_exporter'
+command_background='true'
+pidfile="/run/${RC_SVCNAME}.pid"
+output_log="/var/log/${RC_SVCNAME}.log"
+error_log="/var/log/${RC_SVCNAME}.log"