add monitoring scripts

This commit is contained in:
Peter Leurs 2025-08-15 23:09:48 +02:00
parent c51e72686e
commit 8c603d6ebd
5 changed files with 87 additions and 0 deletions

View file

@ -6,6 +6,16 @@ templatefiles:
- src: backupmanager.j2 - src: backupmanager.j2
dest: ~/backupmanager dest: ~/backupmanager
mode: "0755" mode: "0755"
- src: monitor@.service.j2
dest: ~/.config/systemd/user/monitor@.service
- src: monitor.socket.j2
dest: ~/.config/systemd/user/monitor.socket
- src: monitor.sh.j2
dest: ~/monitor.sh
mode: "0755"
- src: monitor-test.sh.j2
dest: ~/monitor-test.sh
mode: "0755"
backuptype: none backuptype: none
configdefinition: configdefinition:
"$id": "backup manager config" "$id": "backup manager config"
@ -72,3 +82,22 @@ configdefinition:
description: Repositories where the latest backup is older then timeout days will give a warning that there are no recent backups description: Repositories where the latest backup is older then timeout days will give a warning that there are no recent backups
required: required:
- repos - repos
exports:
monitoring:
checks:
- name: main
message: Backup manager activated
interval: 3600
type: string
okvalue: active
- name: lastrun
message: Errors last run
interval: 3600
type: string
okvalue: ""
- name: lastrunrecent
message: Backup manager did not run recently
interval: 3600
type: string
okvalue: "OK"

16
monitor-test.sh.j2 Normal file
View file

@ -0,0 +1,16 @@
#!/bin/bash
# Usage: ./execute_command_client.sh <command>
if [ $# -ne 1 ]; then
echo "Usage: $0 <command>"
exit 1
fi
command="$1"
# Connect to socket and send command
output=$(nc -U {{ statedir }}/{{ name }}.monitoring <<< "$command")
# Print output
echo "$output"

18
monitor.sh.j2 Normal file
View file

@ -0,0 +1,18 @@
#!/bin/bash
read -r command
case $command in
main)
systemctl is-active --user backup-manager.timer
;;
lastrun)
cat {{ homedir }}/.backupmanager.errors
;;
lastrunrecent)
[ -f {{ homedir }}/.backupmanager.errors ] && [ $(find {{ homedir }}/.backupmanager.errors -mtime -2) ] && echo "OK" || echo "outdated"
;;
*)
echo "Parameter unknown"
;;
esac

9
monitor.socket.j2 Normal file
View file

@ -0,0 +1,9 @@
[Unit]
Description=Execute Command Socket
[Socket]
ListenStream={{ statedir }}/{{ name }}.monitoring
Accept=yes
[Install]
WantedBy=sockets.target

15
monitor@.service.j2 Normal file
View file

@ -0,0 +1,15 @@
[Unit]
Description=Execute Command Service
After=network.target
Requires=monitor.socket
[Service]
Type=simple
ExecStart={{ homedir }}/monitor.sh
StandardInput=socket
StandardOutput=socket
TimeoutStopSec=5
RuntimeMaxSec=10
[Install]
WantedBy=sockets.target