Spool-Dateien: Namen/Prefixe als Config-Variablen, Auto-Cleanup alter Dateien

Verzeichnis und Prefixe (PBS, Piggyback lokal/extern, checkzfs-extern)
jetzt als SPOOL_* Variablen im Config-Block, per Config-Datei
überschreibbar (aktuelle Defaults: PBS=120000, Piggyback=100000).

Nach jedem Spool-Transfer räumt ein find+mtime-Aufruf auf dem
Zielhost alte/verwaiste Varianten auf (SPOOL_CLEANUP_DAYS, Default 7),
damit sich Spool-Dateien nicht mehr unbegrenzt ansammeln.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
patrickandClaude Sonnet 5 committed 2026-09-22 16:21:48 +02:00
1 parent 86f2ef6196
commit 428348939b
1 file changed
+30 -12
+30 -12
View File
@@ -47,6 +47,13 @@ if [[ -n "${CONFIG_FILE:-}" ]]; then
: "${CHECKZFS_SPOOL:=1}" : "${CHECKZFS_SPOOL:=1}"
: "${CHECKZFS_SPOOL_MAXAGE:=90000}" : "${CHECKZFS_SPOOL_MAXAGE:=90000}"
: "${SPOOL_DIR:=/var/lib/check_mk_agent/spool}"
: "${SPOOL_PREFIX_PBS:=120000}"
: "${SPOOL_PREFIX_PIGGYBACK:=100000}"
: "${SPOOL_PREFIX_PIGGYBACK_EXTERNAL:=100000}"
: "${SPOOL_PREFIX_CHECKZFS_EXTERNAL:=120000}"
: "${SPOOL_CLEANUP_DAYS:=7}"
REQUIRED_VARS=( REQUIRED_VARS=(
SOURCEPORT BACKUPSERVER ZSYNC MAINTDAY SHUTDOWN UPDATES SOURCEPORT BACKUPSERVER ZSYNC MAINTDAY SHUTDOWN UPDATES
SOURCEHOST ZFSROOT ZFSSECOND ZFSTRGT ZPUSHTAG ZPUSHMINKEEP ZPUSHKEEP ZPUSHLABEL SOURCEHOST ZFSROOT ZFSSECOND ZFSTRGT ZPUSHTAG ZPUSHMINKEEP ZPUSHKEEP ZPUSHLABEL
@@ -278,7 +285,7 @@ run_remote_updates() {
send_piggyback() { send_piggyback() {
get_sourcehostname get_sourcehostname
local combined_host="miyagi-${SOURCEHOSTNAME}-$(hostname)" local combined_host="miyagi-${SOURCEHOSTNAME}-$(hostname)"
local filename="90000_${combined_host}" local filename="${SPOOL_PREFIX_PIGGYBACK}_${combined_host}"
log "Reminder: Add a host named ${combined_host} in CMK (without Agent, Piggyback enabled)!" log "Reminder: Add a host named ${combined_host} in CMK (without Agent, Piggyback enabled)!"
log "Creating piggyback file: $filename" log "Creating piggyback file: $filename"
@@ -289,8 +296,10 @@ send_piggyback() {
echo "<<<<>>>>" echo "<<<<>>>>"
} > "$filename" } > "$filename"
if rscp "$filename" "$SOURCEHOST:/var/lib/check_mk_agent/spool/"; then if rscp "$filename" "$SOURCEHOST:${SPOOL_DIR}/"; then
log "Piggyback data successfully sent to $SOURCEHOST" log "Piggyback data successfully sent to $SOURCEHOST"
rssh root@"$SOURCEHOST" "find '${SPOOL_DIR}' -maxdepth 1 -name '*_${combined_host}' -not -name '$(basename "$filename")' -mtime +${SPOOL_CLEANUP_DAYS} -delete" \
|| log "WARNUNG: Aufräumen alter Piggyback-Spool-Dateien auf $SOURCEHOST fehlgeschlagen"
else else
log "ERROR: Failed to send piggyback data to $SOURCEHOST" log "ERROR: Failed to send piggyback data to $SOURCEHOST"
fi fi
@@ -439,16 +448,21 @@ run_pbs_backup() {
echo "2 DailyPBS - Daily Backup FEHLGESCHLAGEN" > /tmp/cmk_tmp.out echo "2 DailyPBS - Daily Backup FEHLGESCHLAGEN" > /tmp/cmk_tmp.out
fi fi
local pbs_spool_file="${SPOOL_PREFIX_PBS}_checkpbs"
{ {
echo "<<<local>>>" echo "<<<local>>>"
cat /tmp/cmk_tmp.out cat /tmp/cmk_tmp.out
} > /tmp/90000_checkpbs } > "/tmp/${pbs_spool_file}"
rscp /tmp/90000_checkpbs \ if rscp "/tmp/${pbs_spool_file}" root@"$SOURCEHOST":"${SPOOL_DIR}"; then
root@"$SOURCEHOST":/var/lib/check_mk_agent/spool \ rssh root@"$SOURCEHOST" "find '${SPOOL_DIR}' -maxdepth 1 -name '*_checkpbs' -not -name '${pbs_spool_file}' -mtime +${SPOOL_CLEANUP_DAYS} -delete" \
|| log "Fehler beim Übertragen des Monitoring-Outputs via SCP" || log "WARNUNG: Aufräumen alter PBS-Spool-Dateien auf $SOURCEHOST fehlgeschlagen"
else
log "Fehler beim Übertragen des Monitoring-Outputs via SCP"
fi
rm -f /tmp/cmk_tmp.out /tmp/90000_checkpbs rm -f /tmp/cmk_tmp.out "/tmp/${pbs_spool_file}"
#write_pbs_status #write_pbs_status
@@ -504,7 +518,7 @@ run_scrub_stop() {
} }
write_pbs_status() { write_pbs_status() {
local spool_file="/var/lib/check_mk_agent/spool/90000_checkpbs_local" local spool_file="${SPOOL_DIR}/${SPOOL_PREFIX_PBS}_checkpbs_local"
local repo="$BACKUPSTOREPBS" local repo="$BACKUPSTOREPBS"
local tmpfile local tmpfile
tmpfile=$(mktemp) tmpfile=$(mktemp)
@@ -613,7 +627,7 @@ send_piggyback_external() {
log "Ermittelter SOURCEHOSTNAME: $SOURCEHOSTNAME" log "Ermittelter SOURCEHOSTNAME: $SOURCEHOSTNAME"
local combined_host="miyagi-${SOURCEHOSTNAME}-$(hostname)" local combined_host="miyagi-${SOURCEHOSTNAME}-$(hostname)"
local spool_file="90000_${combined_host}_external" local spool_file="${SPOOL_PREFIX_PIGGYBACK_EXTERNAL}_${combined_host}_external"
local temp_dir local temp_dir
temp_dir=$(mktemp -d) temp_dir=$(mktemp -d)
@@ -625,8 +639,10 @@ send_piggyback_external() {
echo "<<<<>>>>" echo "<<<<>>>>"
} > "$temp_dir/$spool_file" } > "$temp_dir/$spool_file"
if scp -P "$EPIGGYBACK_PORT" "$temp_dir/$spool_file" "$EPIGGYBACK_HOST:/var/lib/check_mk_agent/spool/"; then if scp -P "$EPIGGYBACK_PORT" "$temp_dir/$spool_file" "$EPIGGYBACK_HOST:${SPOOL_DIR}/"; then
log "Piggyback-Daten erfolgreich an $EPIGGYBACK_HOST gesendet: $spool_file" log "Piggyback-Daten erfolgreich an $EPIGGYBACK_HOST gesendet: $spool_file"
ssh -p "$EPIGGYBACK_PORT" "$EPIGGYBACK_HOST" "find '${SPOOL_DIR}' -maxdepth 1 -name '*_${combined_host}_external' -not -name '${spool_file}' -mtime +${SPOOL_CLEANUP_DAYS} -delete" \
|| log "WARNUNG: Aufräumen alter Piggyback-Spool-Dateien auf $EPIGGYBACK_HOST fehlgeschlagen"
else else
log "Fehler beim Übertragen der Piggyback-Daten an $EPIGGYBACK_HOST" log "Fehler beim Übertragen der Piggyback-Daten an $EPIGGYBACK_HOST"
rm -rf "$temp_dir" rm -rf "$temp_dir"
@@ -678,7 +694,7 @@ send_checkzfs_external() {
local combined="miyagi-${SOURCEHOSTNAME}-$(hostname)-${ZPUSHTAG}" local combined="miyagi-${SOURCEHOSTNAME}-$(hostname)-${ZPUSHTAG}"
local spoolfile="/tmp/${combined}_checkzfs_external" local spoolfile="/tmp/${combined}_checkzfs_external"
local spooldest="120000_${combined}_checkzfs_external" local spooldest="${SPOOL_PREFIX_CHECKZFS_EXTERNAL}_${combined}_checkzfs_external"
log "Führe checkzfs aus..." log "Führe checkzfs aus..."
{ {
@@ -693,8 +709,10 @@ send_checkzfs_external() {
--output checkmk --output checkmk
} > "$spoolfile" } > "$spoolfile"
if scp -P "$ECHECKZFS_PORT" "$spoolfile" root@"$ECHECKZFS_HOST":/var/lib/check_mk_agent/spool/"$spooldest"; then if scp -P "$ECHECKZFS_PORT" "$spoolfile" root@"$ECHECKZFS_HOST":"${SPOOL_DIR}/${spooldest}"; then
log "Spool-Datei erfolgreich übertragen an $ECHECKZFS_HOST:$spooldest" log "Spool-Datei erfolgreich übertragen an $ECHECKZFS_HOST:$spooldest"
ssh -p "$ECHECKZFS_PORT" root@"$ECHECKZFS_HOST" "find '${SPOOL_DIR}' -maxdepth 1 -name 'miyagi-${SOURCEHOSTNAME}-$(hostname)-*_checkzfs_external' -not -name '${spooldest}' -mtime +${SPOOL_CLEANUP_DAYS} -delete" \
|| log "WARNUNG: Aufräumen alter checkzfs-Spool-Dateien auf $ECHECKZFS_HOST fehlgeschlagen"
else else
log "Fehler beim Übertragen der Spool-Datei an $ECHECKZFS_HOST" log "Fehler beim Übertragen der Spool-Datei an $ECHECKZFS_HOST"
fi fi