#!/bin/bash # Конфигурация METRIC_FILE="/var/lib/node_exporter/textfile_collector/cron_magos.prom" TIMEOUT_SECONDS=600 # 10 минут максимум на выполнение mkdir -p "$(dirname ${METRIC_FILE})" # Закрываем stdin чтобы скрипты не ждали ввода exec > /var/log/cron_monitor_errors.log return 1 elif [ ${exit_code} -ne 0 ]; then echo "[$(date)] ERROR: ${description} failed with exit code ${exit_code}" >> /var/log/cron_monitor_errors.log return 1 fi return 0 } # Выполняем команды последовательно if safe_run "{{ magos_bin }} > {{ magos_log_file }} 2>&1" "magos"; then if safe_run "{{ magos_upload_logs_script_path }}" "upload_logs.sh"; then if safe_run "{{ magos_upload_configs_script_path }}" "upload_configs.sh"; then STATUS=1 fi fi fi DURATION=$(($(date +%s) - START)) # Записываем метрики cat > "${METRIC_FILE}" << EOF # HELP cron_magos_status Cron job execution status (1=success, 0=failure) # TYPE cron_magos_status gauge cron_magos_status ${STATUS} # HELP cron_magos_last_run Last execution timestamp # TYPE cron_magos_last_run gauge cron_magos_last_run $(date +%s) # HELP cron_magos_duration_seconds Execution duration # TYPE cron_magos_duration_seconds gauge cron_magos_duration_seconds ${DURATION} EOF exit $((1 - STATUS))