# rsyslog

# Meldungen per Regex in eine andere Datei umleiten

Mit diesem Beispiel lassen sich Meldungen, die von „apache2“ gesendet werden und nicht den String „PHP Notice“ enthalten in die Datei /var/log/apache2-global-error.log schreiben.

<div id="bkmrk-if-%24programname-%3D%3D-%27"><div>```
if $programname == 'apache2' and not ($msg contains 'PHP Notice') then /var/log/apache2-global-error.log
```

</div></div>Das ist z.B. sehr nützlich, wenn man einen Cluster loadbalancter Server hat und diese zentral loggen läßt. Es gibt dann nur ein Error-Log, das man bequem durchsuchen kann und einen Überblick über die Fehler im gesamten Netz zeigt.

# Remote-Logging mit rsyslog

Um den Empfang von Remote-Messages im rsyslog zu ermöglichen sind in /etc/rsyslog.conf zwei, bzw. 4 Zeilen einzukommentieren:

<div id="bkmrk-%23-provides-udp-syslo"><div>```
# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
```

</div></div>Üblicherweise werden Syslog-Messages per UDP übertragen. Will man aber auch auf einem TCP-Port empfangen muss das entsprechende Modul geladen und konfiguriert werden:

<div id="bkmrk-%23-provides-tcp-syslo"><div>```
# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
```

</div></div>Damit der entfernte Server nun auch Meldungen sendet ist folgendes zu tun:

<div id="bkmrk-%2A.%2A-%40syslog.meinserv"><div>```
*.*	@syslog.meinserver.de
```

</div></div>Damit werden sämtliche Syslog-Einträge per UDP an den entfernten Server geschickt. Sollen die Pakete über TCP laufen wird ein zweites @ vor den Server gepackt. Die Portangabe ist optional, default-Port ist 514. Sollen die Meldungen an einen anderen Port geschickt werden, ist das hierüber konfigurierbar.

<div id="bkmrk-%2A.%2A-%40%40syslog.meinser"><div>```
*.*	@@syslog.meinserver.de:1234
```

</div></div>Die Meldungen lassen sich auch auf wichtige Sachen einschränken. Beispielsweise nur Emergencies und Alerts, etc.

<div id="bkmrk-%2A.emerg%2C%2A.alert-%40sys"><div>```
*.emerg,*.alert					@syslog.meinserver.de
*.emerg,*.alert,*.crit,*.err,*.warning		@syslog.meinserver.de<br></br><br></br>
```

</div></div>Bei instabilen Verbindungen kann es helfen die Meldungen in einer Sendequeue vorzuhalten:

<div id="bkmrk-%24actionqueuetype-lin">```
$ActionQueueType LinkedList<br></br>$ActionQueueFileName remote_queue<br></br>$ActionQueueMaxDiskSpace 1g<br></br>$ActionResumeRetryCount -1<br></br>$ActionQueueSaveOnShutdown on
```

</div>