Unterabschnitte

Das rsyslogd Paket

Einleitung

Der rsyslog Server kann den Standard syslog Server ersetzen.

RSYSLOGD ist ein ausgezeichnetes System, um Logs zu verarbeiten.

Es bietet hohe Performance, hohe Sicherheit und ein modulares Design. Rsyslog ist in der Lage eine ganze Reihe von Eingabeformen zu empfangen, sie zu transformieren und das Ergebnis flexibel auf eine Reihe von Zielen zu verteilen.

Zitat von der rsyslogd Webseite (übersetzt):
RSYSLOGD kann über eine Millionen Meldungen pro Sekunde auf lokale Ziele ausgeben, wenn nur begrenzte Verarbeitungen angewandt werden (basierend auf Version 7, Dezember 2013). Sogar mit nicht lokalen Zielen und ausgefeilteren Verarbeitungen ist die Performance 'atemberaubend'.

Die komplette Dokumentation ist unter RSYSLOGD verfügbar.

Vorbemerkung

Bei den verschiedenen Beschreibungen zum Thema Logging werden die Begriffe Priority und auch Severity benutzt. RFC5427 definiert Severity. In dieser Dokumentation und im gesamten rsyslogd Paket werden die beiden Begriffe synonym genutzt.

Voraussetzungen

Dieses Paket benötigt folgende weitere Pakete libgcrypt, libestr, libfastjason und liblogging. Es ist auch davon abhängig davon, dass eine aktuelle Version des Basissystems installiert ist.

Installation

Das rsyslogd Paket wird über das Setup-Menue im Untermenue 'Package administration' installiert.

Das rsyslogd Paket kann nicht parallel zum syslog Server aus der Base Konfiguration genutzt werden. D.h. der syslog Server aus der Base Konfiguration muss ausgeschaltet werden.

Dies geschieht über die Konfiguration 'Edit base configuration' und
Setzen von START_SYSLOGD='no'.

Danach kann über das Menue 'Create configuration using syslog(base)' die Konfiguration aus der Base Konfiguration übernommen werden.

Erst jetzt kann über START_RSYSLOGD='yes' der rsyslogd Server genutzt werden.

Ein automatisches Umschalten ohne manuellen Eingriff in die Base Konfiguration ist derzeit nicht vorgesehen.

Das Menue im Setup-Program

Das rsyslogd Menue ist über den Menuepunkt 'Service administration' des Hauptmenues im zentralen Setup-Programm zu erreichen. Es ist wie folgt aufgebaut:

  1   View documentation
  2   Edit configuration
  3   Advanced configuration file handling
  4   Start rsyslogd
  5   Stop rsyslogd
  6   Restart rsyslogd
  7   Reload rsyslogd configuration
  8   Show rsyslogd status
  9   Test rsyslogd configuration
  10   Force start of rsyslogd
  11   Logfile view

  1   View messages
  2   View older messages
  3   View log.eis-install
  4   View older log.eis-install
  0   Return

  12   rsyslogd tools

  1   Create configuration using syslog(base)
  2   Create logging database
  3   Grant full rights on logging database to a user
  4   Grant read rights on logging database to a user
  5   Drop logging database
  6   Manual logfile rotate
  7   Test log messages
  8   Analyze log rules
  0   Return

  0   Return

Das 'Logfile view' Untermenue kann je nach Konfiguration anders aussehen.

Die meisten Menuepunkte dürften ohne weitere Erläuterung verständlich sein, da sie keinerlei weitere Eingaben erwarten, sondern nur den Status des Servers/Daemons abfragen und auf Wunsch ändern. Die Standard-Menuepunkte 1, 2 und 3 arbeiten wie bei allen anderen Eisfair-1 Paketen.

Die weiteren Menuepunkte sind unten beschrieben.

Änderung der Konfiguration

Die Konfiguration kann über den Menuepunkt 'Edit Configuration' geändert werden. Standardmäßig wird dabei der Editor genutzt, der über den Menuepunkt 'Set eisfair configuration editor' in der 'Base configuration' eingestellt ist.

Nachdem der Editor beendet wurde wird die Konfiguration mit dem eischk-Programm automatisch auf syntaktische und teilweise auch auf semantische Fehler geprüft. Werden Fehler festgestellt, so werden diese gemeldet und der Benutzer zur Korrektur aufgefordert. Wird eine solche Korrektur nicht durchgeführt, so kann es zu unvorhersehbaren Fehlfunktionen bei dem Dienst kommen.

Es wird zusätzlich gefragt, ob die Konfiguration angewendet (aktiviert) werden soll. Wird dieses verneint, so unterbleibt die Aktivierung.

ACHTUNG
Beim nächsten Boot-Vorgang kann es in diesem Fall zu unvorhersehbaren Fehlern kommen.


Wird die Aktivierung bestätigt, werden über ein Skript die durchgeführten Änderungen wirksam gemacht. Dazu wird der rsyslogd gestoppt und neu gestartet.

Die Konfigurationsdatei

Die Konfigurationsdatei (/etc/config.d/rsyslogd) enthält in einer Reihe von Abschnitten die Parameter, die den Dienst parametrisieren bzw. festlegen, ob der Dienst überhaupt zur Verfügung gestellt wird oder nicht.

rsyslogd syslog server (general settings)

START_RSYSLOGD

Legt fest, ob der rsyslogd-Server gestartet wird. Es dürfen nicht mehrere syslog Server gestartet sein. Um den rsyslogd-Server starten zu können, muss der syslog-Server aus der Base Konfiguration zunächst gestoppt werden.

Gültige Werte: yes, no

Standardeinstellung: START_RSYSLOGD='no'

rsyslogd syslog server (configuration settings)

RSYSLOGD_CONFIGURATION

Art der Konfiguration bzw. Art der Generierung der Konfiguration. Derzeit sind nur 'manual' und 'sysklogd' erlaubt. Zukünftig werden auch 'legacy_rsyslog' und/oder 'RainerScript' erlaubt sein.

Wird RSYSLOGD_CONFIGURATION='manual' gesetzt, so ist der Anwendner für die Konfiguration verantwortlich, es wird keine Konfiguration generiert.

Gültige Werte: manual, sysklogd

Standardeinstellung: RSYSLOGD_CONFIGURATION='sysklogd'

RSYSLOGD_DEFAULT_LINE_TEMPLATE

Default Format der Zeilen im Log. Dieses Format wird genutzt, wenn bei den Formatvorgaben RSYSLOGD_RULE_x_LINE_TEMPLATE der Wert 'Default' steht.

Gültige Werte: DebugFormat,FileFormat,ForwardFormat,SysklogdFileFormat,
SyslogProtocol23Format,TraditionalFileFormat,
TraditionalForwardFormat,TraditionalFormatWithPRI

Standardeinstellung: RSYSLOGD_DEFAULT_LINE_TEMPLATE='TraditionalFileFormat'

RSYSLOGD_LOG_FQDN

Sollen Fully Qualified Domain Names (z.B. eismini.ap.de) im Log erscheinen, oder nur Hostnamen (z.B. eismini).

Gültige Werte: yes, no

Standardeinstellung: RSYSLOGD_LOG_FQDN='no'

RSYSLOGD_INTERNAL_MESSAGES

Sollen rsyslogd interne Meldungen ausgegeben werden. Solche Meldungen sind z.B. Start- und Stopmeldungen.

Gültige Werte: yes, no

Standardeinstellung: RSYSLOGD_INTERNAL_MESSAGES='yes'

RSYSLOGD_CONFIG_FILE

Absoluter Pfadname der Konfigurationsdatei.

Ist RSYSLOGD_CONFIG_FILE leer, so wird die Variable auf '/etc/rsyslog.conf' gesetzt.

Standardeinstellung: RSYSLOGD_CONFIG_FILE='/etc/rsyslog.conf'

RSYSLOGD_CONFIG_DIR

Absoluter Pfad der Konfigurationsdateien. Wenn RSYSLOGD_CONFIG_DIR gesetzt ist, so zeigt RSYSLOGD_CONFIG_FILE auf RSYSLOGD_CONFIG_DIR durch Nutzung der $IncludeConfig Konfigurations Direktive.

Im Verzeichnis aus RSYSLOGD_CONFIG_DIR werden derzeit bis zu vier Dateien erzeugt:
  10_rsyslogd.conf Allgemeine Konfigurationsteile
  15_rsyslogd.conf Konfiguration der 'Global Discard Filter'
  20_rsyslogd.conf Konfiguration der 'Rule Settings'
  25_rsyslogd.conf Konfiguration der 'File Input Definitions'

Datei 15_rsyslogd.conf existiert nur bei RSYSLOGD_GLOBAL_DISCARD_FILTER='yes'. Datei 25_rsyslogd.conf wird nur erzeugt, wenn RSYSLOGD_FILE_INPUT='yes' gesetzt ist.

Da der rsyslogd die Dateien im Verzeichnis RSYSLOGD_CONFIG_DIR in alphabetischer Reihenfolge abarbeitet können manuell zusätzliche Konfigurationsteile ergänzt werden. Dies sollten nur erfahrene Anwender tun. Dabei ist zu beachten, dass einige Konfigurationselemente überschrieben (neu gesetzt) werden können, andere aber nur einmalig vorkommen dürfen.

Wird RSYSLOGD_CONFIG_DIR='' gesetzt, so wird die gesamte Konfiguration in die Datei aus RSYSLOGD_CONFIG_FILE geschrieben.

Standardeinstellung: RSYSLOGD_CONFIG_DIR='/etc/rsyslog.d'

RSYSLOGD_MARK_INTERVAL

Rsyslogd mark intervall in Sekunden. RSYSLOGD_MARK_INTERVAL='0' schaltet die Ausgabe der mark Zeile aus. Die mark Zeile enthält nur Datum und Uhrzeit sowie den Servernamen und die Zeichenfolge '--MARK--'.

Achtung: Angabe in Sekunden!
Der syslogd aus Base nutzt hier Angaben in Minuten.

Standardeinstellung: RSYSLOGD_MARK_INTERVAL='600'

RSYSLOGD_OPTIONS

Zusätzliche Kommandozeilenargumente. Diese Option kann z.B. zum Debuggen des rsyslogd benutzt werden und sollte nur von erfahrenen Anwendern genutzt werden.

Standardeinstellung: RSYSLOGD_OPTIONS=''

rsyslogd syslog server (global discard filter)

RSYSLOGD_GLOBAL_DISCARD_FILTER

Legt fest ob sog. 'Global Discard Filter' genutzt werden sollen. Mittels 'global discard filter' können Meldungen über entsprechende Filterregeln verworfen werden. Dies kann dazu dienen überflüssige Meldungen auszufiltern um die Größe der Logfile zu minimieren.

Siehe Kapitel 'Global Discard Filter'

Gültige Werte: yes, no

Standardeinstellung: RSYSLOGD_GLOBAL_DISCARD_FILTER='no'

RSYSLOGD_GLOBAL_DISCARD_FILTER_DEBUG

Soll die Debug Hilfe für 'Global Discard Filter' eingeschaltet werden, 'yes' oder 'no'. Wird die Debug Hilfe eingeschaltet, so werden alle Meldungen VOR der Nutzung der Filter in die Datei /var/log/before_filter geschrieben und alle Meldungen NACH der Nutzung der Filter in die Datei /var/log/after_filter geschrieben.

Unter Nutzung des Befehls
diff -y -W 200 /var/log/before_filter /var/log/after_filter
kann dann kontrolliert werden, ob die Filter korrekt arbeiten und nicht zu viele Meldungen ausgefiltert werden.

Gültige Werte: yes, no

Standardeinstellung: RSYSLOGD_GLOBAL_DISCARD_FILTER_DEBUG='no'

RSYSLOGD_GLOBAL_DISCARD_FILTER_N

Anzahl der Filter.

Gültige Werte: Zahl

Standardeinstellung: RSYSLOGD_GLOBAL_DISCARD_FILTER_N='0'

RSYSLOGD_GLOBAL_DISCARD_FILTER_x_NAME

Name bzw. Beschreibung des Filters.

Standardeinstellung: RSYSLOGD_GLOBAL_DISCARD_FILTER_x_NAME=''

RSYSLOGD_GLOBAL_DISCARD_FILTER_x_ACTIVE

Legt fest, ob der Filter aktiv ist.

Gültige Werte: yes, no

Standardeinstellung: RSYSLOGD_GLOBAL_DISCARD_FILTER_x_ACTIVE='yes'

RSYSLOGD_GLOBAL_DISCARD_FILTER_x_PROPERTY

Eigenschaft der Meldungen, die beim Filter genutzt werden soll.

  msg Meldungs Teil
  hostname Hostname wie www.ap.de
  fromhost Sendender Host, bei Meldungen von einem anderen Host
  fromhost-ip IP des sendenden Hosts, bei Meldungen von einem anderen Host
  syslogtag Tag wie sshd[2169] xinetd[1493]
  programname Programm name wie sshd xinetd

Standardeinstellung: RSYSLOGD_GLOBAL_DISCARD_FILTER_x_PROPERTY='msg'

RSYSLOGD_GLOBAL_DISCARD_FILTER_x_OPERATION

Anzuwendende Operation (Suchfunktion).

  contains ist enthalten mit exakter Übereinstimmung
  isequal ist gleich mit exakter Übereinstimmung
  startswith beginnt mit exakter Übereinstimmung
  regex POSIX BRE regulärer Ausdruck
  ereregex POSIX ERE regulärer Ausdruck
  !contains Negation von contains
  !isequal Negation von isequal
  !startswith Negation von startswith
  !regex Negation von regex
  !ereregex Negation von ereregex

Vorsicht bei der Anwendung von Negationen. Hier können höchst unerwünschte Ergebnisse erzielt werden.

Standardeinstellung: RSYSLOGD_GLOBAL_DISCARD_FILTER_x_OPERATION='contains'

RSYSLOGD_GLOBAL_DISCARD_FILTER_x_VALUE

Suchstring für den Filter.

Standardeinstellung: RSYSLOGD_GLOBAL_DISCARD_FILTER_x_VALUE=''

rsyslogd syslog server (rule settings)

RSYSLOGD_MYSQL_DB_NAME

MySQL/Maria DB Database Name für Aktionen, die eine Datenbank nutzen. Diese Variable wird bei den Skripten im Menue 'rsyslogd tools' genutzt.

Achtung:
In der Regel selbst muss der Name als String eingegeben werden, dort wird NICHT der Inhalt RSYSLOGD_MYSQL_DB_NAME genutzt.

Standardeinstellung: RSYSLOGD_MYSQL_DB_NAME='Syslog'

RSYSLOGD_RULE_N

Anzahl der Regeln.

Gültige Werte: Zahl

Standardeinstellung: RSYSLOGD_RULE_N='2'

RSYSLOGD_RULE_x_NAME

Name bzw. Beschreibung der Regel.

Gültige Werte: Text

Standardeinstellung: RSYSLOGD_RULE_x_NAME=''

RSYSLOGD_RULE_x_ACTIVE

Legt fest, ob die Regel aktiv ist.

Gültige Werte: yes, no

Standardeinstellung: RSYSLOGD_RULE_x_ACTIVE='yes'

RSYSLOGD_RULE_x_SELECTOR_N

Anzahl der Selektoren. Derzeit werden nur sog. Multiselektorlisten, die durch ein Semikolon (';') getrennt werden, unterstützt. Wenn Multiselektorlisten, die durch ein Komma (',') getrennt werden genutzt werden sollen, so muss dies über
RSYSLOGD_CONFIGURATION='manual' realisiert werden.

Gültige Werte: Zahl

Standardeinstellung: RSYSLOGD_RULE_x_SELECTOR_N='2'

RSYSLOGD_RULE_x_SELECTOR_x_NAME

Name bzw. Beschreibung des Selektors.

Gültige Werte: Text

Standardeinstellung: RSYSLOGD_RULE_x_SELECTOR_x_NAME=''

RSYSLOGD_RULE_x_SELECTOR_x_ACTIVE

Legt fest, ob der Selektor aktiv ist.

Gültige Werte: yes, no

Standardeinstellung: RSYSLOGD_RULE_x_SELECTOR_x_ACTIVE='yes'

RSYSLOGD_RULE_x_SELECTOR_x

Selektorfeld der Regel (z.B. kern.info oder mail.=info).

Gültige Werte: Selektor

Standardeinstellung: RSYSLOGD_RULE_x_SELECTOR_x='*.*'

RSYSLOGD_RULE_x_ACTION

Aktion für die Regel.

  Regular File: /filename oder -/filename
    (- omit syncing the file after every logging)
  Named Pipes: |filename
  Terminal and Console: /dev/ttyname
  Remote Machine: @host[:Port] / @IP-Adresse[:Port] über UDP oder
  Remote Machine: @@host[:Port] / @@IP-Adresse[:Port] über TCP
  User or List of Users: willi oder root,willi
  Everyone logged on: *
  Discard: ~
  Shell execute: ^program-to-execute
  Database: >host,database,user,password

Diese Version des Paketes unterstützt nur die MySQL bzw. Maria DB Datenbank.

Sollen die Logzeilen in zwei Ziele, also z.B. sowohl in eine Datei, als auch in eine Datenbank ausgegeben werden, so muss die gesamte Regel doppelt, aber mit den verschiedenen ACTION-Angaben, erzeugt werden.

Gültige Werte: siehe oben

Standardeinstellung: RSYSLOGD_RULE_x_ACTION='/var/log/messages'

RSYSLOGD_RULE_x_LINE_TEMPLATE

Format der Zeilen im Log.

Gültige Werte: Default,MySQLInsert,DebugFormat,FileFormat,
ForwardFormat,SysklogdFileFormat,MySQLInsertProgname,
SyslogProtocol23Format,TraditionalFileFormat,
TraditionalForwardFormat,TraditionalFormatWithPRI

Wird RSYSLOGD_RULE_x_LINE_TEMPLATE auf 'Default' gesetzt,
so wird RSYSLOGD_DEFAULT_LINE_TEMPLATE genutzt.
Werden die Logzeilen in eine Datenbank geschrieben, so wird
standardmäßig 'MySQLInsert' genutzt, es sein denn, es wird
explizit 'MySQLInsertProgname' gesetzt.
MySQLInsertProgname benutzt '%programname%' statt '%syslogtag%'.

Standardeinstellung: RSYSLOGD_RULE_x_LINE_TEMPLATE='Default'

RSYSLOGD_RULE_x_ROTATE

Legt fest, ob der für diese Regel (Ziel der Regel) eine Logrotate Konfiguration generiert werden soll.

Gültige Werte: yes, no

Achtung: Nicht alle Ziele (ACTION-Angaben) können rotieren.
Kann eine ACTION-Angabe nicht rotieren, so wird de Angabe ggf. ignoriert und eine entsprechende Warnung ausgegeben.

Standardeinstellung: RSYSLOGD_RULE_x_ROTATE='yes'

RSYSLOGD_RULE_x_ROTATE_MODE

Legt fest, welcher Modus für das Logrotate genutzt werden soll.

std : es wird der Standard Modus (logrotate über cron) genutzt
size: es wird über eine einstellbare Größe der Datei unter Nutzung
      sog. outchannel rotiert

Gültige Werte: std, size

Standardeinstellung: RSYSLOGD_RULE_x_ROTATE_MODE='std'

RSYSLOGD_RULE_x_ROTATE_PRE_CMD

Pre rotate Kommando der Logrotate Konfiguration.
Bei Nutzung von RSYSLOGD_RULE_x_ROTATE_MODE='std'

Gültige Werte: Text

Standardeinstellung: RSYSLOGD_RULE_x_ROTATE_PRE_CMD=''

RSYSLOGD_RULE_x_ROTATE_POST_CMD

Post rotate Kommando der Logrotate Konfiguration.
Bei Nutzung von RSYSLOGD_RULE_x_ROTATE_MODE='std'

Gültige Werte: Text

Standardeinstellung: RSYSLOGD_RULE_x_ROTATE_POST_CMD='/etc/init.d/rsyslogd --quiet restart'

RSYSLOGD_RULE_x_ROTATE_LOG_INTERVAL

Logrotate interval.
Bei Nutzung von RSYSLOGD_RULE_x_ROTATE_MODE='std'

Gültige Werte: daily, weekly, monthly

Standardeinstellung: RSYSLOGD_RULE_x_ROTATE_LOG_INTERVAL='daily'

RSYSLOGD_RULE_x_ROTATE_LOG_COUNT

Anzahl der Logfiles, die behalten werden sollen.
Bei Nutzung von RSYSLOGD_RULE_x_ROTATE_MODE='std'
und RSYSLOGD_RULE_x_ROTATE_MODE='size'

Gültige Werte: Zahl

Standardeinstellung: RSYSLOGD_RULE_x_ROTATE_LOG_COUNT='10'

RSYSLOGD_RULE_x_ROTATE_SIZE

Maximale Dateigröße in Bytes.
Bei Nutzung von RSYSLOGD_RULE_x_ROTATE_MODE='size'

Gültige Werte: Zahl

Standardeinstellung: RSYSLOGD_RULE_x_ROTATE_SIZE='2085181488'

rsyslogd syslog server (listener settings)

RSYSLOGD_LISTEN

Legt fest, auf welchen Adressen der rsyslogd 'lauschen' soll.
ipv4-only      nur IPv4 Adressen werden genutzt.
ipv6-only      nur IPv6 Adressen werden genutzt.
Ist RSYSLOGD_LISTEN='' gesetzt, so nutzt der rsyslogd alle Adressen des Systems, also IPv4 Adressen und IPv6 Adressen.

Gültige Werte: leer, ipv4-only, ipv6-only

Standardeinstellung: RSYSLOGD_LISTEN=''

RSYSLOGD_UDP_PORT

Legt den zu nutzenden UDP Port fest.
Wird RSYSLOGD_UDP_PORT='disabled' gesetzt, so 'lauscht' der rsyslogd nicht auf dem UPD Port.
Der Standardport ist '514'.

Gültige Werte: Portnummer oder disabled

Standardeinstellung: RSYSLOGD_UDP_PORT='disabled'

RSYSLOGD_TCP_PORT

Legt den zu nutzenden TCP Port fest.
Wird RSYSLOGD_TCP_PORT='disabled' gesetzt, so 'lauscht' der rsyslogd nicht auf dem TCP Port.
Der Standardport ist '514'.

Gültige Werte: Portnummer oder disabled

Standardeinstellung: RSYSLOGD_TCP_PORT='disabled'

RSYSLOGD_SUPPRESS_WARNINGS

Legt fest, ob Warnungen bezüglich nicht authorisierten Sendern ausgegeben werden sollen. Nicht authorisierten Sender sind solche Sender, die nicht in der
RSYSLOGD_ALLOWED_SENDER_N Liste augeführt sind (und damit nicht in die AllowedSender Direktive übernommen werden).

Achtung:
Die Funktionalität RSYSLOGD_SUPPRESS_WARNINGS [global net.permitACLWarning setting] scheint derzeit nicht korrekt zu arbeiten.

Gültige Werte: yes, no

Standardeinstellung: RSYSLOGD_SUPPRESS_WARNINGS='yes'

rsyslogd syslog server (allowed sender list)

RSYSLOGD_ALLOWED_SENDER_N

Anzahl der authorisierten Sender.

Gültige Werte: Zahl

Standardeinstellung: RSYSLOGD_ALLOWED_SENDER_N='0'

RSYSLOGD_ALLOWED_SENDER_x_PROT

Protokoll, das genutzt wird.

Gültige Werte: UDP oder TCP

Standardeinstellung: RSYSLOGD_ALLOWED_SENDER_x_PROT='UDP'

RSYSLOGD_ALLOWED_SENDER_x_ACTIVE

Legt fest, ob Konfigurationselement aktiv ist oder nicht.

Gültige Werte: yes, no

Standardeinstellung: RSYSLOGD_ALLOWED_SENDER_x_ACTIVE='yes'

RSYSLOGD_ALLOWED_SENDER_x

Authorisierten Sender. IP-Adresse (z.B. 192.168.1.6) oder Hostname (z.B. eisnodev) oder FQDN (z.B. eisnodev.ap.de) oder Netzwerk (z.B. *.ap.de oder 192.168.1.0/24)

Gültige Werte: siehe oben

Standardeinstellung: RSYSLOGD_ALLOWED_SENDER_x='127.0.0.1'

rsyslogd cron job to purge DB table

RSYSLOGD_DBPURGE

Bereinigung der Tabelle SystemEvents unter Nutzung eines cron jobs.
Es wird durch das Skript, welches der cron job startet, ein Protokolleintrag der folgenden Form erzeugt:

Mar 28 00:10:01 eiskernel root: rsyslogd: table SystemEvents total 4170 rows / 58 will be deleted

Eine Bereinigung findet nur statt, wenn die 'will be deleted' Angabe einen Wert größer 0 anzeigt.

Achtung: bei RSYSLOGD_DBPURGE='no' kann die Tabelle SystemEvents und damit die Datenbank enorm wachsen.

Gültige Werte: yes, no

Standardeinstellung: RSYSLOGD_DBPURGE='no'

RSYSLOGD_DBPURGE_SCHEDULE

Konfiguration des cron jobs. Der Default '10 0 * * *' bedeutet, dass der cron job jeden Tag um 00:10 Uhr ausgeführt werden soll.

Gültige Werte: Konfigurationsstring für cron jobs

Standardeinstellung: RSYSLOGD_DBPURGE_SCHEDULE='10 0 * * *'

RSYSLOGD_DBPURGE_KEEP_DAYS

Anzahl Tage, für die die Logeinträge in der Tabelle SystemEvents erhalten bleiben sollen. Der Default '7' bedeutet 7 Tage bzw. eine Woche.

Gültige Werte: Zahl

Standardeinstellung: RSYSLOGD_DBPURGE_KEEP_DAYS='7'

rsyslogd syslog server (file input definitions)

RSYSLOGD_FILE_INPUT

Soll File Input genutzt werden, ja oder nein.

Gültige Werte: yes, no

Standardeinstellung: RSYSLOGD_FILE_INPUT='no'

RSYSLOGD_FILE_INPUT_N

Anzahl der Definitionen.

Gültige Werte: Zahl

Standardeinstellung: RSYSLOGD_FILE_INPUT_N='0'

RSYSLOGD_FILE_INPUT_x_NAME

Name bzw. Beschreibung der Definition.

Gültige Werte: Text

Standardeinstellung: RSYSLOGD_FILE_INPUT_x_NAME=''

RSYSLOGD_FILE_INPUT_x_ACTIVE

Ist die Definition aktiv ja oder nein.

Gültige Werte: yes, no

Standardeinstellung: RSYSLOGD_FILE_INPUT_x_ACTIVE='yes'

RSYSLOGD_FILE_INPUT_x_FILENAME

Absoluter Pfadname der Input Datei.

Gültige Werte: absoluter Pfad

Standardeinstellung: RSYSLOGD_FILE_INPUT_x_FILENAME='/var/log/log.url-error'

RSYSLOGD_FILE_INPUT_x_TAG

Zu nutzender Tag für die Logmeldungen. Es ist sinnvoll den Tag mit einem Doppelpunkt als letztes Zeichen einzugeben.

Gültige Werte: nicht leer

Standardeinstellung: RSYSLOGD_FILE_INPUT_x_TAG='url-error:'

RSYSLOGD_FILE_INPUT_x_FACILITY

Zu nutzende Facility für die Logmeldungen. Z.B. news, user, local0, local1, local2, local3, local4, local5, local6, local7.

Gültige Werte: facility

Standardeinstellung: RSYSLOGD_FILE_INPUT_x_FACILITY='local7'

RSYSLOGD_FILE_INPUT_x_SEVERITY

Zu nutzende Severity für die Logmeldungen.

Gültige Werte: debug, info, notice, warning, err, crit, alert, emerg

Standardeinstellung: RSYSLOGD_FILE_INPUT_x_SEVERITY='err'

Spezielle Menuepunkt

Menue: Test rsyslogd configuration

Über diesen Menuepunkt kann die rsyslogd Konfiguration durch den Daemon selbst geprüft werden. Dazu wird er intern mit dem Parameter '-N 10' aufgerufen.

Die Prüfung kann von der Kommandozeile auch über
    /etc/init.d/rsyslogd test
ausgeführt werden.

Im Erfolgsfall wird eine Meldung wie folgt ausgegeben:

Test rsyslogd configuration
/etc/init.d/rsyslogd test
rsyslogd: version 8.7.0, config validation run (level 10), master config
/etc/rsyslog.conf
rsyslogd: End of config validation run. Bye.
Press ENTER to continue

Die Fehlermeldungen sind leider (manchmal) etwas kryptisch:

Test rsyslogd configuration
/etc/init.d/rsyslogd test
rsyslogd: version 8.7.0, config validation run (level 10), master config
/etc/rsyslog.conf
rsyslogd: action 'local9' treated as ':omusrmsg:local9' - please change
syntax, 'local9' will not be
supported in the future [try http://www.rsyslog.com/e/2184 ]
rsyslogd: error during parsing file /etc/rsyslog.d/20_rsyslogd.conf, on
or before line 8: warnings
occured in file '/etc/rsyslog.d/20_rsyslogd.conf' around line 8
[try http://www.rsyslog.com/e/2207 ]
rsyslogd: invalid character in selector line - ';template' expected
rsyslogd: error during parsing file /etc/rsyslog.d/20_rsyslogd.conf, on
or before line 8: errors
occured in file '/etc/rsyslog.d/20_rsyslogd.conf' around line 8 
try http://www.rsyslog.com/e/2207 ]
rsyslogd: End of config validation run. Bye.
Press ENTER to continue

Hier wurde z.B.
local9.=info /var/log/log.eis-install;TraditionalFormat
statt
local5.=info /var/log/log.eis-install;TraditionalFormat
bei einer manuellen Konfiguration genutzt.

Menue: rsyslogd tools

Über ein Untermenue werden folgende Werkzeuge zur Verfügung gestellt.

Create configuration using syslog(base)

Unter Nutzung der aktuellen Konfiguration für den syslogd aus der base Konfiguration wird eine Konfiguration für den rsyslogd erzeugt.

Die globalen Angaben
SYSLOGD_LOG_COUNT
SYSLOGD_LOG_INTERVAL
werden für alle einzelnen Rules als
RSYSLOGD_RULE_x_ROTATE_LOG_COUNT und
RSYSLOGD_RULE_x_ROTATE_LOG_INTERVAL übernommen.

Nutzung einer Datanbank

Soll eine MySQL oder Maria DB Datenbank genutzt werden, um Logzeilen in die Datenbank zu schreiben, so ist wie folgt vorzugehen:

Schritt 1.)
Installation, Konfiguration und Start von MySQL oder Maria DB falls nicht bereits geschehen.

Schritt 2.)
Erzeugen der notwendigen Logging Datenbank über das Menue 'Create logging database'.

Schritt 3.)
Anlegen eines entsprechenden Users, um in die Tabellen der Logging Datenbank schreiben zu können. Dies geschieht über das Menue 'Grant full rights on logging database to a user'.

Schritt 4.)
Erzeugen einer RULE, die als Ziel die Datanbank hat.

Bei den Schritten 1 bis 3 wird der Inhalt der Variablen RSYSLOGD_MYSQL_DB_NAME genutzt. In der Regel selbst muss der Name der Datenbank als als String eingegeben werden, dort wird nicht RSYSLOGD_MYSQL_DB_NAME genutzt.

Create logging database

Es wird die Datenbank aus RSYSLOGD_MYSQL_DB_NAME (Achtung: Groß- und Kleinschreibung beachten) in der lokalen MySQL- oder Maria DB-Instanz erzeugt.

Skripts siehe
/usr/lib/rsyslog/createDB.sql
und
/usr/lib/rsyslog/alterDB.sql

Das Skript alterDB.sql enthält Erweiterungen, die für den
Adiscon's Log Analyzer (Copyright Adiscon) benötigt werden.

In einer zukünftigen Version des rsyslogd Paketes wird die Ausführung von
/usr/lib/rsyslog/alterDB.sql ein- bzw. ausschaltbar sein.

Grant full rights on logging database to a user

Den während des Aufrufs einzugebenden User mit den einzugebenden Passwort werden alle Rechte auf die Tabellen der Datenbank aus RSYSLOGD_MYSQL_DB_NAME gegeben.
Damit wird implizit auch der User angelegt.

Die RSYSLOGD_RULE_x_ACTION muss für MySQL wie folgt angegeben werden:
>localhost,<Name der logging database>,<Username>,<Passwort>

Username und Passwort müssen (natürlich) mit den Angaben bei 'Grant full rights on logging database to a user' übereinstimmen.

Grant read rights on logging database to a user

Den während des Aufrufs einzugebenden User mit den einzugebenden Passwort werden ausschließlich Lese-Rechte auf die Tabellen der Datenbank aus RSYSLOGD_MYSQL_DB_NAME gegeben.
Damit wird implizit auch der User angelegt.

Dieser User kann z.B. zur Auswertung der Tabellen genutzt werden.

Über

mysql -u <Username> -p <Name der logging database>
select * from SystemEvents order by ID;

kann danach z.B. die Tabelle SystemEvents ausgewertet werden.

Drop logging database

Über diesen Menuepunkt kann die komplette logging database gelöscht werden.

Zur Sicherheit erfolgt eine entsprechende Rückfrage:
Do you really want to drop database xxxxxx ? (y/n) [n]?
mit Default n wie no.

Bei xxxxxx wird er Name aus RSYSLOGD_MYSQL_DB_NAME ausgegeben.

Manual logfile rotate

Unter Umständen ist es sinnvoll ein Logfile unabhängig von der Größe und insbesondere unabhängig vom Aufruf von lorotate via cron zu rotieren. Dies ist üeber das Tool 'Manual logfile rotate' möglich.

Beim Aufruf wird ein Untermenü mit den Namen der Logfiles angeboten, die rotiert werden können.

Beispiel:

   1   Rotate file messages
   2   Rotate file log.eis-install

Wird z.B. 1 Rotate file messages ausgewählt, so wird hier folgendes ausgegeben:

rsyslogd: Rotate logfile manually

File to rotate: messages

Probably loss of log information when rotating an outchannel logfile
Empty RSYSLOGD_RULE_%_ROTATE_POST_CMD set to
      '/etc/init.d/rsyslogd --quiet reload' 

Logrotate finished with return code 0

Press ENTER to continue
Achtung: Zeilenumbruch zur Lesbarkeit eingebaut.

Die beiden Warnungen erscheinen, weil hier bem Logfile messages
RSYSLOGD_RULE_1_ROTATE_MODE='size' genutzt wird und damit das sog. outchannel Modul aktiv ist. Bei der gemischten Nutzung von outchannel Modul und logrotate kann es zum Verlußt von Loginformation kommen.
Außerdem wurde bei RSYSLOGD_RULE_1_ROTATE_POST_CMD keine Angabe gemacht. Es wird daher beim manuellen Logrotate der oben aufgeführte Befehl genutzt.

Der Logrotate-Befehl wird mit der Option -f (force) ausgeführt.

Test log messages

Über den Befehl logger werden Testmessages an den rsyslogd geschickt. Dabei sind die Facility (FACILITY), die Priorität (PRIORITY), die Anzahl der Durchläufe (Count) und eine Wartezeit (Sleep (seconds)) auswählbar.

Ergebnis sind dann z.B. Zeilen der Form

Dec 13 16:13:49 eis2 root: Testmessage from eis4 (local7:warning)
Dec 13 16:13:49 eis2 root: Testmessage from eis4 (local7:err)
Dec 13 16:13:49 eis2 root: Testmessage from eis4 (local7:crit)
Dec 13 16:13:49 eis2 root: Testmessage from eis4 (local7:alert)
Dec 13 16:13:49 eis2 root: Testmessage from eis4 (local7:emerg)

in einer Log-Datei.

Analyze log rules

Hier wird analysiert, welche Rules welches Tupel FACILITY/PRIORITY loggen.
ACHTUNG: Dieses Analysetool ist ggf. noch fehlerhaft und muss ggf. noch
         korrigiert werden.

Beispiel:

rsyslogd logger analyze script

analyzing rule 1 ...
analyzing rule 2 ...
Result:

          debug    info     notice   warning  err      crit     alert    emerg
auth      #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
authpriv  #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
cron      #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
daemon    #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
kern      #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
lpr       #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
mail      #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
mark      #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
news      #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
syslog    #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
user      #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
uucp      #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
local0    #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
local1    #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
local2    #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
local3    #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
local4    #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
local5    #1#      #2#      #1#      #1#      #1#      #1#      #1#      #1#
local6    #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
local7    #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#

Press ENTER to continue

Hier existieren nur zwei Rules.
Alle Tupel FACILITY/PRIORITY bis auf local5/info werden über die Rule 1 (#1#) erfaßt. Nur das Tupel local5/info wird über Rule 2 (#2#) erfaßt.

Eine andere Konfiguration zeigt:

rsyslogd logger analyze script

analyzing rule 1 ...
analyzing rule 2 ...
Result:

          debug    info     notice   warning  err      crit     alert    emerg
auth      #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
authpriv  #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
cron      #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
daemon    #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
kern      #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
lpr       #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
mail      #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
mark      #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
news      #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
syslog    #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
user      #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
uucp      #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
local0    #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
local1    #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
local2    #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
local3    #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
local4    #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
local5    #1#      #2#      #1#2#    #1#2#    #1#2#    #1#2#    #1#2#    #1#2#
local6    #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#
local7    #1#      #1#      #1#      #1#      #1#      #1#      #1#      #1#

Press ENTER to continue

Hier wird local5/notice und höher durch zwei Rules #1#2# erfaßt.

Global Discard Filter

Einige Module / Programme etc. erzeugen zyklisch Syslog-Nachrichten, die die rsyslogd Ziele unnötig aufblähen.
Diese Syslog-Meldungen lassen sich ggf. nicht über facility / priority Angaben ausfiltern sondern nur über den Inhalt der Meldungen.

Dies kann über 'Global Discard Filter' geschehen.

Beispiel 1 (von Jürgen Edner):

Das USBIP-Modul generiert beispielhaft zyklisch folgende Meldungen:

  Apr 17 13:09:04 farragut kernel: vhci\_hcd: dequeue a urb ed71d900
  Apr 17 13:09:04 farragut kernel: vhci\_hcd: device ed7e7910 seems
                                   to be still connected
  Apr 17 13:09:04 farragut kernel: vhci\_hcd: unlink->seqnum 679095
  Apr 17 13:09:04 farragut kernel: vhci\_hcd: urb->status -104
Achtung: Zeilenumbruch zur Lesbarkeit eingebaut.

Andere kernel Meldungen und andere Meldungen von vhci_hcd sollen natürlich NICHT ausgefiltert werden!

Die obigen Meldungen lassen sich leicht über folgende 'Global Discard Filter' unterdrücken.

RSYSLOGD_GLOBAL_DISCARD_FILTER_N='4'
RSYSLOGD_GLOBAL_DISCARD_FILTER_1_PROPERTY='msg'
RSYSLOGD_GLOBAL_DISCARD_FILTER_1_OPERATION='contains'
RSYSLOGD_GLOBAL_DISCARD_FILTER_1_VALUE='vhci_hcd: dequeue a urb'
RSYSLOGD_GLOBAL_DISCARD_FILTER_2_PROPERTY='msg'
RSYSLOGD_GLOBAL_DISCARD_FILTER_2_OPERATION='regex'
RSYSLOGD_GLOBAL_DISCARD_FILTER_2_VALUE='vhci_hcd: device.*seems
                                       to be still connected'
RSYSLOGD_GLOBAL_DISCARD_FILTER_3_PROPERTY='msg'
RSYSLOGD_GLOBAL_DISCARD_FILTER_3_OPERATION='contains'
RSYSLOGD_GLOBAL_DISCARD_FILTER_3_VALUE='vhci_hcd: unlink-\>seqnum'
RSYSLOGD_GLOBAL_DISCARD_FILTER_4_PROPERTY='msg'
RSYSLOGD_GLOBAL_DISCARD_FILTER_4_OPERATION='contains'
RSYSLOGD_GLOBAL_DISCARD_FILTER_4_VALUE='vhci_hcd: urb->status -104'
Achtung: Zeilenumbruch zur Lesbarkeit eingebaut.

Beispiel 2:

Wegen einer PAM Konfiguration, die die Installation des Samba-Paket nicht beachtet, werden ggf. folgende Meldungen ausgegeben:

Mar 26 10:26:37 eis350 login[1367]: PAM unable to dlopen(/lib/security/
       pam_smbpass.so): /lib/security/pam_smbpass.so: cannot open shared
       object file: No such file or directory
Mar 26 10:26:37 eis350 login[1367]: PAM adding faulty module: /lib/
       security/pam_smbpass.so

bzw.

Apr 29 19:46:12 eismini sshd[9746]: PAM unable to dlopen(/lib/security/
       pam_smbpass.so): /lib/security/pam_smbpass.so: cannot open shared
       object file: No such file or directory
Apr 29 19:46:12 eismini sshd[9746]: PAM adding faulty module: /lib/
       security/pam_smbpass.so
Achtung: Zeilenumbrüche zur Lesbarkeit eingebaut.

Hier sollen auf keinen Fall alle authpriv.err Meldungen oder gar alle Meldungen der Programme login oder sshd ausgefiltert werden. Diese beiden speziellen Meldungen lassen sich aber beispielsweise leicht über folgende 'Global Discard Filter' unterdrücken.

RSYSLOGD_GLOBAL_DISCARD_FILTER_N='2'
RSYSLOGD_GLOBAL_DISCARD_FILTER_1_PROPERTY='msg'
RSYSLOGD_GLOBAL_DISCARD_FILTER_1_OPERATION='contains'
RSYSLOGD_GLOBAL_DISCARD_FILTER_1_VALUE='PAM unable to dlopen(/lib/security/
                                       pam_smbpass.so)'
RSYSLOGD_GLOBAL_DISCARD_FILTER_2_PROPERTY='msg'
RSYSLOGD_GLOBAL_DISCARD_FILTER_2_OPERATION='regex'
RSYSLOGD_GLOBAL_DISCARD_FILTER_2_VALUE='PAM .* faulty module.*'
Achtung: Zeilenumbruch zur Lesbarkeit eingebaut.

ACHTUNG:
Vorsicht bei der Anwendung von Negationen. Hier können höchst unerwünschte Ergebnisse erzielt werden.

File Input Definitions

Mit Hilfe der File Input Definitions kann der rsyslogd veranlaßt werden Standard-Text-Dateien in syslog Meldungen zu konvertieren. Diese können dann auch über entsprechende Regeln auf einen Remote Host übertragen und dort zentral ausgewertet werden.

Beispiel: Ein Shell-Skript schreibt Fehlermeldungen direkt in eine Datei. Diese Fehlermeldungen sind nur direkt auf dem Host, auf dem das Shell-Skript abläuft, verfügbar. Eine entsprechende File Input Definition ermöglicht es diese Meldungen in syslog Meldungen zu konvertieren und auf einen anderen Host zu übertragen.

Hier wird (zufällig) Regel 5 genutzt.

RSYSLOGD_RULE_5_NAME=''
RSYSLOGD_RULE_5_ACTIVE='yes'
RSYSLOGD_RULE_5_SELECTOR_N='1'
RSYSLOGD_RULE_5_SELECTOR_1_NAME='Übergabe log.url-error'
RSYSLOGD_RULE_5_SELECTOR_1_ACTIVE='yes'
RSYSLOGD_RULE_5_SELECTOR_1='local7.=err'
RSYSLOGD_RULE_5_ACTION='@eis350.fritz.box'
RSYSLOGD_RULE_5_LINE_TEMPLATE='Default'
RSYSLOGD_RULE_5_ROTATE='no'

RSYSLOGD_FILE_INPUT='yes'
RSYSLOGD_FILE_INPUT_N='1'
RSYSLOGD_FILE_INPUT_1_NAME='Übergabe log.url-error'
RSYSLOGD_FILE_INPUT_1_ACTIVE='yes'
RSYSLOGD_FILE_INPUT_1_FILENAME='/var/log/log.url-error'
RSYSLOGD_FILE_INPUT_1_TAG='url-error:'
RSYSLOGD_FILE_INPUT_1_FACILITY='local7'
RSYSLOGD_FILE_INPUT_1_SEVERITY='err'

Der Inhalt der Datei /var/log/log.url-error wird auf dem Host eis350.fritz.box üebertragen.

Inhalt:

eismini # cat log.url-error
2016-09-06 10:30:45 url-fail: http://download.eisfair.org/packages/eis-list.txt

erscheint als:

Sep  6 10:30:46 eismini eismini url-error: 2016-09-06 10:30:45 url-fail:
     http://download.eisfair.org/packages/eis-list.txt

im Log von eis350.fritz.box. Achtung: Zeilenumbruch zur Lesbarkeit eingebaut.

Es werden jeweils nur 'neue' Zeilen übertragen. Eine ggf. konfigurierte Logrotate Aktion für die betroffene Datei wird abgehandelt.

Der Status der Datei wird im Verzeichnis /usr/lib/rsyslog/workdir in der Datei imfile-state:-var-log-log.url-error gehalten. Wird diese Statusdatei gelöscht, so wird erneut der gesamte Inhalt der Datei übertragen.

eis 2017-05-03