monitoring: kuma heartbeat + systemd timer for zigbee coordinator
Refs #3
This commit is contained in:
@@ -1,2 +1,5 @@
|
|||||||
output/
|
output/
|
||||||
secrets.h
|
secrets.h
|
||||||
|
|
||||||
|
# zigbee coordinator -> uptime kuma push token
|
||||||
|
infra/.secrets/
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Zigbee coordinator heartbeat to Uptime Kuma
|
||||||
|
After=docker.service
|
||||||
|
Requires=docker.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/root/nr-flow-validator/infra/zigbee2mqtt/scripts/kuma-heartbeat.sh
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Run zigbee coordinator heartbeat every minute
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
OnCalendar=*-*-* *:*:00
|
||||||
|
AccuracySec=5s
|
||||||
|
Persistent=true
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
||||||
Executable
+29
@@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -u
|
||||||
|
|
||||||
|
KUMA_BASE="https://up.notsosm.art"
|
||||||
|
TOKEN_FILE="/root/nr-flow-validator/infra/.secrets/kuma-push-token"
|
||||||
|
|
||||||
|
[ -s "$TOKEN_FILE" ] || exit 1
|
||||||
|
TOKEN="$(tr -d '[:space:]' < "$TOKEN_FILE")"
|
||||||
|
|
||||||
|
reason=""
|
||||||
|
|
||||||
|
state=$(docker exec mosquitto mosquitto_sub -h 127.0.0.1 -t "zigbee2mqtt/bridge/state" -C 1 -W 10 2>/dev/null | tr -d '[:space:]')
|
||||||
|
if [ "$state" != '{"state":"online"}' ]; then
|
||||||
|
reason="bridge_state=${state:-none}"
|
||||||
|
else
|
||||||
|
running=$(docker inspect zigbee2mqtt --format '{{.State.Running}}' 2>/dev/null)
|
||||||
|
[ "$running" = "true" ] || reason="${reason}container_running=${running:-unknown}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$reason" ]; then
|
||||||
|
status="down"
|
||||||
|
msg="coordinator: ${reason}"
|
||||||
|
else
|
||||||
|
status="up"
|
||||||
|
msg="coordinator ok"
|
||||||
|
fi
|
||||||
|
|
||||||
|
curl -fsS -m 10 -o /dev/null "$KUMA_BASE/api/push/$TOKEN?status=$status&msg=$msg" 2>/dev/null
|
||||||
|
exit 0
|
||||||
Reference in New Issue
Block a user