Проверяем вывод команды zpool status -x
Если он не дает "all pools are healthy" - высылаем отчет на e-mail.
Высылаем лог файл по вторникам в любома случае
wget -P /root https://eas1804.github.io/Proxmox/sh/zfs-check.sh
chmod +x /root/zfs-check.sh
Задать e-mail в скрипте!
wget -P /etc/systemd/system/ https://eas1804.github.io/Proxmox/sh/zfs-check.service
wget -P /etc/systemd/system/ https://eas1804.github.io/Proxmox/sh/zfs-check.timer
#!/bin/bash
# Настройки
MAIL_TO="admin@srv.com"
IP=$(ip -4 addr show vmbr0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
ZPOOL="rpool"
HOSTNAME=$(hostname)
LOG="/var/log/zfs.log"
date > ${LOG}
zpool status >> ${LOG}
zpool list >> ${LOG}
# Проверка статуса пула
STATUS=$(zpool status -x)
# Если есть проблемы (не "all pools are healthy")
if [[ "$STATUS" != "all pools are healthy" ]]; then
mutt -s "!!!PROBLEM ZFS. ip:$IP. ${HOSTNAME} " -- ${MAIL_TO} < ${LOG}
fi
# Отправить лог по вторникам
# Получаем номер дня недели: 2 — вторник (1 — понедельник, 7 — воскресенье)
DOW=$(date +%u)
if [[ "$DOW" -eq 2 ]]; then
echo "Вторник. Высылаю отчет на ${MAIL_TO} "
mutt -s "ZFS OK. ${IP}, ${HOSTNAME}" -- "${MAIL_TO}" < "${LOG}"
else
echo "Другой день. Отчет не высылаю"
fi
exit 0
|
[Unit] Description=check ZFS status After=network.target [Service] Type=oneshot ExecStart=/root/zfs-check.sh WorkingDirectory=/root Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" [Install] WantedBy=multi-user.target |
[Unit] Description= check ZFS status [Timer] OnBootSec=5min OnCalendar=*-*-* 09:03:00 [Install] WantedBy=timers.target |
systemctl daemon-reload systemctl start zfs-check.service systemctl start zfs-check.timer systemctl enable zfs-check.timer systemctl list-timers --all | grep zfs-check.timer |