Compare commits

..

No commits in common. "3818707d450a70907848f225fa541eeb600ce1d8" and "8c603d6ebd1e78829f2e9547dea056d6ab62aafe" have entirely different histories.

6 changed files with 73 additions and 36 deletions

View file

@ -1,40 +1,22 @@
version: 3 mainunit: backup-manager.timer
mainunit: backup-manager mainunitfile: backup-manager.timer.j2
plugins:
- type: builtin
name: backups_none
- type: builtin
name: monitoring
config:
checks:
- name: main
message: Backup manager activated
interval: 3600
okvalue: active
command: systemctl is-active --user backup-manager.timer
- name: lastrun
message: Errors last run
interval: 3600
okvalue: ""
command: cat {{ homedir }}/.backupmanager.errors
- name: lastrunrecent
message: Backup manager did not run recently
interval: 3600
okvalue: "OK"
command: '[ -f {{ homedir }}/.backupmanager.errors ] && [ $(find {{ homedir }}/.backupmanager.errors -mtime -2) ] && echo "OK" || echo "outdated"'
enableunits:
- backup-manager.timer
templatefiles: templatefiles:
- src: backup-manager.timer.j2
dest: ~/.config/systemd/user/backup-manager.timer
- src: backup-manager.service.j2 - src: backup-manager.service.j2
dest: ~/.config/systemd/user/backup-manager.service dest: ~/.config/systemd/user/backup-manager.service
- 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 - src: monitor-test.sh.j2
dest: ~/monitor-test.sh dest: ~/monitor-test.sh
mode: "0755" mode: "0755"
backuptype: none
configdefinition: configdefinition:
"$id": "backup manager config" "$id": "backup manager config"
"$schema": "http://json-schema.org/draft-07/schema#" "$schema": "http://json-schema.org/draft-07/schema#"
@ -93,10 +75,6 @@ configdefinition:
type: boolean type: boolean
default: false default: false
description: An idle repository will never give warnings that there are no recent backups description: An idle repository will never give warnings that there are no recent backups
needscopy:
type: boolean
default: true
description: Will backup manager complain if there is no copy of the backup
timeout: timeout:
type: integer type: integer
# note that the default is also in the python code - in case the host isn't filled in # note that the default is also in the python code - in case the host isn't filled in
@ -104,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"

View file

@ -1,6 +1,5 @@
[Unit] [Unit]
Description=Sync backups Description=Sync backups
PartOf={{ mainunit }}
[Timer] [Timer]
OnCalendar=*-*-* 10:00:00 OnCalendar=*-*-* 10:00:00
@ -8,5 +7,5 @@ RandomizedDelaySec=3h
Persistent=true Persistent=true
[Install] [Install]
WantedBy={{ mainunit }} WantedBy=timers.target

View file

@ -243,8 +243,7 @@ for host in allhosts:
timeout = hosts[host]["timeout"] timeout = hosts[host]["timeout"]
if not idle: if not idle:
if not have_a_copy: if not have_a_copy:
if hosts[host]["needscopy"]: output_warning(f"We do not have a copy for {host}")
output_warning(f"We do not have a copy for {host}")
if most_recent_backup_ts < time.time()-(timeout*24*3600): if most_recent_backup_ts < time.time()-(timeout*24*3600):
output_warning(f"Last backup for {host} is too old") output_warning(f"Last backup for {host} is too old")

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