ops: monitor database and object storage growth
This commit is contained in:
+1
-1
@@ -145,7 +145,7 @@ systemctl list-timers rf4spotter-maintenance.timer
|
||||
./deploy/monitor.sh
|
||||
```
|
||||
|
||||
Проверка контролирует контейнеры, `/ready`, диск, свежесть backup и срок TLS. Установка systemd timer, пороги и порядок реакции описаны в [`docs/production-monitoring.md`](../docs/production-monitoring.md). До подключения реального канала уведомлений одного журнала systemd недостаточно.
|
||||
Проверка контролирует контейнеры, `/ready`, диск, объём PostgreSQL/MinIO, свежесть backup и срок TLS. Установка systemd timer, пороги и порядок реакции описаны в [`docs/production-monitoring.md`](../docs/production-monitoring.md). До подключения реального канала уведомлений одного журнала systemd недостаточно.
|
||||
|
||||
## 9. Что ещё блокирует публичное открытие альфы
|
||||
|
||||
|
||||
+18
-2
@@ -20,10 +20,14 @@ backup_root=${BACKUP_ROOT:-$(read_env BACKUP_ROOT)}
|
||||
disk_max=${MONITOR_DISK_MAX_PERCENT:-$(read_env MONITOR_DISK_MAX_PERCENT)}
|
||||
tls_days=${MONITOR_TLS_MIN_DAYS:-$(read_env MONITOR_TLS_MIN_DAYS)}
|
||||
backup_hours=${MONITOR_BACKUP_MAX_HOURS:-$(read_env MONITOR_BACKUP_MAX_HOURS)}
|
||||
db_max_mb=${MONITOR_DB_MAX_MB:-$(read_env MONITOR_DB_MAX_MB)}
|
||||
minio_max_mb=${MONITOR_MINIO_MAX_MB:-$(read_env MONITOR_MINIO_MAX_MB)}
|
||||
disk_max=${disk_max:-85}
|
||||
tls_days=${tls_days:-14}
|
||||
backup_hours=${backup_hours:-26}
|
||||
for value in "$disk_max" "$tls_days" "$backup_hours"; do
|
||||
db_max_mb=${db_max_mb:-2048}
|
||||
minio_max_mb=${minio_max_mb:-10240}
|
||||
for value in "$disk_max" "$tls_days" "$backup_hours" "$db_max_mb" "$minio_max_mb"; do
|
||||
case "$value" in ''|*[!0-9]*) printf 'CRITICAL rf4spotter failures="monitor-threshold-invalid"\n'; exit 2 ;; esac
|
||||
done
|
||||
base_url=${MONITOR_BASE_URL:-https://$site_domain}
|
||||
@@ -48,6 +52,18 @@ case "$disk_used" in
|
||||
*) [ "$disk_used" -lt "$disk_max" ] || fail "disk:${disk_used}%" ;;
|
||||
esac
|
||||
|
||||
db_bytes=$($compose exec -T db sh -c 'psql -At -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "select pg_database_size(current_database())"' 2>/dev/null) || db_bytes=""
|
||||
case "$db_bytes" in
|
||||
''|*[!0-9]*) db_mb="unknown"; fail "postgresql-size:unknown" ;;
|
||||
*) db_mb=$(((db_bytes + 1048575) / 1048576)); [ "$db_mb" -lt "$db_max_mb" ] || fail "postgresql-size:${db_mb}MB" ;;
|
||||
esac
|
||||
|
||||
minio_kb=$($compose exec -T minio du -sk /data 2>/dev/null | awk 'NR==1 {print $1}')
|
||||
case "$minio_kb" in
|
||||
''|*[!0-9]*) minio_mb="unknown"; fail "minio-size:unknown" ;;
|
||||
*) minio_mb=$(((minio_kb + 1023) / 1024)); [ "$minio_mb" -lt "$minio_max_mb" ] || fail "minio-size:${minio_mb}MB" ;;
|
||||
esac
|
||||
|
||||
if [ -z "$backup_root" ] || [ ! -d "$backup_root" ]; then
|
||||
fail "backup:directory"
|
||||
else
|
||||
@@ -77,4 +93,4 @@ if [ -n "$failures" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
printf 'OK rf4spotter timestamp=%s disk_used=%s%% backup_max_age=%sh tls_min=%sd\n' "$timestamp" "$disk_used" "$backup_hours" "$tls_days"
|
||||
printf 'OK rf4spotter timestamp=%s disk_used=%s%% postgresql=%sMB minio=%sMB backup_max_age=%sh tls_min=%sd\n' "$timestamp" "$disk_used" "$db_mb" "$minio_mb" "$backup_hours" "$tls_days"
|
||||
|
||||
Reference in New Issue
Block a user