From fc916739372dc444af5e5a3de94d6a36d101292e Mon Sep 17 00:00:00 2001 From: apulkin Date: Mon, 18 May 2026 15:49:38 +0300 Subject: [PATCH] add --- Mon Backup/backup-discovery.sh | 12 ++++++ Mon Backup/size_folder.sh | 42 +++++++++++++++++++ Mon Backup/time_folder.sh | 34 ++++++++++++++++ Mon Backup/zbx_export_templates.yaml | 61 ++++++++++++++++++++++++++++ test.txt | 0 5 files changed, 149 insertions(+) create mode 100644 Mon Backup/backup-discovery.sh create mode 100644 Mon Backup/size_folder.sh create mode 100644 Mon Backup/time_folder.sh create mode 100644 Mon Backup/zbx_export_templates.yaml create mode 100644 test.txt diff --git a/Mon Backup/backup-discovery.sh b/Mon Backup/backup-discovery.sh new file mode 100644 index 0000000..2cb6da4 --- /dev/null +++ b/Mon Backup/backup-discovery.sh @@ -0,0 +1,12 @@ +# nano /usr/lib/zabbix/externalscripts/backup-discovery.sh + +#!/bin/bash + +JSON=$(for i in `ls -l /opt/Backup | sed '1d' | awk '{print $9}'`; do printf "{\"{#BACKUP}\":\"$i\"},"; done | sed 's/^\(.*\).$/\1/') +printf "{\"data\":[" +printf "$JSON" +printf "]}" + +# UserParameter=backup.discovery[*],/usr/lib/zabbix/externalscripts/backup-discovery.sh +# chmod +x /usr/lib/zabbix/externalscripts/backup-discovery.sh +# chown zabbix:zabbix /usr/lib/zabbix/externalscripts/backup-discovery.sh diff --git a/Mon Backup/size_folder.sh b/Mon Backup/size_folder.sh new file mode 100644 index 0000000..9c87cb2 --- /dev/null +++ b/Mon Backup/size_folder.sh @@ -0,0 +1,42 @@ + +# nano /usr/lib/zabbix//externalscripts/size_folder.sh + +#!/bin/bash + + +BK_DIR="/opt/Backup" +SEARCH="$1" + +for SRV_NAME in "$BK_DIR"/*; do + + # Проверяем что это директория + [ -d "$SRV_NAME" ] || continue + SRV=$(basename "$SRV_NAME") + # Последний backup .rsc + LAST_BACKUP=$(ls -t "$SRV_NAME"/*.rsc 2>/dev/null | head -n 1) + + # Если backup найден + if [[ -n "$LAST_BACKUP" ]]; then + BSIZE=$(stat -c%s "$LAST_BACKUP") + BTIME=$(stat -c%y "$LAST_BACKUP" | cut -d'.' -f1) + BFILE=$(basename "$LAST_BACKUP") + else + BSIZE=0 + BTIME="N/A" + BFILE="N/A" + fi + + if [[ "$SRV" == "$SEARCH" ]]; then + echo "$BSIZE" + exit 0 + fi + +done + + +# nano /etc/zabbix/zabbix_agentd.d/backup_info.conf +# UserParameter=backup.size[*],/usr/lib/zabbix//externalscripts/size_folder.sh $1 +# chmod +x /usr/lib/zabbix//externalscripts/size_folder.sh +# chown zabbix:zabbix /usr/lib/zabbix//externalscripts/size_folder.sh + + diff --git a/Mon Backup/time_folder.sh b/Mon Backup/time_folder.sh new file mode 100644 index 0000000..dc07f5f --- /dev/null +++ b/Mon Backup/time_folder.sh @@ -0,0 +1,34 @@ +# nano /usr/lib/zabbix//externalscripts/time_folder.sh + + +#!/bin/bash + +BK_DIR="/opt/Backup" +TARGET="$1" +current_time=$(date +"%s") + +for srv in $(ls "$BK_DIR") +do + archive_path="$BK_DIR/$srv" + + # получаем время изменения файла/архива + backup_unix=$(stat -c %Y "$archive_path" 2>/dev/null) + + # если файл не найден — пропускаем + [ -z "$backup_unix" ] && continue + + # разница в минутах + diff_minutes=$(( (current_time - backup_unix) / 60 )) + + # вывод + if [ -n "$TARGET" ]; then + [ "$srv" = "$TARGET" ] && echo "$diff_minutes" + else + echo "$srv $diff_minutes" + fi +done + +# nano /etc/zabbix/zabbix_agentd.d/backup_info.conf +# UserParameter=backup.time[*],/usr/lib/zabbix//externalscripts/time_folder.sh $1 +# chmod +x /usr/lib/zabbix//externalscripts/time_folder.sh +# chown zabbix:zabbix /usr/lib/zabbix//externalscripts/time_folder.sh diff --git a/Mon Backup/zbx_export_templates.yaml b/Mon Backup/zbx_export_templates.yaml new file mode 100644 index 0000000..68cb844 --- /dev/null +++ b/Mon Backup/zbx_export_templates.yaml @@ -0,0 +1,61 @@ +zabbix_export: + version: '7.4' + template_groups: + - uuid: 23b4cb78db6e4cd194f3600a0006af6c + name: MyTemplates + - uuid: 7df96b18c230490a9a0a9e2307226338 + name: Templates + templates: + - uuid: b7c4f5b01c6d49cab7e150aefd1c4921 + template: 'Backup info' + name: 'Backup info' + groups: + - name: MyTemplates + - name: Templates + discovery_rules: + - uuid: 21402ff704aa4adfb2ffce69227a215e + name: 'Backup Dirs Discovery' + type: ZABBIX_ACTIVE + key: backup.discovery + delay: 10m + lifetime: 90d + enabled_lifetime_type: DISABLE_NEVER + item_prototypes: + - uuid: a993e4f83e0f4a4bb00879ae4d9d93f8 + name: 'Backup size {#BACKUP}' + type: ZABBIX_ACTIVE + key: 'backup.size[{#BACKUP}]' + delay: 30m + history: 90d + trends: 1000d + units: B + tags: + - tag: Application + value: Backup + trigger_prototypes: + - uuid: a1546ccaa7c2499db2dd20f31e8677e0 + expression: 'last(/Backup info/backup.size[{#BACKUP}])=0' + recovery_mode: RECOVERY_EXPRESSION + recovery_expression: 'last(/Backup info/backup.size[{#BACKUP}])>0' + name: 'Бэкап {#BACKUP} нулевого размера' + priority: HIGH + description: 'Последний бэкап создался с ошибкой, так как имеет нулевой размер.' + manual_close: 'YES' + - uuid: 98dad5a10fcf4f64908f6b78ed8f8646 + name: 'Backup time {#BACKUP}' + type: ZABBIX_ACTIVE + key: 'backup.time[{#BACKUP}]' + history: 10d + trends: '0' + tags: + - tag: Application + value: Backup + trigger_prototypes: + - uuid: a8803dabc06440bfb539452234ab6483 + expression: 'last(/Backup info/backup.time[{#BACKUP}])>1500' + recovery_mode: RECOVERY_EXPRESSION + recovery_expression: 'last(/Backup info/backup.time[{#BACKUP}])<1440' + name: 'Бэкап {#BACKUP} просрочен' + priority: HIGH + description: 'Дата создания последнего бэкапа больше суток.' + manual_close: 'YES' diff --git a/test.txt b/test.txt new file mode 100644 index 0000000..e69de29