From d663f3336b82c4167e1653d96d77e44d4e86eef5 Mon Sep 17 00:00:00 2001 From: gerviba Date: Sun, 1 Nov 2026 21:17:24 +0100 Subject: [PATCH] Add ha_probe to the workflow --- .gitea/workflows/build.yml | 3 + config.json | 164 ++++++++++++++++ config.lab1.json | 184 ++++++++++++++++++ probe | 10 + .../kotlin/hu/gerviba/probe/ConfigLoader.kt | 2 +- 5 files changed, 362 insertions(+), 1 deletion(-) create mode 100644 config.json create mode 100644 config.lab1.json create mode 100644 probe diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 3784266..1039537 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -33,3 +33,6 @@ jobs: - name: Publish jar run: cp build/libs/probe-all.jar /output/probe.jar + + - name: Package ha_probe component + run: tar -cf /output/ha_probe.tar -C custom_components ha_probe diff --git a/config.json b/config.json new file mode 100644 index 0000000..9c0f056 --- /dev/null +++ b/config.json @@ -0,0 +1,164 @@ +{ + "haId": "hacluster", + "haDisplayName": "HaCluster", + "webServerEnabled": true, + "webServerToken": null, + "webServerPort": null, + "haUrl": "http://127.0.0.1:5123", + "webhookToken": null, + "measurements": [ + { + "type": "nvidia", + "name": "NVIDIA GeForce RTX 4090", + "args": [], + "haId": "nvidia_4090", + "haDisplayName": "Nvidia RTX 4090 OC", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "folder", + "name": "/home/gerviba/workspaces/systemmonitor", + "args": [], + "haId": "systemonitor", + "haDisplayName": "SystemMonitor folder size", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "folder", + "name": "/home/gerviba/workspaces", + "args": [], + "haId": "workspaces", + "haDisplayName": "Workspaces folder size", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "disc", + "name": "", + "args": [], + "haId": "disc", + "haDisplayName": "HaCluster disc", + "frequency": "EVERY_HOUR", + "device": "default" + }, + { + "type": "sensor", + "name": "coretemp-isa-0000.Package id 0", + "args": [], + "haId": "cpu-temperature", + "haDisplayName": "Cpu temperature", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "utilization", + "name": "cpu", + "args": [], + "haId": "cpu", + "haDisplayName": "Cpu utilization", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "utilization", + "name": "ram", + "args": [], + "haId": "memory", + "haDisplayName": "Memory utilization", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "utilization", + "name": "swap", + "args": [], + "haId": "swap", + "haDisplayName": "Swap utilization", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "utilization", + "name": "uptime", + "args": [], + "haId": "uptime", + "haDisplayName": "Uptime", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "utilization", + "name": "load1", + "args": [], + "haId": "load1", + "haDisplayName": "Load average 1m", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "utilization", + "name": "load5", + "args": [], + "haId": "load5", + "haDisplayName": "Load average 5m", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "utilization", + "name": "load15", + "args": [], + "haId": "load15", + "haDisplayName": "Load average 15m", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "docker", + "name": "naughty_rosalind", + "args": [], + "haId": "nginx-test", + "haDisplayName": "Nginx Test", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "event", + "name": "backup_success", + "args": [], + "haId": "backup_success", + "haDisplayName": "Last successful backup", + "device": "default" + }, + { + "type": "event", + "name": "backup_error", + "args": [], + "haId": "backup_error", + "haDisplayName": "Last failed backup", + "device": "default" + } + ], + "devices": [ + { + "haId": "default", + "haDisplayName": "lab1" + } + ], + "services": [ + { + "type": "cmd", + "name": "notify1", + "command": ["notify-send", "'Hello world!'", "'This is an example notification.'", "--icon=dialog-information"], + "waitFor": true + }, + { + "type": "cmd", + "name": "notify2", + "command": ["notify-send", "'Hello world!'", "'This is an example notification.'", "--icon=dialog-warning"], + "waitFor": true + } + ] +} diff --git a/config.lab1.json b/config.lab1.json new file mode 100644 index 0000000..241a0c7 --- /dev/null +++ b/config.lab1.json @@ -0,0 +1,184 @@ +{ + "haId": "lab1", + "haDisplayName": "lab1", + "webServerEnabled": true, + "webServerToken": null, + "webServerPort": 7000, + "haUrl": "https://ha.home.p75.dev/", + "webhookToken": null, + "measurements": [ + { + "type": "folder", + "name": "/home/clustermaster/backup", + "args": [], + "haId": "backup-folder", + "haDisplayName": "Backup folder size", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "folder", + "name": "/home/clustermaster/storage/cdn/serve", + "args": [], + "haId": "cdn-folder", + "haDisplayName": "CDN folder size", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "disc", + "name": "", + "args": [], + "haId": "disc", + "haDisplayName": "HaCluster disc", + "frequency": "EVERY_HOUR", + "device": "default" + }, + { + "type": "sensor", + "name": "coretemp-isa-0000.Package id 0", + "args": [], + "haId": "cpu-temperature", + "haDisplayName": "Cpu temperature", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "utilization", + "name": "cpu", + "args": [], + "haId": "cpu", + "haDisplayName": "Cpu utilization", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "utilization", + "name": "ram", + "args": [], + "haId": "memory", + "haDisplayName": "Memory utilization", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "utilization", + "name": "swap", + "args": [], + "haId": "swap", + "haDisplayName": "Swap utilization", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "utilization", + "name": "uptime", + "args": [], + "haId": "uptime", + "haDisplayName": "Uptime", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "utilization", + "name": "load1", + "args": [], + "haId": "load1", + "haDisplayName": "Load average 1m", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "utilization", + "name": "load5", + "args": [], + "haId": "load5", + "haDisplayName": "Load average 5m", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "utilization", + "name": "load15", + "args": [], + "haId": "load15", + "haDisplayName": "Load average 15m", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "docker", + "name": "homeassistant-jq955wq9px6u6lswj5evxtgc", + "args": [], + "haId": "docker-ha", + "haDisplayName": "HomeAssistant", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "docker", + "name": "gitea-mlesqvh0mqkrhpkfblmnylsy", + "args": [], + "haId": "docker-gitea", + "haDisplayName": "Gitea", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "docker", + "name": "runner-mlesqvh0mqkrhpkfblmnylsy", + "args": [], + "haId": "docker-gitea-runner", + "haDisplayName": "Gitea Runner", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "docker", + "name": "vaultwarden-sm1wplp110l3ierkzk1kx5iw", + "args": [], + "haId": "docker-vaultwarden", + "haDisplayName": "VaultWarden", + "frequency": "EVERY_MINUTE", + "device": "default" + }, + { + "type": "event", + "name": "backup_success", + "args": [], + "haId": "backup_success", + "haDisplayName": "Last successful backup", + "device": "default" + }, + { + "type": "event", + "name": "backup_error", + "args": [], + "haId": "backup_error", + "haDisplayName": "Last failed backup", + "device": "default" + }, + { + "type": "event", + "name": "test_event", + "args": [], + "haId": "test_event", + "haDisplayName": "Test event", + "device": "default" + } + ], + "devices": [ + { + "haId": "default", + "haDisplayName": "lab1" + } + ], + "services": [ + { + "type": "cmd", + "name": "backup-now", + "command": ["sh", "/home/clustermaster/do-backup.sh"], + "waitFor": true + } + ] +} diff --git a/probe b/probe new file mode 100644 index 0000000..29e41c2 --- /dev/null +++ b/probe @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +# Wrapper for probe.jar - passes all arguments through. + +PROBE_JAR="/home/clustermaster/storage/cdn/serve/internal/probe/probe.jar" + +WORKDIR="/home/clustermaster/probe" + +cd "$WORKDIR" || { echo "probe: cannot cd to $WORKDIR" >&2; exit 1; } + +exec java -jar "$PROBE_JAR" "$@" diff --git a/src/main/kotlin/hu/gerviba/probe/ConfigLoader.kt b/src/main/kotlin/hu/gerviba/probe/ConfigLoader.kt index 53b84e5..26e0804 100644 --- a/src/main/kotlin/hu/gerviba/probe/ConfigLoader.kt +++ b/src/main/kotlin/hu/gerviba/probe/ConfigLoader.kt @@ -28,7 +28,7 @@ data class SensorRecord( val args: List = listOf(), val haId: String, val haDisplayName: String, - val frequency: SchedulerFrequency, + val frequency: SchedulerFrequency = SchedulerFrequency.EVERY_MINUTE, val device: String = "default" )