# han-vm-metrics.sh Установка на ВМ sudo mkdir -p /opt/han-chat/ops Cкопировать han-vm-metrics.sh на сервер, затем: sudo chmod +x /opt/han-chat/ops/han-vm-metrics.sh sudo /opt/han-chat/ops/han-vm-metrics.sh JSON: sudo /opt/han-chat/ops/han-vm-metrics.sh --json Cron каждые 5 минут + лог + ненулевой exit при проблемах: echo '*/5 * * * * root /opt/han-chat/ops/han-vm-metrics.sh --alert --log /var/log/han-vm-metrics.log' | sudo tee /etc/cron.d/han-vm-metrics Пороги можно менять env: DISK_WARN_PCT, DISK_CRIT_PCT, MEM_WARN_PCT, CERT_WARN_DAYS, SSH_FAIL_WARN. # diagnose-han-chat.sh # КОнтроль места docker images --format 'table {{.Repository}}\t{{.Tag}}\t{{.Size}}\t{{.ID}}\t{{.CreatedSince}}' docker builder du # Очистка build cache docker builder prune -af # Cron раз в сутки (03:15) + лог echo '15 3 * * * root /usr/bin/docker builder prune -af >> /var/log/docker-builder-prune.log 2>&1' | sudo tee /etc/cron.d/docker-builder-prune sudo chmod 644 /etc/cron.d/docker-builder-prune Логи cat /etc/cron.d/docker-builder-prune tail -n 20 /var/log/docker-builder-prune.log # Проверка места df -h / docker system df # Обновление секретов ### Как проверить, что sync реально отработал ```sh # 1) Когда unit реально выполнялся systemctl show han-secrets-vm2.service -p ActiveState -p SubState -p Result -p ExecMainStartTimestamp -p ExecMainStatus # 2) Журнал последней попытки journalctl -u han-secrets-vm2.service -n 50 --no-pager # 3) Принудительно пересинхронизировать systemctl restart han-secrets-vm2.service echo exit:$? systemctl show han-secrets-vm2.service -p ExecMainStartTimestamp -p Result -p ExecMainStatus ```