TS: Cron und Logrotate

Hallo und guten Tag,

ich kämpfe immer noch gegen ein paar Fehler auf meinem Linux-Host. Root bekommt folgende Fehlermeldung:

test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

/etc/cron.daily/logrotate:
/usr/bin/mysqladmin: refresh failed; error: 'Unknown error'
error: error running shared postrotate script for '/var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log '
run-parts: /etc/cron.daily/logrotate exited with return code 1

Ich habe ein Logging für Mysql für abgewiesene Logins eingerichet und dies von fail2ban überwachen lassen. Das klappt auch soweit alles wunschgemäß.

Jetzt klappt aber das Logrotate für das Error-File noch nicht, wie man sieht.

Wo fange ich da jetzt am besten an zu suchen und zu korrigieren?
Dürfen Error-Logs überhaupt in Unterverzeichnisse (hier: /var/log/mysql/mysql.err) verlegt werden, wenn man logrotate nutzen will?

Da stehe ich jetzt seit Tagen mit diversen Ideen zur Problemlösung auf dem Schlauch, finde aber keine substantiierten Anweisungen.

Grüße
TS

--
es wachse der Freifunk
http://freifunk-oberharz.de
  1. Tach!

    ich kämpfe immer noch gegen ein paar Fehler auf meinem Linux-Host.

    Wichtiger wäre die Information, um welches Linux es sich handelt. Die verschiedenen Distributionen haben teilweise unterschiedliche Ansätze, wie sie bestimmte Dinge angehen.

    Wo fange ich da jetzt am besten an zu suchen und zu korrigieren?

    Beispielsweise die Logrotate-Scripte untersuchen und die dortigen Kommandos händisch nachvollziehen, um mehr Informationen zur Ursache zu bekommen.

    Dürfen Error-Logs überhaupt in Unterverzeichnisse (hier: /var/log/mysql/mysql.err) verlegt werden, wenn man logrotate nutzen will?

    Wo die Dateien gefunden werden, gibt man in den Logrotate-Konfigurationen an, gleich in der ersten Zeile (nach eventuellen Kommentaren).

    dedlfix.

    1. Hallo und guten Tag Dedlfix,

      ich kämpfe immer noch gegen ein paar Fehler auf meinem Linux-Host.

      Wichtiger wäre die Information, um welches Linux es sich handelt. Die verschiedenen Distributionen haben teilweise unterschiedliche Ansätze, wie sie bestimmte Dinge angehen.

      Stimmt. Habe ich eben leider nicht daran gedacht: Debian 7

      3.2.0-4-amd64 #1 SMP Debian 3.2.65-1 x86_64 GNU/Linux  
      Debian GNU/Linux 7 \n \l
      

      Wo fange ich da jetzt am besten an zu suchen und zu korrigieren?

      Beispielsweise die Logrotate-Scripte untersuchen und die dortigen Kommandos händisch nachvollziehen, um mehr Informationen zur Ursache zu bekommen.

      Dürfen Error-Logs überhaupt in Unterverzeichnisse (hier: /var/log/mysql/mysql.err) verlegt werden, wenn man logrotate nutzen will?

      Wo die Dateien gefunden werden, gibt man in den Logrotate-Konfigurationen an, gleich in der ersten Zeile (nach eventuellen Kommentaren).

      dedlfix.

      Grüße
      TS

      --
      es wachse der Freifunk
      http://freifunk-oberharz.de
    2. Hallo und guten Tag,

      Wo die Dateien gefunden werden, gibt man in den Logrotate-Konfigurationen an, gleich in der ersten Zeile (nach eventuellen Kommentaren).

      unter /etc/logrotate.d/mysql-server finde ich

      # - I put everything in one block and added sharedscripts, so that mysql gets
      #   flush-logs'd only once.
      #   Else the binary logs would automatically increase by n times every day.
      # - The error log is obsolete, messages go to syslog now.
      /var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log {
              daily
              rotate 7
              missingok
              create 640 mysql adm
              compress
              sharedscripts
              postrotate
                      test -x /usr/bin/mysqladmin || exit 0
                      # If this fails, check debian.conf!
                      MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
                      if [ -z "`$MYADMIN ping 2>/dev/null`" ]; then
                        # Really no mysqld or rather a missing debian-sys-maint user?
                        # If this occurs and is not a error please report a bug.
                        #if ps cax | grep -q mysqld; then
                        if killall -q -s0 -umysql mysqld; then
                          exit 1
                        fi
                      else
                        $MYADMIN flush-logs
                      fi
              endscript
      }
      
      

      Muss ich mich also mal damit auseinandersetzen.
      /var/log/mysql.log ist auch leer. Da muss ich also ggf. nochmal ran und die Einstellungen für die Login-Fehler und für fail2ban ändern.

      Grüße
      TS

      --
      es wachse der Freifunk
      http://freifunk-oberharz.de
  2. Hallo TS,

    ich gehe davon aus, dass du Debian verwendest. Debian braucht einen User mit Root-Rechten, um die Logfiles zu refreshen (das machen sie mit mysqladmin). Die Daten dazu stellt man in /etc/mysql/debian.cnf ein. In der Default-Konfiguration ist das bereits der Fall, aber bei dir sieht es so aus, als sei da was schief gegangen, das würde ich zuerst überprüfen.

    Wenn das nicht hilft, würde ich mal /usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf flush-logs mit steigenden Debug-Levels ausführen und schauen, was genau denn da schief geht.

    LG,
    CK