Compare commits
No commits in common. "3818707d450a70907848f225fa541eeb600ce1d8" and "8c603d6ebd1e78829f2e9547dea056d6ab62aafe" have entirely different histories.
3818707d45
...
8c603d6ebd
6 changed files with 73 additions and 36 deletions
61
appinfo.yml
61
appinfo.yml
|
|
@ -1,40 +1,22 @@
|
|||
version: 3
|
||||
mainunit: backup-manager
|
||||
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
|
||||
mainunit: backup-manager.timer
|
||||
mainunitfile: backup-manager.timer.j2
|
||||
templatefiles:
|
||||
- src: backup-manager.timer.j2
|
||||
dest: ~/.config/systemd/user/backup-manager.timer
|
||||
- src: backup-manager.service.j2
|
||||
dest: ~/.config/systemd/user/backup-manager.service
|
||||
- src: backupmanager.j2
|
||||
dest: ~/backupmanager
|
||||
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
|
||||
configdefinition:
|
||||
"$id": "backup manager config"
|
||||
"$schema": "http://json-schema.org/draft-07/schema#"
|
||||
|
|
@ -93,10 +75,6 @@ configdefinition:
|
|||
type: boolean
|
||||
default: false
|
||||
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:
|
||||
type: integer
|
||||
# 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
|
||||
required:
|
||||
- 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"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
[Unit]
|
||||
Description=Sync backups
|
||||
PartOf={{ mainunit }}
|
||||
|
||||
[Timer]
|
||||
OnCalendar=*-*-* 10:00:00
|
||||
|
|
@ -8,5 +7,5 @@ RandomizedDelaySec=3h
|
|||
Persistent=true
|
||||
|
||||
[Install]
|
||||
WantedBy={{ mainunit }}
|
||||
WantedBy=timers.target
|
||||
|
||||
|
|
|
|||
|
|
@ -243,7 +243,6 @@ for host in allhosts:
|
|||
timeout = hosts[host]["timeout"]
|
||||
if not idle:
|
||||
if not have_a_copy:
|
||||
if hosts[host]["needscopy"]:
|
||||
output_warning(f"We do not have a copy for {host}")
|
||||
if most_recent_backup_ts < time.time()-(timeout*24*3600):
|
||||
output_warning(f"Last backup for {host} is too old")
|
||||
|
|
|
|||
18
monitor.sh.j2
Normal file
18
monitor.sh.j2
Normal 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
9
monitor.socket.j2
Normal 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
15
monitor@.service.j2
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue