Wie soll ich systemd-Protokolle an einen dedizierten Protokollierungsserver senden?


8

In der Vergangenheit habe ich syslog-ng oder rsyslog verwendet, um Systemprotokolle an einen dedizierten Protokollierungsserver an einer anderen Stelle im Netzwerk zu senden. Mit systemd jedoch Dinge wie die sudo-Befehle, die zuvor in / var / log / secure oder /var/log/auth.log gespeichert waren (abhängig von Ihrer Distribution).

Mir ist bewusst, dass /etc/systemd/journald.conf eine ForwardToSyslog=yesOption hat, mit der ich zu meinen alten Gewohnheiten zurückkehren kann, aber dies scheint ein uneleganter Rückschritt zu sein. Verfügt systemd über eine integrierte Möglichkeit, Protokolle an einen zentralen Protokollierungsserver wie Logrhythm, ELK oder ähnliches zu senden oder ForwardToSyslog=yesdie richtige Vorgehensweise festzulegen ?


1
Es gibt ein großartiges Tutorial über Remote Journald bei Serverfault
Karl Pokus

Antworten:


8

Es scheint, dass systemd nicht über eine integrierte Möglichkeit zum Weiterleiten von Nachrichten an einen Syslog-Server verfügt. Die offizielle Empfehlung von Red Hat lautet, das imjournalModul zu verwenden, damit rsyslog die Journald-Protokolle lesen und diese Protokolle an einen zentralen Protokollierungsserver weiterleiten kann, indem in /etc/rsyslog.conf Folgendes festgelegt wird:

module(load="imjournal"
    PersistStateInterval="number_of_messages"
    StateFile="path"
    ratelimit.interval="seconds"
    ratelimit.burst="burst_number"
    IgnorePreviousMessages="off/on")

Sie enthalten Verwendungsdetails für diese Optionen

  • Mit number_of_messages können Sie festlegen, wie oft die Journaldaten gespeichert werden müssen. Dies geschieht jedes Mal, wenn die angegebene Anzahl von Nachrichten erreicht ist.

  • Ersetzen Sie den Pfad durch einen Pfad zur Statusdatei. Diese Datei verfolgt den Journaleintrag, der zuletzt verarbeitet wurde.

  • Mit Sekunden legen Sie die Länge des Ratenbegrenzungsintervalls fest. Die Anzahl der in diesem Intervall verarbeiteten Nachrichten darf den in Burst_Number angegebenen Wert nicht überschreiten. Die Standardeinstellung ist 20.000 Nachrichten pro 600 Sekunden. Rsyslog verwirft Nachrichten, die nach dem maximalen Burst innerhalb des angegebenen Zeitrahmens eingehen.

  • Mit IgnorePreviousMessages können Sie Nachrichten ignorieren, die sich derzeit im Journal befinden, und nur neue Nachrichten importieren, die verwendet werden, wenn keine Statusdatei angegeben ist. Die Standardeinstellung ist aus. Beachten Sie, dass alle Nachrichten im Journal verarbeitet werden, wenn diese Einstellung deaktiviert ist und keine Statusdatei vorhanden ist, auch wenn sie bereits in einer vorherigen rsyslog-Sitzung verarbeitet wurden.


1
Nun, es scheint systemd Projekt enthält ein Protokoll Spediteur in einiger Kapazität .
AdamKalisz

0

Ich habe vorher nicht gründlich über Imjournald gelesen, aber nachdem ich James Sheweys Antwort gelesen habe, denke ich, dass es wirklich einfach ist.

Mit Regelsätzen können Sie erreichen, was immer Sie wollen.

module(load="imjournal"
    PersistStateInterval="number_of_messages"
    StateFile="path"
    ratelimit.interval="seconds"
    ratelimit.burst="burst_number"
    IgnorePreviousMessages="off/on"
    ruleset="journald"  #bind this action to the ruleset "journald"
    )

#declare ruleset "journald"

ruleset(
 name="journald"              
 queue.type="FixedArray"       
 queue.spoolDirectory="/var/run/rsyslog/queues" 
 queue.filename="stats_ruleset"
 queue.lowwatermark="20000"     
 queue.maxdiskspace="100m"        
 queue.size="5000000"             
 queue.dequeuebatchsize="1000"  
 queue.saveonshutdown="on"      
) {

# add here actions you want to perform

action(
  name="impstats_to_es"
  type="omelasticsearch"
  server="127.0.0.1"
  serverport="9200"
  template="stats"
  searchIndex="impstats"
  searchType="impstats"
  bulkmode="on"
  action.resumeretrycount="-1"
)

}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.