Durch den Eintrag „event_broker_options=-1“ (ist in meiner Konfig notwendig, weil ich mit den empfohlenen Einstellungen in NagVis keine Hosts und Services auswählen kann) in der nagios.cfg kann es zu einem enormen Anwachsen der MySQL-Logs kommen (meist zu finden bei einer Standardinstallation von MySQL unter /usr/local/mysql/var/; heißen meißt „mysql-bin.[laufende-Nummer]). Mit Hilfe folgendes Shell-Skripts und einer entsprechenden Planung in der Crontab des Users root werden mit MySQL-Bortmitteln nicht mehr benötigte Log-Dateien aus dem Filesystem entfernt.
#!/bin/bash
#
# erstellt von WolverineJR
MYSQL_VAR_PATH=/usr/local/mysql/var
MYSQL_BIN_PATH=/usr/bin
MAIL=[Mail-Adresse für Fehlermeldungen]
MYSQL-User=root
# does not work, when yesterday was last month
# let DAY_BEFORE=$(date +%d)-1
# PURGE_DATE=$(echo $(date +%Y-%m)-$DAY_BEFORE 01:00:00)
#
# better would be using a date function
PURGE_DATE=$(date '+%F %T' --date='yesterday 01:00')
$MYSQL_BIN_PATH/mysql -u $MYSQL-User -e "PURGE MASTER LOGS BEFORE '$PURGE_DATE';"
if [ $? -ne 0 ]; then
echo "Waehrend des Purge-Laufes der MySQL-Datenbank des Nagios-Servers ist ein Fehler aufgetreten!" | mailx -s "Fehler wahrend Purge-Laufs" $MAIL
fi
Das Skript verbindet sich mit den angegebenen User-Daten gegen die MySQL-DB und veranlasst einen Purge aller Logs vor dem gestrigen Tag um 01:00 Uhr morgens.
Verbesserungen und/oder Korrekturen sind gern gesehen.