Der rsyslogd 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.
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.
Dieses Paket benötigt folgende weitere Pakete libgcrypt, libestr, libfastjason und librelp. Es ist auch abhängig davon, dass eine aktuelle Version des Basissystems installiert ist.
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 aktiv 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, z.B. durch das Installationsskript, ohne manuellen Eingriff in die Base Konfiguration ist derzeit nicht vorgesehen.
Das rsyslogd Menue ist über den Menuepunkt 'Service administration'
des Hauptmenues im zentralen Setup-Programm zu erreichen.
Auswahl: 'rsyslogd daemon'
Das Menue ist wie folgt aufgebaut:
1 | View documentation | ||
2 | View changes | ||
3 | Edit configuration | ||
4 | Advanced configuration file handling | ||
5 | Start rsyslogd | ||
6 | Stop rsyslogd | ||
7 | Restart rsyslogd | ||
8 | Reload rsyslogd configuration | ||
9 | Show rsyslogd status | ||
10 | Test rsyslogd configuration | ||
11 | Force start of rsyslogd | ||
12 | 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 | Alter logging database for LogAnalyzer | ||
7 | Manual logfile rotate | ||
8 | Test log messages | ||
9 | Analyze log rules | ||
10 | List nftables filter table | ||
11 | List allowed sender | ||
12 | Test DBPurge expert configurations | ||
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.
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 (/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.
Gültige Werte: yes, no
Standardeinstellung: START_RSYSLOGD='no'
Wird RSYSLOGD_CONFIGURATION='manual' gesetzt, so ist der Anwender für die Konfiguration verantwortlich, es wird keine Konfiguration generiert.
Gültige Werte: 'manual', ”
Standardeinstellung: RSYSLOGD_CONFIGURATION=”
Gültige Werte: DebugFormat,FileFormat,ForwardFormat,SysklogdFileFormat,
SyslogProtocol23Format,TraditionalFileFormat,
TraditionalForwardFormat,TraditionalFormatWithPRI
Standardeinstellung: RSYSLOGD_DEFAULT_LINE_TEMPLATE='TraditionalFileFormat'
Gültige Werte: yes, no
Standardeinstellung: RSYSLOGD_LOG_FQDN='no'
Gültige Werte: yes, no
Standardeinstellung: RSYSLOGD_INTERNAL_MESSAGES='yes'
Gültige Werte: yes, no
Standardeinstellung: RSYSLOGD_MSG_REDUCTION='no'
Ist RSYSLOGD_CONFIG_FILE leer, so wird die Variable auf '/etc/rsyslog.conf' gesetzt.
Standardeinstellung: RSYSLOGD_CONFIG_FILE='/etc/rsyslog.conf'
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' | |
Konfiguration der 'Filter Rules' | ||
20_rsyslogd.conf | Konfiguration der 'Rule Settings' | |
25_rsyslogd.conf | Konfiguration der 'File Input Definitions' |
Datei 15_rsyslogd.conf existiert nur wenn RSYSLOGD_GLOBAL_DISCARD_FILTER='yes' oder RSYSLOGD_FILTER='yes' gesetzt sind. 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'
Achtung: Angabe in Sekunden!
Der syslogd aus Base nutzt hier Angaben in Minuten.
Standardeinstellung: RSYSLOGD_MARK_INTERVAL='600'
Standardeinstellung: RSYSLOGD_OPTIONS=”
Siehe Kapitel 'Global Discard Filter'
Gültige Werte: yes, no
Standardeinstellung: RSYSLOGD_GLOBAL_DISCARD_FILTER='no'
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'
Gültige Werte: Zahl
Standardeinstellung: RSYSLOGD_GLOBAL_DISCARD_FILTER_N='0'
Standardeinstellung: RSYSLOGD_GLOBAL_DISCARD_FILTER_x_NAME=”
Gültige Werte: yes, no
Standardeinstellung: RSYSLOGD_GLOBAL_DISCARD_FILTER_x_ACTIVE='yes'
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'
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'
Standardeinstellung: RSYSLOGD_GLOBAL_DISCARD_FILTER_x_VALUE=”
Siehe Kapitel 'Filter Rules'
Gültige Werte: yes, no
Standardeinstellung: RSYSLOGD_FILTER='no'
Gültige Werte: Zahl
Standardeinstellung: RSYSLOGD_FILTER_N='0'
Standardeinstellung: RSYSLOGD_FILTER_x_NAME=”
Gültige Werte: yes, no
Standardeinstellung: RSYSLOGD_FILTER_x_ACTIVE='yes'
Gültige Werte: absoluter Pfad
Standardeinstellung: RSYSLOGD_FILTER_x_LOGFILE='/var/log/filter.log'
Gültige Werte: Default,MySQLInsert,DebugFormat,FileFormat,
ForwardFormat,SysklogdFileFormat,MySQLInsertProgname,
SyslogProtocol23Format,TraditionalFileFormat,
TraditionalForwardFormat,TraditionalFormatWithPRI
Wird RSYSLOGD_FILTER_x_LINE_TEMPLATE auf 'Default' gesetzt,
so wird RSYSLOGD_DEFAULT_LINE_TEMPLATE genutzt.
Standardeinstellung: RSYSLOGD_FILTER_x_LINE_TEMPLATE='Default'
Gültige Werte: yes, no
Standardeinstellung: RSYSLOGD_FILTER_x_STOP='yes'
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_FILTER_x_PROPERTY='hostname'
== | ist gleich | |
!= | ist ungleich | |
<> | ist ungleich | |
< | ist kleiner | |
> | ist größer | |
<= | ist kleiner oder gleich | |
>= | ist größer oder gleich | |
contains | ist enthalten mit exakter Übereinstimmung | |
startswith | beginnt mit exakter Übereinstimmung |
Standardeinstellung: RSYSLOGD_FILTER_x_OPERATION
Standardeinstellung: RSYSLOGD_FILTER_x_VALUE='myhostname'
Gültige Werte: yes, no
Standardeinstellung: RSYSLOGD_MYSQL_DB_USE='no'
Standardeinstellung: RSYSLOGD_MYSQL_DB_PACKAGE=”
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'
Gültige Werte: leer oder 1..65535
Standardeinstellung: RSYSLOGD_MYSQL_DB_REMOTE_PORT=”
Gültige Werte: Zahl
Standardeinstellung: RSYSLOGD_RULE_N='2'
Gültige Werte: Text
Standardeinstellung: RSYSLOGD_RULE_x_NAME=”
Gültige Werte: yes, no
Standardeinstellung: RSYSLOGD_RULE_x_ACTIVE='yes'
Gültige Werte: Zahl
Standardeinstellung: RSYSLOGD_RULE_x_SELECTOR_N='2'
Gültige Werte: Text
Standardeinstellung: RSYSLOGD_RULE_x_SELECTOR_x_NAME=”
Gültige Werte: yes, no
Standardeinstellung: RSYSLOGD_RULE_x_SELECTOR_x_ACTIVE='yes'
Gültige Werte: Selektor
Standardeinstellung: RSYSLOGD_RULE_x_SELECTOR_x='*.*'
Regular File: | /filename oder -/filename | |
(- kein sync nach jedem logging) | ||
Dynamic filenames: | ?/filename oder -?/filename | |
filename mit properties | ||
(- kein sync nach jedem 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 | |
Remote RELP Protokoll: | :omrelp:IP-address:port oder :omrelp:host:port |
Zu properties siehe Kapitel 'properties'. Zur Logrotate Konfiguration siehe Kapitel 'Logrotate Konfiguration fuer Dynamic Files'.
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.
ACHTUNG:
Wird das Output Modul omrelp genutzt, so muss das Package ”libgnutls”
installiert sein. Das Package ”libgnutls” wurde nicht als required
in die Package Datei des rsyslogd aufgenommen, da es zusammen mit den für
”libgnutls” selbst notwendigen Packages sehr umfangreich ist.
Gültige Werte: siehe oben
Standardeinstellung: RSYSLOGD_RULE_x_ACTION='/var/log/messages'
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'
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'
Gültige Werte: std, size
Standardeinstellung: RSYSLOGD_RULE_x_ROTATE_MODE='std'
Gültige Werte: Text
Standardeinstellung: RSYSLOGD_RULE_x_ROTATE_PRE_CMD=”
Gültige Werte: Text
Standardeinstellung: RSYSLOGD_RULE_x_ROTATE_POST_CMD='/etc/init.d/rsyslogd ––quiet restart'
Gültige Werte: daily, weekly, monthly
Standardeinstellung: RSYSLOGD_RULE_x_ROTATE_LOG_INTERVAL='daily'
Gültige Werte: Zahl
Standardeinstellung: RSYSLOGD_RULE_x_ROTATE_LOG_COUNT='10'
Gültige Werte: Zahl
Standardeinstellung: RSYSLOGD_RULE_x_ROTATE_SIZE='2085181488'
Gültige Werte: leer, ipv4-only, ipv6-only
Standardeinstellung: RSYSLOGD_LISTEN=”
Gültige Werte: yes, no
Standardeinstellung: RSYSLOGD_IMUDP='no'
Gültige Werte: Zahl
Standardeinstellung: RSYSLOGD_IMUDP_N='0'
Gültige Werte: 1..65535
Standardeinstellung: RSYSLOGD_IMUDP_x_PORT='514'
Gültige Werte: yes, no
Standardeinstellung: RSYSLOGD_IMTCP='no'
Gültige Werte: Zahl
Standardeinstellung: RSYSLOGD_IMTCP_N='0'
Gültige Werte: 1..65535
Standardeinstellung: RSYSLOGD_IMTCP_x_PORT='514'
Die Konfiguration der RSYSLOGD_ALLOWED_SENDER wird ab der Paketversion 1.1.6 nicht mehr auf die rsyslog Direktiven $AllowedSender abgebildet. Statt dessen werden Filterregeln für die Kernel NFtables erzeugt.
Siehe Kapitel 'List nftables filter table'
Gültige Werte: Zahl
Standardeinstellung: RSYSLOGD_ALLOWED_SENDER_N='0'
Gültige Werte: yes, no
Standardeinstellung: RSYSLOGD_ALLOWED_SENDER_x_ACTIVE='yes'
Gültige Werte: UDP, TCP oder RELP
Standardeinstellung: RSYSLOGD_ALLOWED_SENDER_x_PROT='RELP'
Gültige Werte: numerische Portnummer
Standardeinstellung: RSYSLOGD_ALLOWED_SENDER_x_PORT='20514'
Gültige Werte: siehe oben
Standardeinstellung: RSYSLOGD_ALLOWED_SENDER_x='127.0.0.1'
Gültige Werte: yes, no
Standardeinstellung: RSYSLOGD_IMPSTAT='no'
Gültige Werte: Zahl
Standardeinstellung: RSYSLOGD_IMPSTATS_INTERVAL='300'
Gültige Werte: Facility (numerisch) 0..23
Standardeinstellung: RSYSLOGD_IMPSTATS_FACILITY='5'
Gültige Werte: Severity (numerisch) 0..7
Standardeinstellung: RSYSLOGD_IMPSTATS_SEVERITY='6'
Gültige Werte: yes, no
Standardeinstellung: RSYSLOGD_IMPSTATS_BRACKETING='no'
Gültige Werte: yes, no
Standardeinstellung: RSYSLOGD_IMPSTATS_SYSLOG='yes'
Gültige Werte: absoluter Dateiname (z.B. /var/log/impstat.log)
Standardeinstellung: RSYSLOGD_IMPSTATS_FILE=”
Gültige Werte: yes, no
Standardeinstellung: RSYSLOGD_IMPSTATS_FILE_ROTATE='no'
Gültige Werte: yes, no
Standardeinstellung: RSYSLOGD_IMRELP='no'
Gültige Werte: Zahl
Standardeinstellung: RSYSLOGD_IMRELP_N='0'
Gültige Werte: 1..65535
Standardeinstellung: RSYSLOGD_IMRELP_x_PORT='20514'
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'
Gültige Werte: Konfigurationsstring für cron jobs
Standardeinstellung: RSYSLOGD_DBPURGE_SCHEDULE='10 0 * * *'
Gültige Werte: Zahl
Standardeinstellung: RSYSLOGD_DBPURGE_KEEP_DAYS='7'
Gültige Werte: yes, no
Standardeinstellung: RSYSLOGD_DBPURGE_EXPERT='no'
Gültige Werte: Zahl
Standardeinstellung: RSYSLOGD_DBPURGE_N='1'
Gültige Werte: Text
Standardeinstellung: RSYSLOGD_DBPURGE_x_NAME=”
Gültige Werte: yes, no
Standardeinstellung: RSYSLOGD_DBPURGE_x_ACTIVE='yes'
Gültige Werte: Konfigurationsstring für cron jobs
Standardeinstellung: RSYSLOGD_DBPURGE_x_SCHEDULE='10 0 * * *'
Wird hier eine Angabe gemacht, so wird zusätzlich zu der Bedingung aus COLUMN, OPERATOR und VALUE (siehe unten) eine Bedingung auf die Column ReceivedAt erzeugt.
Gültige Werte: Zahl / leer
Standardeinstellung: RSYSLOGD_DBPURGE_x_KEEP_DAYS='7'
Gültige Werte: ID, ReceivedAt, DeviceReportedTime, Facility, Priority, FromHost, Message, InfoUnitID, SysLogTag, ProcessID
Standardeinstellung: RSYSLOGD_DBPURGE_x_COLUMN='FromHost'
Gültige Werte: >, >=, <, <=, =, !=, like
Standardeinstellung: RSYSLOGD_DBPURGE_x_OPERATION='like'
Gültige Werte: Text
Standardeinstellung: RSYSLOGD_DBPURGE_x_VALUE='eistest%'
Gültige Werte: yes, no
Standardeinstellung: RSYSLOGD_FILE_INPUT='no'
Gültige Werte: Zahl
Standardeinstellung: RSYSLOGD_FILE_INPUT_N='0'
Gültige Werte: Text
Standardeinstellung: RSYSLOGD_FILE_INPUT_x_NAME=”
Gültige Werte: yes, no
Standardeinstellung: RSYSLOGD_FILE_INPUT_x_ACTIVE='yes'
Gültige Werte: absoluter Pfad
Standardeinstellung: RSYSLOGD_FILE_INPUT_x_FILENAME='/var/log/log.url-error'
Gültige Werte: nicht leer
Standardeinstellung: RSYSLOGD_FILE_INPUT_x_TAG='url-error:'
Gültige Werte: facility
Standardeinstellung: RSYSLOGD_FILE_INPUT_x_FACILITY='local7'
Gültige Werte: debug, info, notice, warning, err, crit, alert, emerg
Standardeinstellung: RSYSLOGD_FILE_INPUT_x_SEVERITY='err'
Ü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.
Über ein Untermenue werden folgende Werkzeuge zur Verfügung gestellt.
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.
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 Datenbank 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.
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
/usr/lib/rsyslog/alterDB_add_ProcessID.sql
und
/usr/lib/rsyslog/alterDB_addon_LogAnalyzer.sql
Das Skript alterDB_addon_LogAnalyzer.sql enthält Erweiterungen, die
für den Adiscon's Log Analyzer (Copyright Adiscon) benötigt werden.
Das Skript /usr/lib/rsyslog/alterDB_addon_LogAnalyzer.sql wird über den Menuepunkt ”Alter logging database for LogAnalyzer” ausgeführt.
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
Das Zeichen > definiert, daß eine Datenbank genutzt werden soll.
Username und Passwort müssen (natürlich) mit den Angaben bei 'Grant full rights on logging database to a user' übereinstimmen.
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.
Ü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.
Bei Erzeugen der logging database wird bei der Tabelle SystemEvents die Column ProcessID ergänzt.
Über diesen Menuepunkt werden die Tabellen ProcessID und SystemEvents erweitert, um das Tool LogAnalyzer nutzen zu können.
Unter Umständen ist es sinnvoll ein Logfile unabhängig von der Größe und insbesondere unabhängig vom Aufruf von logrotate via cron zu rotieren. Dies ist über 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 continueAchtung: 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 Verlust 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.
Ü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.
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.
Hier können die aus der Konfiguration der RSYSLOGD_ALLOWED_SENDER
erzeugten NFtables angezeigt werden.
Beispiel:
RSYSLOGD_ALLOWED_SENDER_N='3'
RSYSLOGD_ALLOWED_SENDER_1_ACTIVE='yes'
RSYSLOGD_ALLOWED_SENDER_1_PROT='TCP'
RSYSLOGD_ALLOWED_SENDER_1_PORT='517'
RSYSLOGD_ALLOWED_SENDER_1='192.168.178.0/24'
RSYSLOGD_ALLOWED_SENDER_2_ACTIVE='yes'
RSYSLOGD_ALLOWED_SENDER_2_PROT='UDP'
RSYSLOGD_ALLOWED_SENDER_2_PORT='518'
RSYSLOGD_ALLOWED_SENDER_2='192.168.178.103'
RSYSLOGD_ALLOWED_SENDER_3_ACTIVE='yes'
RSYSLOGD_ALLOWED_SENDER_3_PROT='RELP'
RSYSLOGD_ALLOWED_SENDER_3_PORT='20514'
RSYSLOGD_ALLOWED_SENDER_3='192.168.178.103'
Das gesamte Netzwerk '192.168.178.0/24' darf üeber UDP Port 517 Meldungen
an den rsyslogd senden.
Nur der Server 192.168.178.103 darf auch über TCP Port 518 Meldungen
an den rsyslogd senden.
Der Server 192.168.178.103 darf auch über das RELP Protokoll über
Port 20514 Meldungen an den rsyslogd senden.
Dies führt zu folgender NFtable Filtertabelle:
table ip rsyslogd_filter { # handle 0 chain INPUT { # handle 1 ip saddr 192.168.178.0/24 tcp dport 517 counter packets 0 bytes 0 accept # handle 4 ip saddr 192.168.178.103 udp dport 518 counter packets 0 bytes 0 accept # handle 5 ip saddr 192.168.178.103 tcp dport 20514 counter packets 0 bytes 0 accept # handle 6 tcp dport 20514 counter packets 0 bytes 0 drop # handle 7 tcp dport 517 counter packets 0 bytes 0 drop # handle 8 udp dport 518 counter packets 0 bytes 0 drop # handle 9 } chain FORWARD { # handle 2 } chain OUTPUT { # handle 3 } }
Zur besseren Lesbarkeit wurden die Zeilen bei ip saddr ... umgebrochen.
Die drei Regeln, die auf accept und einen Kommentar mit der sog. Handle-Nummer
enden, erteilen die entsprechenden Erlaubnis.
Die drei Regeln, die auf drop und einen Kommentar mit der sog. Handle-Nummer enden, ist zu erkennen, daß Pakete die von anderen Quelladressen (saddr) stammen verworfen werden.
Hier kann eine Übersicht zu den Konfigurationen von
RSYSLOGD_IMUDP RSYSLOGD_IMUDP_N RSYSLOGD_IMUDP_%_PORT RSYSLOGD_IMTCP RSYSLOGD_IMTCP_N RSYSLOGD_IMTCP_%_PORT RSYSLOGD_IMRELP RSYSLOGD_IMRELP_N RSYSLOGD_IMRELP_%_PORT RSYSLOGD_ALLOWED_SENDER_N RSYSLOGD_ALLOWED_SENDER_%_ACTIVE RSYSLOGD_ALLOWED_SENDER_%_PROT RSYSLOGD_ALLOWED_SENDER_%_PORT RSYSLOGD_ALLOWED_SENDER_% erzeugt werden.
Im Wesentlichen können damit Lücken beim Schutz vor beliebigen Sendern erkannt werden.
Beispiel:
Protocol Port Allowed Sender UDP 514 192.168.178.10 192.168.178.103 UDP 515 All sender allowed UDP 518 192.168.178.103 TCP 517 192.168.178.0/24 RELP 20514 192.168.178.103 RELP 20515 All sender allowed
Beim Input Modul imudp wurden zwar Regeln für die Ports 514 (2 Regeln) und 518 erstellt, aber
über den Port 515 können beliebige Sender Daten anliefern.
Beim Input Modul imtcp wurde eine Regel für den Port 517 erstellt.
Beim Input Modul imrelp wurde der Port 20515 für beliebige Sender offen gelassen.
Fehlt ein Schutz, so kann der rsyslogd ggf. mit Meldungen überflutet werden!
Es gibt verschiedene Inputs im Datenfluss des rsyslog daemon.
Die ersten beiden Inputs werden immer konfiguriert.
Alle weiteren Inputs nur bei entsprechender Konfiguration durch die Eisfair Konfigurationsvariablen.
Inputs sind:
Standard syslog messages: Von Anwendungen, die auf dem lokalen System laufen Kernel messages: Meldungen des Kernels (kernel log) Internal rsyslogd messages: Start- und Stopmeldungen des rsyslog daemon Siehe RSYSLOGD_INTERNAL_MESSAGES Internal messages: Die --MARK-- message wird intern erzeugt Siehe RSYSLOGD_MARK_INTERVAL Statistik messages: Spezielle Meldungen des impstat Moduls Siehe RSYSLOGD_IMPSTATS UDP input messages: Meldungen, die ueber UDP von anderen Systemen angeliefert werden Siehe RSYSLOGD_LISTEN und RSYSLOGD_IMUDP TCP input messages: Meldungen, die ueber TCP von anderen Systemen angeliefert werden Siehe RSYSLOGD_LISTEN und RSYSLOGD_IMTCP RELP input messages: Meldungen, die ueber das spezielle RELP Protokoll von anderen Systemen angeliefert werden Siehe RSYSLOGD_IMRELP File input messages: Meldungen, die aus Textdateien ausgelesen werden Siehe RSYSLOGD_FILE_INPUT
Die Meldungen werden zur Abarbeitung an die angegebenen Regeln übergeben.
Dabei ist die textuelle Reihenfolge der Regeln in der erzeugten Konfiguration wichtig.
Diese Reihenfolge spiegelt auch die Reihenfolge in der Eisfair Konfigurationsdatei wider.
Die Reihenfolge ist:
'Global Discard Filter'
'Filter Rules'
'Rule Settings'
Innerhalb der drei Regelgruppen ist die entsprechende Nummer wichtig.
Bei der Gruppe 'Global Discard Filter' werden die Filterregeln ausgewertet und, falls die Regel zutrifft, die Meldung verworfen. Trifft die Regel nicht zu, so wird die nächste Regel ausgewertet.
Nach der Gruppe 'Global Discard Filter' wird für die nicht verworfenen Meldungen in der Gruppe 'Filter Rules' weiter gemacht. Hier gilt: trifft eine Filterregel zu, so wird die Meldung in die konfigurierte Datei geschrieben und anschließend abhängig von RSYSLOGD_FILTER_x_STOP verworfen ('yes') oder bei ('no') die nächste Regel ausgewertet.
Nach der Gruppe 'Filter Rules' findet die Auswertung durch die 'Rule Settings' statt. Hier wird die Meldung jeweils ausgewertet, die entsprechende Aktion (RSYSLOGD_RULE_x_ACTION) ausgeführt und an die nächste Regel weitergegeben. Klare Ausnahme ist hier die Discard Aktion. Hier besteht die gewünschte Aktion ja gerade im Verwerfen der Meldung.
Trifft eine Regel für mehrere Meldungen zu, so werden ggf. mehrere Aktionen durchgeführt.
Um z.B. alle Meldungen in die Datei /var/log/messages und in die Datenbanktabelle der MySQL-Datenbank zu schreiben
wäre also z.B.:
RSYSLOGD_RULE_N='2' RSYSLOGD_RULE_1_ACTIVE='yes' RSYSLOGD_RULE_1_SELECTOR_N='1' RSYSLOGD_RULE_1_SELECTOR_1_ACTIVE='yes' RSYSLOGD_RULE_1_SELECTOR_1='*.*' RSYSLOGD_RULE_1_ACTION='/var/log/messages' RSYSLOGD_RULE_2_ACTIVE='yes' RSYSLOGD_RULE_2_SELECTOR_N='1' RSYSLOGD_RULE_2_SELECTOR_1_ACTIVE='yes' RSYSLOGD_RULE_2_SELECTOR_1='*.*' RSYSLOGD_RULE_2_ACTION='>mydbhost,Syslog,loguser,secret'
zu konfigurieren (Konfiguration leicht gekürzt).
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 -104Achtung: 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.soAchtung: 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.
Beispiele:
A.) Meldungen von dem System mit dem Namen dbhost sollen in die Datei /var/log/dbhost.log geschrieben werden. Die Meldungen sollen auch von den folgenden Regeln bearbeitet werden.
RSYSLOGD_FILTER_1_NAME='Hostname-filter' RSYSLOGD_FILTER_1_ACTIVE='yes' RSYSLOGD_FILTER_1_LOGFILE='/var/log/dbhost.log' RSYSLOGD_FILTER_1_LINE_TEMPLATE='Default' RSYSLOGD_FILTER_1_STOP='no' RSYSLOGD_FILTER_1_PROPERTY='hostname' RSYSLOGD_FILTER_1_OPERATION='startswith' RSYSLOGD_FILTER_1_VALUE='dbhost'
Hier wird startswith genutzt, da unabhängig von RSYSLOGD_LOG_FQDN sowohl der Hostname dbhost als auch der FQDN (hier dbhost.ap.de) erkannt werden soll.
B.) Alle Meldungen des Programms fcron sollen in die Datei /var/log/fcron.log geschrieben werden. Sie sollen nicht an die folgenden Regeln weitergegeben werden.
RSYSLOGD_FILTER_2_NAME=” RSYSLOGD_FILTER_2_ACTIVE='yes' RSYSLOGD_FILTER_2_LOGFILE='/var/log/fcron.log' RSYSLOGD_FILTER_2_LINE_TEMPLATE='Default' RSYSLOGD_FILTER_2_STOP='yes' RSYSLOGD_FILTER_2_PROPERTY='programname' RSYSLOGD_FILTER_2_OPERATION='==' RSYSLOGD_FILTER_2_VALUE='fcron'
Für alle Logfiles (RSYSLOGD_FILTER_%_LOGFILE) von aktiven Filtern wird automatisch eine gemeinsame Logrotate Konfiguration in der Datei /etc/logrotate.d/rsyslogd_filter erzeugt.
Beispiel für Filter Rules mit zwei Dateien:
#------------------------------------------------------------------------------- # /etc/logrotate.d/rsyslogd_filter file generated by /var/install/config.d/rsyslogd.sh # # Do not edit this file, edit /etc/config.d/rsyslogd # Creation date: Wed Nov 21 17:10:58 CET 2018 #------------------------------------------------------------------------------- /var/log/dbhost.log /var/log/fcron.log { daily missingok rotate 10 compress notifempty postrotate /etc/init.d/rsyslogd --quiet reload endscript }
In einer späteren Version des rsyslogd Paketes wird es ggf. Optionen für einzelne spezielle Konfigurationen geben.
Mit Hilfe der Definitionen aus dieser Konfigurationsgruppe können eine Reihe von cron Jobs definiert werden, bei deren Ausfürung jeweils defnierte Zeilen aus der Tabelle SystemEvents gelöscht werden können.
Ist RSYSLOGD_DBPURGE_x_KEEP_DAYS nicht leer, so wird eine Bedingung
(ReceivedAt < date_add(current_date, interval -$RSYSLOGD_DBPURGE_x_KEEP_DAYS day)) andmit der Bedingung aus COLUMN, OPERATOR und VALUE mittels and verknüpft. Achtung: Zeilenumbruch zur besseren Lesbarkeit eingefügt.
Aus RSYSLOGD_DBPURGE_x_COLUMN, RSYSLOGD_DBPURGE_x_OPERATION
und RSYSLOGD_DBPURGE_x_VALUE wird ebenfalls eine Bedingung generiert.
Beispiel:
(FromHost like 'eistest%')
Die generierten SQL-Befehle können im Menue ”rsyslogd tools” Untermenue ”Test DBPurge expert configurations” getestet werden:
Beispiel:
rsyslogd Test DBPurge expert configurations. No. Name Active Keep Column Op Value 1 ... yes 7 FromHost like eistest% Select configuration (1-1, ENTER=Return, 0=Exit)?1 Generated select file: /* file generated by /var/install/config.d/rsyslogd.sh v0.6.10 */ select 'total', count(*) from SystemEvents union select 'old', count(*) FROM SystemEvents WHERE (ReceivedAt < date_add(current_date, interval -7 day)) and (FromHost like 'eistest%'); Press ENTER to continue Select file output: +-------+------+ | total | 4741 | | old | 102 | +-------+------+ The Delete file will delete 102 rows! Press ENTER to continue
Die Ausgabe ... unter Name bedeutet, daß RSYSLOGD_DBPURGE_x_NAME leer ist.
Mit Hilfe der File Input Definitions kann der rsyslogd veranlasst 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 übertragen.
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.
Alle Properties sind unter https://www.rsyslog.com/doc/v8-stable/configuration/properties.html aufgelistet Die Property $programname enthaelt leider eine "Überraschung", gerade für den rsyslogd Hier werden Programmnamen wie rsyslogd-2007, rsyslogd-2291, rsyslogd-2353, rsyslogd-2359 und rsyslogd0 erzeugt. Um diese Programmnamen auf ein einheitliches rsyslogd zu mappen, wurde die konfigurationsinterne Property $!data!modprogramname eingeführt. $!data!modprogramname korrigiert die "überraschenden" Programmnamen.
Die Eisfair Konfigurationsskripte koennen für Dynafiles nicht automatisch logrotate Konfigurationen in /etc/logrotate.d anlegen. Aus der ACTION ist ja nur ein Teil der Dateinamen fix, ein Teil entsteht ja durch die Anwendung der properties in der ACTION (ggf. im Laufe der Zeit). logrotate Konfigurationen in /etc/logrotate.d müssen daher manuell angelegt werden. Ein Hilfsskript /var/install/bin/rsyslogd-tools-create-rotate-conf unterstützt hierbei. rsyslogd-tools-create-rotate-conf benötigt drei Parameter $1 RSYSLOGD_RULE_N $2 Pfadangabe $3 Dateiname oder ALL Es wird bei der Ausführung eine Datei /etc/logrotate.d/rsyslogd_dyn_xx angelegt. xx wird aus Parameter $1 des Skripts gesetzt. Die automatisch generierten logrotate Konfigurationen in /etc/logrotate.d folgen der Syntax rsyslogd_dyn_xx. Dabei ist xx die RSYSLOGD_RULE_N. Beispiele: Beispiel 1: *********** ACTION: RSYSLOGD_RULE_4_ACTION='?/var/log/hosts/%HOSTNAME%/messages' Verzeichnis: /var/log/hosts /var/log/hosts/eistestvirt.fritz.box /var/log/hosts/eistestvirt.fritz.box/messages /var/log/hosts/logserv.fritz.box /var/log/hosts/logserv.fritz.box/messages Aufruf: sh rsyslogd-tools-create-rotate-conf 4 /var/log/hosts messages Erzeugt Datei rsyslogd_dyn_04 .... /var/log/hosts/eistestvirt.fritz.box/messages /var/log/hosts/logserv.fritz.box/messages { daily missingok .... Beispiel 2: *********** ACTION: RSYSLOGD_RULE_5_ACTION='?/var/log/modprog/%$!data!modprogramname%/messages' Verzeichnis: /var/log/modprog /var/log/modprog/eis-deinstall /var/log/modprog/eis-deinstall/messages /var/log/modprog/eis-update /var/log/modprog/eis-update/messages /var/log/modprog/eis_install /var/log/modprog/eis_install/messages /var/log/modprog/fcron /var/log/modprog/fcron/messages /var/log/modprog/fcrontab /var/log/modprog/fcrontab/messages /var/log/modprog/haveged /var/log/modprog/haveged/messages /var/log/modprog/init /var/log/modprog/init/messages /var/log/modprog/kernel /var/log/modprog/kernel/messages /var/log/modprog/rsyslogd /var/log/modprog/rsyslogd/messages /var/log/modprog/shutdown /var/log/modprog/shutdown/messages /var/log/modprog/sshd /var/log/modprog/sshd/messages /var/log/modprog/su /var/log/modprog/su/messages /var/log/modprog/usermod /var/log/modprog/usermod/messages /var/log/modprog/xinetd /var/log/modprog/xinetd/messages Aufruf: sh rsyslogd-tools-create-rotate-conf 5 /var/log/modprog messages Erzeugt Datei rsyslogd_dyn_05 ... /var/log/modprog/eis-deinstall/messages /var/log/modprog/eis-update/messages /var/log/modprog/eis_install/messages /var/log/modprog/fcron/messages /var/log/modprog/fcrontab/messages /var/log/modprog/haveged/messages /var/log/modprog/init/messages /var/log/modprog/kernel/messages /var/log/modprog/rsyslogd/messages /var/log/modprog/shutdown/messages /var/log/modprog/sshd/messages /var/log/modprog/su/messages /var/log/modprog/usermod/messages /var/log/modprog/xinetd/messages { daily missingok ... Beispiel 3: *********** Zwei miteinander verbundene Regeln RSYSLOGD_RULE_7_NAME='messages_per_host' RSYSLOGD_RULE_7_SELECTOR_N='2' RSYSLOGD_RULE_7_SELECTOR_1_NAME='messages' RSYSLOGD_RULE_7_SELECTOR_1='*.*' RSYSLOGD_RULE_7_SELECTOR_2_NAME='eis-install' RSYSLOGD_RULE_7_SELECTOR_2='local5.!=info' RSYSLOGD_RULE_7_ACTION='?/var/log/all_hosts/%HOSTNAME%/messages' RSYSLOGD_RULE_8_NAME='eis-install_per_host' RSYSLOGD_RULE_8_SELECTOR_N='1' RSYSLOGD_RULE_8_SELECTOR_1_NAME='eis-install' RSYSLOGD_RULE_8_SELECTOR_1='local5.=info' RSYSLOGD_RULE_8_ACTION='?/var/log/all_hosts/%HOSTNAME%/eis-install' Verzeichnis: /var/log/all_hosts /var/log/all_hosts/eistestvirt.fritz.box /var/log/all_hosts/eistestvirt.fritz.box/eis-install /var/log/all_hosts/eistestvirt.fritz.box/messages /var/log/all_hosts/logserv.fritz.box /var/log/all_hosts/logserv.fritz.box/eis-install /var/log/all_hosts/logserv.fritz.box/messages Aufruf: sh rsyslogd-tools-create-rotate-conf 78 /var/log/all_hosts ALL Hier wurde als RSYSLOGD_RULE_N einfach die 78 gew"ahlt. Da es unterschiedliche Dateinamen gibt wirde als dritter Parameter ALL genutzt. Erzeugt Datei rsyslogd_dyn_78 ... /var/log/all_hosts/eistestvirt.fritz.box/eis-install /var/log/all_hosts/eistestvirt.fritz.box/messages /var/log/all_hosts/logserv.fritz.box/eis-install /var/log/all_hosts/logserv.fritz.box/messages { daily missingok ...
Mit folgenden Einstellungen wurde der rsyslogd übersetzt (eigentlich konfiguriert):
--prefix=/usr --disable-generate-man-pages --enable-imfile --enable-mysql --enable-relp --enable-impstats --enable-omprog