bedingte logrotate mit prerotate Skript

Habe ich zwei syslog-ng-Server in einem cluster (warm/kalt), die sowohl die Zuweisung des gleichen NFS-Freigabe. Ich würde gerne logrotate auf dem syslog-Server zum rotieren der logs gespeichert, auf die NFS-Freigabe. Das problem ist, dass currerntly, wenn beide Knoten eine /etc/logrotate.d/syslog-ng Konfiguration, es würde dazu führen, doppelte rotation.

Ich denke es muss ein Weg gefunden werden, verwenden Sie eine prerotate Strophe in logrotate.d um zu bestimmen, ob oder nicht, die drehen soll geschehen auf einem server. In anderen Worten, Wenn der passive Knoten versucht zu laufen logrotate, die prerotate script überprüfen Sie bitte zuerst den Knoten ist primär. Wenn es nicht primär, ich will die prerotate Skript exit die logrotate Prozess, bevor es läuft.

Kann mir jemand zeigen in die richtige Richtung, um herauszufinden, wie man eine logrotate prerotate Skript exit übergeordneten logrotate Prozess?

InformationsquelleAutor dobbs | 2017-07-28



2 Replies
  1. 1

    Scheint, wie wenn das pre-rotate-Skript einfach nicht (gibt einen Wert ungleich null, wenn Sie zum Beispiel run /bin/false als ein Skript oder ein „exit 1“ von einem bash-Skript), dann wird die Datei selbst nicht gedreht. Jedoch vorherigen Dateien (foo.log.1, …) zu tun bekommen gedreht. Ich nehme an, dass qualifiziert werden kann, da ein Fehler von logrotate.

    So, wenn Sie auch dateext (die verhindert, dass die foo.log.1 => foo.log.2 rotation) Sie sollten alle gesetzt.

    • Ich werde ihm eine Chance geben. Danke für die Anregung
  2. 1

    Fand die Antwort in den man-Seiten (RTFM, oops!)

       firstaction/endscript
              The  lines between firstaction and endscript (both of which must
              appear on lines by themselves) are executed (using /bin/sh) once
              before  all  log  files  that  match  the wildcarded pattern are
              rotated, before prerotate script is run and only if at least one
              log  will actually be rotated.  These directives may only appear
              inside a log file definition. Whole pattern  is  passed  to  the
              script  as  first  argument.  If the script exits with error, no
              further processing is done. See also lastaction.

    Erstellte ich eine firstaction bash-Skript wie folgt vor, um zu überprüfen, ob ein loadbalanced IP vorhanden ist, auf die Knoten:

    #!/bin/bash
    
    TESTCASE="$(ifconfig | grep 1.2.3.4)"
    
    if [ -z "$TESTCASE" ]; then
            /bin/false
    fi

    Wenn es zurück false, logrotate weiterhin nicht.

    logrotate.d Beispiel:

    /var/log/blah/*/*.log {
        firstaction
        /usr/local/bin/amiactive.sh > /dev/null 2>&1
        endscript
        ...
        }

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.