Blog-Seite

Jeder Beitrag auf dieser Blogseite soll den Umgang mit dem Network Time Protocol vereinfachen.

alle Artikel
3 min Lesezeit

Ein wichtiger und zentraler Bestandteil von Linux Betriebssystemen sind die Logging-Informationen. Viele Anwendungen, alle Service und das Betriebssystem selbst stellen Logging Informationen via dem Syslog-Protokoll zur Verfügung. Üblicherweise werden die Logging-Informationen im Verzeichnis /var/log/ eines Linux-Systems bereitgestellt. Insofern Services mehrere Logging-Dateien bereitstellen wie z. B. Der Service von NTP wird hierzu ein Service-typisches Unterverzeichnis angelegt. In unserem Beispiel wäre dies für NTP  /var/log/ntpd-stats/). Logdateien können mit jedem beliebigen Texteditor oder Dateibetrachter geöffnet werden.

Viele Anwendungen protokollieren oft jedes Ereignis und dies führt angesichts der umfangreichen Protokolle zu sehr großen Dateien. Mittels logrotate besteht die Möglichkeit die Gesamtgröße der aufbewahrten Protokolle eines Services zu begrenzen und dennoch eine schnelle Analyse der jüngsten Ereignisse durchzuführen. Denn der Hauptzweck besteht darin, das Volumen der Protokolldaten zu begrenzen um ein Überlaufen der bereitgestellten Speicherkapazitäten zu vermeiden und gleichzeitig die Protokolldateien so klein zu halten, dass diese noch schnell geöffnet und ausgewertet werden können.

Hieraus ableitend sollte geprüft werden, welche Protokolldateien für NTP mittels logrotate rotiert werden sollten. Dieses wären die folgenden Dateien:

  • ntpd.log
  • loopstats
  • peerstats
  • sysstats
  • timingstats

Die zuvor aufgezählten Dateien liegen leider nicht alle im selben Verzeichnis. In die Konfiguration von logrotate sind diese beiden Verzeichnisse aufzunehmen.

  • /var/log/
  • /var/log/ntpd-stats/ 

Auf welche Art und Weise sollte mittels logrotate rotiert werden?

copytruncate - Schneidet das originale Logfile auf die Länge 0 ab, nachdem eine Kopie gezogen wurde, anstatt das alte Logfile zu verschieben und ein neues zu erstellen. Dies Verfahren kommt zum Einsatz, wenn eine Anwendung nicht in der Lage sein sollte, sein Logfile zu schließen und so ständig weiter in diese Datei schreibt. Ein kleiner Hinweis beim Einsatz von copytruncate kann zu einer kurzen Verzögerung kommen, so daß einige Logging-Informationen verloren gehen können. Ebenfalls hat die create Option keine Bedeutung, da die vorhandene Logdatei nicht ersetzt wird.

sharedscripts - Normalerweise werden die prerotate und postrotate Scripts für jede einzelne Datei angewandt. Das heißt, ein Script wird wo möglich mehrmals ausgeführt, wenn in einer Logfile-Definition mehrere Dateien oder Namensmuster angegeben wurden. Wenn sharedscripts angegeben wurde, dann werden die Scripts nur einmal ausgeführt, egal wieviele Dateien auf das Namensmuster passen. Ein Nebeneffekt dieser Anweisung ist, dass das Script auch ausgeführt wird, wenn keine Datei auf das Muster passt, also keine Dateien rotiert werden. Wenn diese Option nicht angegeben wird, werden die Scripts nur ausgeführt, wenn die Logdatei tatsächlich rotiert werden.

postrotate/endscript - Die Zeilen zwischen postrotate und endscript (beide müssen in einer eigenen Zeile stehen) werden ausgeführt, nachdem die Logdatei rotiert wurde. Wichtig ist, diese Anweisung darf nur innerhalb einer Logdatei-Definition stehen (nicht global).


Konfigurationsbeispiel: ntpd.logrotate

# This is ntpd logrotate config file

# For more info please refer logrotate man page

/var/log/ntpd.log /var/log/ntpd-stats/loopstats /var/log/ntpd-stats/peerstats /var/log/ntpd-stats/sysstats /var/log/ntpd-stats/timingstats {

copytruncate

sharedscripts

postrotate

/usr/bin/killall -HUP `cat /var/run/ntpd/ntpd.pid 2> /dev/null` 2> /dev/null || true

endscript

}