Sanoid

Установить TZ 

 # Создайте drop-in директорию для каждого сервиса

mkdir -p /etc/systemd/system/sanoid.service.d/

mkdir -p /etc/systemd/system/sanoid-prune.service.d/

# Создайте файлы с новыми настройками

echo -e "[Service]\nEnvironment=TZ=Asia/Vladivostok" > /etc/systemd/system/sanoid.service.d/override.conf

echo -e "[Service]\nEnvironment=TZ=Asia/Vladivostok" > /etc/systemd/system/sanoid-prune.service.d/override.conf

# Перезагрузите systemd и перезапустите сервисы

systemctl daemon-reload

systemctl restart sanoid.service sanoid-prune.service 

 проверить 

 systemctl show sanoid.service --property=Environment

systemctl show sanoid-prune.service --property=Environment 

 Проверка на почту 

 #!/bin/bash

# Настройки

EMAIL="admin@example.org"

EMAILF="jesus@example.org"

LOG_FILE="/var/log/sanoid-monitor.log"

# Функция отправки письма

send_alert() {

 local subject="$1"

 local body="$2"

 echo -e "To: $EMAIL\nFrom: $EMAILF\nSubject: $subject\n\n$body" | msmtp "$EMAIL"

}

# Функция логирования

log() {

 echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"

}

# Запускаем все три проверки

SNAPSHOTS_OUTPUT=$(/usr/sbin/sanoid --monitor-snapshots 2>&1)

HEALTH_OUTPUT=$(/usr/sbin/sanoid --monitor-health 2>&1)

CAPACITY_OUTPUT=$(/usr/sbin/sanoid --monitor-capacity 2>&1)

# Проверяем статусы

SNAPSHOTS_OK=false

HEALTH_OK=false

CAPACITY_OK=false

# Проверка снапшотов

if [[ $SNAPSHOTS_OUTPUT == OK:* ]] || [[ $SNAPSHOTS_OUTPUT == "OK: all monitored datasets"* ]]; then

 SNAPSHOTS_OK=true

fi

# Проверка здоровья (ищем "OK" в выводе)

if [[ $HEALTH_OUTPUT == OK* ]] && [[ ! $HEALTH_OUTPUT == *CRIT* ]] && [[ ! $HEALTH_OUTPUT == *WARN* ]]; then

 HEALTH_OK=true

fi

# Проверка емкости (ищем "OK" в выводе)

if [[ $CAPACITY_OUTPUT == OK* ]] && [[ ! $CAPACITY_OUTPUT == *CRIT* ]] && [[ ! $CAPACITY_OUTPUT == *WARN* ]]; then

 CAPACITY_OK=true

fi

# Формируем сообщение о проблемах

PROBLEMS=""

if [[ $SNAPSHOTS_OK == false ]]; then

 PROBLEMS="$PROBLEMS\n=== SNAPSHOTS MONITOR ===\n$SNAPSHOTS_OUTPUT\n"

fi

if [[ $HEALTH_OK == false ]]; then

 PROBLEMS="$PROBLEMS\n=== ZPOOL HEALTH ===\n$HEALTH_OUTPUT\n"

fi

if [[ $CAPACITY_OK == false ]]; then

 PROBLEMS="$PROBLEMS\n=== ZPOOL CAPACITY ===\n$CAPACITY_OUTPUT\n"

fi

# Если есть проблемы - отправляем письмо и логируем

if [[ -n "$PROBLEMS" ]]; then

 SUBJECT="ALERT: Sanoid Monitor Failure - $(hostname)"

 BODY="Problems detected at $(date '+%Y-%m-%d %H:%M:%S'):\n$PROBLEMS"

 send_alert "$SUBJECT" "$BODY"

 log "ALERT sent - problems detected"

 exit 1

else

 log "OK - all checks passed"

 exit 0