✨: restic munin plugins
This commit is contained in:
@@ -12,3 +12,4 @@ restic_aws_secret_access_key: !vault |
|
|||||||
38376163613837626435373134393630316235313032353738643537303162643538353966613833
|
38376163613837626435373134393630316235313032353738643537303162643538353966613833
|
||||||
34333735663939396433
|
34333735663939396433
|
||||||
restic_s3_url: "s3:http://backup.mateu.be:3900/backup"
|
restic_s3_url: "s3:http://backup.mateu.be:3900/backup"
|
||||||
|
restic_summary_log: "/var/log/restic/summary.json"
|
||||||
|
49
roles/munin_client/files/restic_backup
Normal file
49
roles/munin_client/files/restic_backup
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
config)
|
||||||
|
cat << 'EOF'
|
||||||
|
multigraph restic_file_processed
|
||||||
|
graph_title Files/dirs processed by restic
|
||||||
|
graph_vlabel Number of files/dirs processed by restic
|
||||||
|
graph_args --base 1000 -l 0
|
||||||
|
graph_category restic
|
||||||
|
files_new.label files_new
|
||||||
|
files_changed.label files_changed
|
||||||
|
files_unmodified.label files_unmodified
|
||||||
|
dirs_new.label dirs_new
|
||||||
|
dirs_changed.label dirs_changed
|
||||||
|
dirs_unmodified.label dirs_unmodified
|
||||||
|
EOF
|
||||||
|
cat << 'EOF'
|
||||||
|
multigraph restic_data_added
|
||||||
|
graph_title Data added to repo by restic
|
||||||
|
graph_vlabel Data added in bytes
|
||||||
|
graph_args --base 1024 -l 0
|
||||||
|
graph_category restic
|
||||||
|
data_added.label raw_data_added
|
||||||
|
data_added_packed.label compressed_data_added
|
||||||
|
EOF
|
||||||
|
cat << 'EOF'
|
||||||
|
multigraph restic_backup_duration
|
||||||
|
graph_title Restic backup duration
|
||||||
|
graph_vlabel Duration of restic backup (seconds)
|
||||||
|
graph_args --base 1000 -l 0
|
||||||
|
graph_category restic
|
||||||
|
total_duration.label total_duration
|
||||||
|
EOF
|
||||||
|
exit 0;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo "multigraph restic_file_processed"
|
||||||
|
echo "files_new.value $(cat ${RESTIC_SUMMARY_LOG} | jq -r .files_new)"
|
||||||
|
echo "files_changed.value $(cat ${RESTIC_SUMMARY_LOG} | jq -r .files_changed)"
|
||||||
|
echo "files_unmodified.value $(cat ${RESTIC_SUMMARY_LOG} | jq -r .files_unmodified)"
|
||||||
|
echo "dirs_new.value $(cat ${RESTIC_SUMMARY_LOG} | jq -r .dirs_new)"
|
||||||
|
echo "dirs_changed.value $(cat ${RESTIC_SUMMARY_LOG} | jq -r .dirs_changed)"
|
||||||
|
echo "dirs_unmodified.value $(cat ${RESTIC_SUMMARY_LOG} | jq -r .dirs_unmodified)"
|
||||||
|
echo "multigraph restic_data_added"
|
||||||
|
echo "data_added.value $(cat ${RESTIC_SUMMARY_LOG} | jq -r .data_added)"
|
||||||
|
echo "data_added_packed.value $(cat ${RESTIC_SUMMARY_LOG} | jq -r .data_added_packed)"
|
||||||
|
echo "multigraph restic_backup_duration"
|
||||||
|
echo "total_duration.value $(cat ${RESTIC_SUMMARY_LOG} | jq -r .total_duration)"
|
@@ -135,3 +135,8 @@
|
|||||||
- name: Execute specific garage commands
|
- name: Execute specific garage commands
|
||||||
ansible.builtin.include_tasks: garage.yml
|
ansible.builtin.include_tasks: garage.yml
|
||||||
when: "'garageservers' in group_names"
|
when: "'garageservers' in group_names"
|
||||||
|
|
||||||
|
# Specific restic commands
|
||||||
|
- name: Execute specific restic commands
|
||||||
|
ansible.builtin.include_tasks: restic.yml
|
||||||
|
when: "'resticservers' in group_names"
|
||||||
|
28
roles/munin_client/tasks/restic.yml
Normal file
28
roles/munin_client/tasks/restic.yml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: Ensure some packages are installed
|
||||||
|
ansible.builtin.package:
|
||||||
|
name:
|
||||||
|
- jq
|
||||||
|
state: present
|
||||||
|
update_cache: true
|
||||||
|
|
||||||
|
- name: Put restic plugin configuration
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: restic.j2
|
||||||
|
dest: /etc/munin/plugin-conf.d/restic
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0o640"
|
||||||
|
notify:
|
||||||
|
- Restart munin-node
|
||||||
|
|
||||||
|
- name: Put restic scripts
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: files/restic_backup
|
||||||
|
dest: /etc/munin/plugins/restic_backup
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0o755"
|
||||||
|
notify:
|
||||||
|
- Restart munin-node
|
3
roles/munin_client/templates/restic.j2
Normal file
3
roles/munin_client/templates/restic.j2
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
[restic_backup]
|
||||||
|
env.RESTIC_SUMMARY_LOG {{ restic_summary_log }}
|
||||||
|
|
@@ -6,8 +6,11 @@ export RESTIC_REPOSITORY="{{ restic_repository }}"
|
|||||||
export AWS_ACCESS_KEY_ID="{{ restic_aws_access_key_id }}"
|
export AWS_ACCESS_KEY_ID="{{ restic_aws_access_key_id }}"
|
||||||
export AWS_SECRET_ACCESS_KEY="{{ restic_aws_secret_access_key }}"
|
export AWS_SECRET_ACCESS_KEY="{{ restic_aws_secret_access_key }}"
|
||||||
|
|
||||||
|
## Prépare le répertoire de log
|
||||||
|
mkdir -p {{ restic_summary_log | dirname }}
|
||||||
|
|
||||||
## lancement de la sauvegarde
|
## lancement de la sauvegarde
|
||||||
{{ restic_path }} backup --exclude-caches {% for i in restic_backup_excluded_path %} -e {{ i }} {% endfor %} {% for i in restic_backup_path %}{{ i }} {% endfor %}
|
{{ restic_path }} backup --quiet --json --exclude-caches {% for i in restic_backup_excluded_path %} -e {{ i }} {% endfor %} {% for i in restic_backup_path %}{{ i }} {% endfor %} > {{ restic_summary_log }}
|
||||||
|
|
||||||
## récupération de l'espace
|
## récupération de l'espace
|
||||||
{{ restic_path }} forget --prune {{ restic_backup_retention }}
|
{{ restic_path }} forget --quiet --prune {{ restic_backup_retention }}
|
||||||
|
Reference in New Issue
Block a user