
\chapter{Das rsyslogd Paket}

\section{Einleitung}

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 ("ubersetzt):\\
RSYSLOGD kann "uber 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 \link{http://www.rsyslog.com/}{RSYSLOGD}
verf"ugbar.

\section{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.

\section{Voraussetzungen}

   Dieses Paket ben"otigt folgende weitere Pakete libgcrypt, libestr, libfastjason
   und librelp.
   Es ist auch abh"angig davon, dass eine aktuelle Version des Basissystems
   installiert ist.

\section{Installation}

   Das rsyslogd Paket wird "uber 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 "uber die Konfiguration 'Edit base configuration' und \\
   Setzen von START\_SYSLOGD='no'.

   Danach kann "uber das Menue 'Create configuration using syslog(base)' die
   Konfiguration aus der Base Konfiguration "ubernommen werden.

   Erst jetzt kann "uber 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.

\section{Das Menue im Setup-Program}

   Das rsyslogd Menue ist "uber den Menuepunkt 'Service administration'
   des Hauptmenues im zentralen Setup-Programm zu erreichen. \\
   Auswahl: 'rsyslogd daemon' \\
   Das Menue ist wie folgt aufgebaut:


    \begin{tabular}{p{2cm}rll}
    & 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 \\
    \end{tabular}

    \begin{tabular}{p{3cm}lll}
    & 1 & & View messages \\
    & 2 & & View older messages \\
    & 3 & & View log.eis-install \\
    & 4 & & View older log.eis-install \\
    & 0 & & Return \\
    \end{tabular}

    \begin{tabular}{p{2cm}rll}
    & 12 & & rsyslogd tools \\
    \end{tabular}

    \begin{tabular}{p{3cm}rll}
    &  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 \\
    \end{tabular}

    \begin{tabular}{p{2cm}lll}
    & 0 & & Return \\
    \end{tabular}

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

    Die meisten Menuepunkte d"urften ohne weitere Erl"auterung verst"andlich sein, da sie keinerlei
    weitere Eingaben erwarten, sondern nur den Status des Servers/Daemons abfragen
    und auf Wunsch "andern. Die Standard-Menuepunkte 1, 2 und 3 arbeiten wie bei allen anderen
    Eisfair-1 Paketen.

    Die weiteren Menuepunkte sind unten beschrieben.

\section{Aenderung der Konfiguration}


   Die Konfiguration kann "uber den Menuepunkt 'Edit Configuration'
   ge"andert werden. Standardm"a"sig wird dabei der Editor genutzt,
   der "uber 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"uft. Werden Fehler festgestellt, so werden
   diese gemeldet und der Benutzer zur Korrektur aufgefordert. Wird eine
   solche Korrektur nicht durchgef"uhrt, so kann es zu unvorhersehbaren
   Fehlfunktionen bei dem Dienst kommen.

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

    \achtung{Beim n"achsten Boot-Vorgang kann es in diesem
             Fall zu unvorhersehbaren Fehlern kommen.}

   Wird die Aktivierung best"atigt, werden "uber ein Skript die
   durchgef"uhrten "Anderungen wirksam gemacht. Dazu wird der rsyslogd
   gestoppt und neu gestartet.

\section{Die Konfigurationsdatei}

    Die Konfigurationsdatei \texttt{(/etc/config.d/rsyslogd)}
    enth"alt in einer Reihe von Abschnitten die Parameter, die den
    Dienst parametrisieren bzw. festlegen, ob der Dienst "uberhaupt
    zur Verf"ugung gestellt wird oder nicht.


\subsection{rsyslogd syslog server (general settings)}

\begin{description}

\config{START\_RSYSLOGD}
{START\_RSYSLOGD}
{STARTRSYSLOGD}
{
    Legt fest, ob der rsyslogd-Server gestartet wird.
    Es d"urfen nicht mehrere syslog Server gestartet sein.
    Um den rsyslogd-Server starten zu k"onnen, muss der syslog-Server
    aus der Base Konfiguration zun"achst gestoppt werden.

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{START\_RSYSLOGD='no'}
}

\end{description}

\subsection{rsyslogd syslog server (configuration settings)}

\begin{description}

\config{RSYSLOGD\_CONFIGURATION}
{RSYSLOGD\_CONFIGURATION}
{RSYSLOGDCONFIGURATION}
{
    Art der Konfiguration bzw. Art der Generierung der Konfiguration.
    Derzeit sind nur 'manual' und '' erlaubt.

    Wird RSYSLOGD\_CONFIGURATION='manual' gesetzt, so ist der Anwender
    f"ur die Konfiguration verantwortlich, es wird keine Konfiguration
    generiert.

    G"ultige Werte: 'manual', ''

    Standardeinstellung: \texttt{RSYSLOGD\_CONFIGURATION=''}

}

\config{RSYSLOGD\_DEFAULT\_LINE\_TEMPLATE}
{RSYSLOGD\_DEFAULT\_LINE\_TEMPLATE}
{RSYSLOGDDEFAULTLINETEMPLATE}
{
    Default Format der Zeilen im Log.
    Dieses Format wird genutzt, wenn bei den Formatvorgaben RSYSLOGD\_RULE\_x\_LINE\_TEMPLATE der Wert 'Default' steht.

    G"ultige Werte: DebugFormat,FileFormat,ForwardFormat,SysklogdFileFormat, \\
SyslogProtocol23Format,TraditionalFileFormat, \\
TraditionalForwardFormat,TraditionalFormatWithPRI

    Standardeinstellung: \texttt{RSYSLOGD\_DEFAULT\_LINE\_TEMPLATE='TraditionalFileFormat'}

}

\config{RSYSLOGD\_LOG\_FQDN}
{RSYSLOGD\_LOG\_FQDN}
{RSYSLOGDLOGFQDN}
{
    Sollen Fully Qualified Domain Names (z.B. eismini.ap.de) im Log erscheinen,
    oder nur Hostnamen (z.B. eismini).

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{RSYSLOGD\_LOG\_FQDN='no'}

}

\config{RSYSLOGD\_INTERNAL\_MESSAGES}
{RSYSLOGD\_INTERNAL\_MESSAGES}
{RSYSLOGDINTERNALMESSAGES}
{
    Sollen rsyslogd interne Meldungen ausgegeben werden.
    Solche Meldungen sind z.B. Start- und Stopmeldungen des rsyslogd selbst.

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{RSYSLOGD\_INTERNAL\_MESSAGES='yes'}

}

\config{RSYSLOGD\_MSG\_REDUCTION}
{RSYSLOGD\_MSG\_REDUCTION}
{RSYSLOGDMSGREDUCTION}
{
    Legt fest, ob sich wiederholende Meldungen gek"urzt werden sollen.
    Wird diese Konfigurationsvariable auf 'yes' gesetzt, so werden
    aufeinander folgende, gleiche Meldungen zusammengefasst und als \\
    'message repeated x times: [msg]' \\
    ausgegeben.

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{RSYSLOGD\_MSG\_REDUCTION='no'}

}
 
\config{RSYSLOGD\_CONFIG\_FILE}
{RSYSLOGD\_CONFIG\_FILE}
{RSYSLOGDCONFIGFILE}
{
    Absoluter Pfadname der Konfigurationsdatei.

    Ist RSYSLOGD\_CONFIG\_FILE leer, so wird die Variable auf '/etc/rsyslog.conf' gesetzt.

    Standardeinstellung: \texttt{RSYSLOGD\_CONFIG\_FILE='/etc/rsyslog.conf'}

}

\config{RSYSLOGD\_CONFIG\_DIR}
{RSYSLOGD\_CONFIG\_DIR}
{RSYSLOGDCONFIGDIR}
{
    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: \\
    \begin{tabular}{lll}
    & 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' \\
    \end{tabular}

    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"onnen manuell zus"atzliche Konfigurationsteile erg"anzt
    werden. Dies sollten nur erfahrene Anwender tun. Dabei ist zu beachten, dass einige
    Konfigurationselemente "uberschrieben (neu gesetzt) werden k"onnen, andere aber
    nur einmalig vorkommen d"urfen.

    Wird RSYSLOGD\_CONFIG\_DIR='' gesetzt, so wird die gesamte Konfiguration in
    die Datei aus RSYSLOGD\_CONFIG\_FILE geschrieben.

    Standardeinstellung: \texttt{RSYSLOGD\_CONFIG\_DIR='/etc/rsyslog.d'}

}

\config{RSYSLOGD\_MARK\_INTERVAL}
{RSYSLOGD\_MARK\_INTERVAL}
{RSYSLOGDMARKINTERVAL}
{
    Rsyslogd mark intervall in Sekunden.
    RSYSLOGD\_MARK\_INTERVAL='0' schaltet die Ausgabe der mark Zeile aus.
    Die mark Zeile enth"alt 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: \texttt{RSYSLOGD\_MARK\_INTERVAL='600'}

}

\config{RSYSLOGD\_OPTIONS}
{RSYSLOGD\_OPTIONS}
{RSYSLOGDOPTIONS}
{
    Zus"atzliche Kommandozeilenargumente. Diese Option kann z.B. zum Debuggen des rsyslogd
    benutzt werden und sollte nur von erfahrenen Anwendern genutzt werden.

    Standardeinstellung: \texttt{RSYSLOGD\_OPTIONS=''}

}

\end{description}





\subsection{rsyslogd syslog server (global discard filter)}

\begin{description}


\config{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER}
{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER}
{RSYSLOGDGLOBALDISCARDFILTER}
{
    Legt fest ob sog. 'Global Discard Filter' genutzt werden sollen. \\
    Mittels 'global discard filter' k"onnen Meldungen "uber entsprechende Filterregeln
    verworfen werden. Dies kann dazu dienen "uberfl"ussige Meldungen auszufiltern
    um die Gr"o"se der Logfile zu minimieren.

    Siehe Kapitel 'Global Discard Filter'

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER='no'}
}

\config{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER\_DEBUG}
{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER\_DEBUG}
{RSYSLOGDGLOBALDISCARDFILTERDEBUG}
{
    Soll die Debug Hilfe f"ur '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"ultige Werte: yes, no

    Standardeinstellung: \texttt{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER\_DEBUG='no'}
}


\config{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER\_N}
{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER\_N}
{RSYSLOGDGLOBALDISCARDFILTERN}
{
    Anzahl der Filterdefinitionen.

    G"ultige Werte: Zahl

    Standardeinstellung: \texttt{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER\_N='0'}
}


\config{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER\_x\_NAME}
{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER\_x\_NAME}
{RSYSLOGDGLOBALDISCARDFILTERxNAME}
{
    Name bzw. Beschreibung des Filters.

    Standardeinstellung: \texttt{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER\_x\_NAME=''}
}


\config{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER\_x\_ACTIVE}
{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER\_x\_ACTIVE}
{RSYSLOGDGLOBALDISCARDFILTERxACTIVE}
{
    Legt fest, ob der Filter aktiv ist.

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER\_x\_ACTIVE='yes'}
}


\config{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER\_x\_PROPERTY}
{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER\_x\_PROPERTY}
{RSYSLOGDGLOBALDISCARDFILTERxPROPERTY}
{
    Eigenschaft der Meldungen, die beim Filter genutzt werden soll.

    \begin{tabular}{lll}
    & 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 \\
    \end{tabular}

    Standardeinstellung: \texttt{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER\_x\_PROPERTY='msg'}
}


\config{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER\_x\_OPERATION}
{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER\_x\_OPERATION}
{RSYSLOGDGLOBALDISCARDFILTERxOPERATION}
{
    Anzuwendende Operation (Suchfunktion).

    \begin{tabular}{lll}
    & contains     & ist enthalten mit exakter "Ubereinstimmung \\
    & isequal      & ist gleich mit exakter "Ubereinstimmung \\
    & startswith   & beginnt mit exakter "Ubereinstimmung \\
    & regex        & POSIX BRE regul"arer Ausdruck \\
    & ereregex     & POSIX ERE regul"arer Ausdruck \\
    & !contains    & Negation von contains \\
    & !isequal     & Negation von isequal \\
    & !startswith  & Negation von startswith \\
    & !regex       & Negation von regex \\
    & !ereregex    & Negation von ereregex \\
    \end{tabular}

    Vorsicht bei der Anwendung von Negationen. Hier k"onnen h"ochst unerw"unschte
    Ergebnisse erzielt werden.

    Standardeinstellung: \texttt{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER\_x\_OPERATION='contains'}
}

\config{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER\_x\_VALUE}
{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER\_x\_VALUE}
{RSYSLOGDGLOBALDISCARDFILTERxVALUE}
{
    Suchstring f"ur den Filter.

    Standardeinstellung: \texttt{RSYSLOGD\_GLOBAL\_DISCARD\_FILTER\_x\_VALUE=''}
}

\end{description}


\subsection{rsyslogd syslog server (filter rules)}
\begin{description}

\config{RSYSLOGD\_FILTER}
{RSYSLOGD\_FILTER}
{RSYSLOGDFILTER}
{
    Legt fest ob sog. 'Filter Rules' genutzt werden sollen. \\
    Mittels 'filter rules' k"onnen Meldungen "uber entsprechende Filterregeln
    direkt in einzelne Logdateien protokolliert werden.
    Dies kann dazu dienen Meldungen z.B. zu einem bestimmten Programm oder
    aber von einem bestimmten Host direkt in eine Logdatei zu schreiben.

    Siehe Kapitel 'Filter Rules'

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{RSYSLOGD\_FILTER='no'}
}

\config{RSYSLOGD\_FILTER\_N}
{RSYSLOGD\_FILTER\_N}
{RSYSLOGDFILTERN}
{
    Anzahl der Filterdefinitionen.

    G"ultige Werte: Zahl

    Standardeinstellung: \texttt{RSYSLOGD\_FILTER\_N='0'}
}

\config{RSYSLOGD\_FILTER\_x\_NAME}
{RSYSLOGD\_FILTER\_x\_NAME}
{RSYSLOGDFILTERxNAME}
{
    Name bzw. Beschreibung des Filters.

    Standardeinstellung: \texttt{RSYSLOGD\_FILTER\_x\_NAME=''}
}

\config{RSYSLOGD\_FILTER\_x\_ACTIVE}
{RSYSLOGD\_FILTER\_x\_ACTIVE}
{RSYSLOGDFILTERxACTIVE}
{
    Legt fest, ob der Filter aktiv ist.

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{RSYSLOGD\_FILTER\_x\_ACTIVE='yes'}
}

\config{RSYSLOGD\_FILTER\_x\_LOGFILE}
{RSYSLOGD\_FILTER\_x\_LOGFILE}
{RSYSLOGDFILTERxLOGFILE}
{
    Absoluter Pfadname der zu nutzenden Logdatei.

    G"ultige Werte: absoluter Pfad

    Standardeinstellung: \texttt{RSYSLOGD\_FILTER\_x\_LOGFILE='/var/log/filter.log'}
}

\config{RSYSLOGD\_FILTER\_x\_LINE\_TEMPLATE}
{RSYSLOGD\_FILTER\_x\_LINE\_TEMPLATE}
{RSYSLOGDFILTERxLINETEMPLATE}
{
    Format der Zeilen in der Logdatei.

    G"ultige 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: \texttt{RSYSLOGD\_FILTER\_x\_LINE\_TEMPLATE='Default'}
}

\config{RSYSLOGD\_FILTER\_x\_STOP}
{RSYSLOGD\_FILTER\_x\_STOP}
{RSYSLOGDFILTERxSTOP}
{
    Legt fest, ob die aktuelle Logzeile (message) nach dem Speichern in der Logdatei
    verworfen (discarded) werden soll. Wird die aktuelle Logzeile verworfen, so
    endet die Verarbeitung nach dem Speichern in der Logdatei. Wird die Zeile
    nicht verworfen, so wird sie an die n"achste Regel weitergegeben.

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{RSYSLOGD\_FILTER\_x\_STOP='yes'}
}

\config{RSYSLOGD\_FILTER\_x\_PROPERTY}
{RSYSLOGD\_FILTER\_x\_PROPERTY}
{RSYSLOGDFILTERxPROPERTY}
{
    Eigenschaft der Meldungen, die beim Filter genutzt werden soll.

    \begin{tabular}{lll}
    & 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 \\
    \end{tabular}

    Standardeinstellung: \texttt{RSYSLOGD\_FILTER\_x\_PROPERTY='hostname'}
}

\config{RSYSLOGD\_FILTER\_x\_OPERATION}
{RSYSLOGD\_FILTER\_x\_OPERATION}
{RSYSLOGDFILTERxOPERATION}
{
    Anzuwendende Operation.

    \begin{tabular}{lll}
    & ==           & ist gleich \\
    & !=           & ist ungleich \\
    & <>           & ist ungleich \\
    & <            & ist kleiner \\
    & >            & ist gr"o"ser \\
    & <=           & ist kleiner oder gleich \\
    & >=           & ist gr"o"ser oder gleich \\
    & contains     & ist enthalten mit exakter "Ubereinstimmung \\
    & startswith   & beginnt mit exakter "Ubereinstimmung \\
    \end{tabular}

    Standardeinstellung: \texttt{RSYSLOGD\_FILTER\_x\_OPERATION}
}

\config{RSYSLOGD\_FILTER\_x\_VALUE}
{RSYSLOGD\_FILTER\_x\_VALUE}
{RSYSLOGDFILTERxVALUE}
{
    Vergleichswert f"ur die Filterregel.

    Standardeinstellung: \texttt{RSYSLOGD\_FILTER\_x\_VALUE='myhostname'}
}

\end{description}


\subsection{rsyslogd syslog server (database settings)}
\begin{description}

\config{RSYSLOGD\_MYSQL\_DB\_USE}
{RSYSLOGD\_MYSQL\_DB\_USE}
{RSYSLOGDMYSQLDBUSE}
{
    Legt fest, ob Datenbank Aktionen genutzt werden.

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{RSYSLOGD\_MYSQL\_DB\_USE='no'}
}

\config{RSYSLOGD\_MYSQL\_DB\_PACKAGE}
{RSYSLOGD\_MYSQL\_DB\_PACKAGE}
{RSYSLOGDMYSQLDBPACKAGE}
{
  MySQL/Maria DB Database Package, welches genutzt werden soll.\\
  Z.B. mysql5173, mariadb55, mariadb100 oder Remote.\\
  Remote: es gibt keine lokale Datenbank. Die Logmeldungen sollen
  in eine remote Datenbank geschrieben werden. Dazu wird das Package
  libmysql ben"otigt. Die remote Datenbank muss entsprechend vorbereitet
  und konfiguriert sein!

  Standardeinstellung: \texttt{RSYSLOGD\_MYSQL\_DB\_PACKAGE=''}
}

\config{RSYSLOGD\_MYSQL\_DB\_NAME}
{RSYSLOGD\_MYSQL\_DB\_NAME}
{RSYSLOGDMYSQLDBNAME}
{
   MySQL/Maria DB Database Name f"ur 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: \texttt{RSYSLOGD\_MYSQL\_DB\_NAME='Syslog'}
}

\config{RSYSLOGD\_MYSQL\_DB\_REMOTE\_PORT}
{RSYSLOGD\_MYSQL\_DB\_REMOTE\_PORT}
{RSYSLOGDMYSQLDBREMOTEPORT}
{
    Port, der f"ur den Zugriff auf die remote Database genutzt werden soll.
    Wird kein Port angegeben, so wird der Standardport 3306 genutzt.

    G"ultige Werte: leer oder 1..65535

    Standardeinstellung: \texttt{RSYSLOGD\_MYSQL\_DB\_REMOTE\_PORT=''}
}

\end{description}


\subsection{rsyslogd syslog server (rule settings)}

\begin{description}

\config{RSYSLOGD\_RULE\_N}
{RSYSLOGD\_RULE\_N}
{RSYSLOGDRULEN}
{
    Anzahl der Regeln.

    G"ultige Werte: Zahl

    Standardeinstellung: \texttt{RSYSLOGD\_RULE\_N='2'}
}

\config{RSYSLOGD\_RULE\_x\_NAME}
{RSYSLOGD\_RULE\_x\_NAME}
{RSYSLOGDRULExNAME}
{
    Name bzw. Beschreibung der Regel.

    G"ultige Werte: Text

    Standardeinstellung: \texttt{RSYSLOGD\_RULE\_x\_NAME=''}
}

\config{RSYSLOGD\_RULE\_x\_ACTIVE}
{RSYSLOGD\_RULE\_x\_ACTIVE}
{RSYSLOGDRULExACTIVE}
{
    Legt fest, ob die Regel aktiv ist.

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{RSYSLOGD\_RULE\_x\_ACTIVE='yes'}
}

\config{RSYSLOGD\_RULE\_x\_SELECTOR\_N}
{RSYSLOGD\_RULE\_x\_SELECTOR\_N}
{RSYSLOGDRULExSELECTORN}
{
    Anzahl der Selektoren.
    Derzeit werden nur sog. Multiselektorlisten, die durch ein Semikolon (';')
    getrennt werden, unterst"utzt. Wenn Multiselektorlisten, die durch ein Komma
    (',') getrennt werden genutzt werden sollen, so muss dies "uber \\
    RSYSLOGD\_CONFIGURATION='manual' realisiert werden.

    G"ultige Werte: Zahl

    Standardeinstellung: \texttt{RSYSLOGD\_RULE\_x\_SELECTOR\_N='2'}
}

\config{RSYSLOGD\_RULE\_x\_SELECTOR\_x\_NAME}
{RSYSLOGD\_RULE\_x\_SELECTOR\_x\_NAME}
{RSYSLOGDRULExSELECTORxNAME}
{
    Name bzw. Beschreibung des Selektors.

    G"ultige Werte: Text

    Standardeinstellung: \texttt{RSYSLOGD\_RULE\_x\_SELECTOR\_x\_NAME=''}
}

\config{RSYSLOGD\_RULE\_x\_SELECTOR\_x\_ACTIVE}
{RSYSLOGD\_RULE\_x\_SELECTOR\_x\_ACTIVE}
{RSYSLOGDRULExSELECTORxACTIVE}
{
    Legt fest, ob der Selektor aktiv ist.

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{RSYSLOGD\_RULE\_x\_SELECTOR\_x\_ACTIVE='yes'}
}

\config{RSYSLOGD\_RULE\_x\_SELECTOR\_x}
{RSYSLOGD\_RULE\_x\_SELECTOR\_x}
{RSYSLOGDRULExSELECTORx}
{
    Selektorfeld der Regel (z.B. kern.info oder mail.=info).

    G"ultige Werte: Selektor

    Standardeinstellung: \texttt{RSYSLOGD\_RULE\_x\_SELECTOR\_x='*.*'}
}

\config{RSYSLOGD\_RULE\_x\_ACTION}
{RSYSLOGD\_RULE\_x\_ACTION}
{RSYSLOGDRULExACTION}
{
    Aktion f"ur die Regel.\\

    \begin{tabular}{lll}
    &  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] "uber UDP oder \\
    &  Remote Machine:         &  @@host[:Port] / @@IP-Adresse[:Port] "uber TCP \\
    &  User or List of Users:  &  willi oder root,willi \\
    &  Everyone logged on:     &  * \\
    &  Discard:                &  \char`\~ \\
    &  Shell execute:          &  \char`\^program-to-execute \\
    &  Database:               &  >host,database,user,password \\
    &  Remote RELP Protokoll:  &  :omrelp:IP-address:port oder :omrelp:host:port \\
    \end{tabular}

    Zu properties siehe Kapitel 'properties'.
    Zur Logrotate Konfiguration siehe Kapitel 'Logrotate Konfiguration fuer Dynamic Files'.

    Diese Version des Paketes unterst"utzt 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"ur
    ''libgnutls'' selbst notwendigen Packages sehr umfangreich ist.

    G"ultige Werte: siehe oben

    Standardeinstellung: \texttt{RSYSLOGD\_RULE\_x\_ACTION='/var/log/messages'}
}

\config{RSYSLOGD\_RULE\_x\_LINE\_TEMPLATE}
{RSYSLOGD\_RULE\_x\_LINE\_TEMPLATE}
{RSYSLOGDRULExLINETEMPLATE}
{
    Format der Zeilen im Log.

    G"ultige 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"a"sig 'MySQLInsert' genutzt, es sein denn, es wird \\
    explizit 'MySQLInsertProgname' gesetzt. \\
    MySQLInsertProgname benutzt '\%programname\%' statt '\%syslogtag\%'.

    Standardeinstellung: \texttt{RSYSLOGD\_RULE\_x\_LINE\_TEMPLATE='Default'}
}

\config{RSYSLOGD\_RULE\_x\_ROTATE}
{RSYSLOGD\_RULE\_x\_ROTATE}
{RSYSLOGDRULExROTATE}
{
    Legt fest, ob der f"ur diese Regel (Ziel der Regel) eine
    Logrotate Konfiguration generiert werden soll.

    G"ultige Werte: yes, no

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

    Standardeinstellung: \texttt{RSYSLOGD\_RULE\_x\_ROTATE='yes'}
}

\config{RSYSLOGD\_RULE\_x\_ROTATE\_MODE}
{RSYSLOGD\_RULE\_x\_ROTATE\_MODE}
{RSYSLOGDRULExROTATEMODE}
{
    Legt fest, welcher Modus f"ur das Logrotate genutzt werden soll.\\
    \\
    std~: es wird der Standard Modus (logrotate "uber cron) genutzt\\
    size: es wird "uber eine einstellbare Gr"o"se der Datei unter Nutzung \\
    ~~~~~ sog. outchannel rotiert

    G"ultige Werte: std, size

    Standardeinstellung: \texttt{RSYSLOGD\_RULE\_x\_ROTATE\_MODE='std'}
}

\config{RSYSLOGD\_RULE\_x\_ROTATE\_PRE\_CMD}
{RSYSLOGD\_RULE\_x\_ROTATE\_PRE\_CMD}
{RSYSLOGDRULExROTATEPRECMD}
{
    Pre rotate Kommando der Logrotate Konfiguration.\\
    Bei Nutzung von RSYSLOGD\_RULE\_x\_ROTATE\_MODE='std'

    G"ultige Werte: Text

    Standardeinstellung: \texttt{RSYSLOGD\_RULE\_x\_ROTATE\_PRE\_CMD=''}
}

\config{RSYSLOGD\_RULE\_x\_ROTATE\_POST\_CMD}
{RSYSLOGD\_RULE\_x\_ROTATE\_POST\_CMD}
{RSYSLOGDRULExROTATEPOSTCMD}
{
    Post rotate Kommando der Logrotate Konfiguration.\\
    Bei Nutzung von RSYSLOGD\_RULE\_x\_ROTATE\_MODE='std'

    G"ultige Werte: Text

    Standardeinstellung: \texttt{RSYSLOGD\_RULE\_x\_ROTATE\_POST\_CMD='/etc/init.d/rsyslogd \texttt{--}\texttt{--}quiet restart'}
}

\config{RSYSLOGD\_RULE\_x\_ROTATE\_LOG\_INTERVAL}
{RSYSLOGD\_RULE\_x\_ROTATE\_LOG\_INTERVAL}
{RSYSLOGDRULExROTATELOGINTERVAL}
{
    Logrotate interval.\\
    Bei Nutzung von RSYSLOGD\_RULE\_x\_ROTATE\_MODE='std'

    G"ultige Werte: daily, weekly, monthly

    Standardeinstellung: \texttt{RSYSLOGD\_RULE\_x\_ROTATE\_LOG\_INTERVAL='daily'}
}


\config{RSYSLOGD\_RULE\_x\_ROTATE\_LOG\_COUNT}
{RSYSLOGD\_RULE\_x\_ROTATE\_LOG\_COUNT}
{RSYSLOGDRULExROTATELOGCOUNT}
{
    Anzahl der Logfiles, die behalten werden sollen.\\
    Bei Nutzung von RSYSLOGD\_RULE\_x\_ROTATE\_MODE='std' \\
    und RSYSLOGD\_RULE\_x\_ROTATE\_MODE='size'

    G"ultige Werte: Zahl

    Standardeinstellung: \texttt{RSYSLOGD\_RULE\_x\_ROTATE\_LOG\_COUNT='10'}
}

\config{RSYSLOGD\_RULE\_x\_ROTATE\_SIZE}
{RSYSLOGD\_RULE\_x\_ROTATE\_SIZE}
{RSYSLOGDRULExROTATESIZE}
{
    Maximale Dateigr"o"se in Bytes.\\
    Bei Nutzung von RSYSLOGD\_RULE\_x\_ROTATE\_MODE='size'

    G"ultige Werte: Zahl

    Standardeinstellung: \texttt{RSYSLOGD\_RULE\_x\_ROTATE\_SIZE='2085181488'}
}

\end{description}

\subsection{rsyslogd syslog server (listener settings)}

\begin{description}

\config{RSYSLOGD\_LISTEN}
{RSYSLOGD\_LISTEN}
{RSYSLOGDLISTEN}
{
    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"ultige Werte: leer, ipv4-only, ipv6-only

    Standardeinstellung: \texttt{RSYSLOGD\_LISTEN=''}
}

\config{RSYSLOGD\_IMUDP}
{RSYSLOGD\_IMUDP}
{RSYSLOGDIMUDP}
{
    Legt fest, ob das Input Modul imudp genutzt wird (yes) oder (no).

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{RSYSLOGD\_IMUDP='no'}
}

\config{RSYSLOGD\_IMUDP\_N}
{RSYSLOGD\_IMUDP\_N}
{RSYSLOGDIMUDPN}
{
    Anzahl der Port Definitionen.

    G"ultige Werte: Zahl

    Standardeinstellung: \texttt{RSYSLOGD\_IMUDP\_N='0'}
}

\config{RSYSLOGD\_IMUDP\_x\_PORT}
{RSYSLOGD\_IMUDP\_x\_PORT}
{RSYSLOGDIMUDPxPORT}
{
    Zu benutzender Port.

    G"ultige Werte: 1..65535

    Standardeinstellung: \texttt{RSYSLOGD\_IMUDP\_x\_PORT='514'}
}

\config{RSYSLOGD\_IMTCP}
{RSYSLOGD\_IMTCP}
{RSYSLOGDIMTCP}
{
    Legt fest, ob das Input Modul imtcp genutzt wird (yes) oder (no).

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{RSYSLOGD\_IMTCP='no'}
}

\config{RSYSLOGD\_IMTCP\_N}
{RSYSLOGD\_IMTCP\_N}
{RSYSLOGDIMTCPN}
{
    Anzahl der Port Definitionen.

    G"ultige Werte: Zahl

    Standardeinstellung: \texttt{RSYSLOGD\_IMTCP\_N='0'}
}

\config{RSYSLOGD\_IMTCP\_x\_PORT}
{RSYSLOGD\_IMTCP\_x\_PORT}
{RSYSLOGDIMTCPxPORT}
{
    Zu benutzender Port.

    G"ultige Werte: 1..65535

    Standardeinstellung: \texttt{RSYSLOGD\_IMTCP\_x\_PORT='514'}
}

\end{description}

\subsection{rsyslogd syslog server (allowed sender list)}

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"ur die Kernel NFtables erzeugt.

Siehe Kapitel 'List nftables filter table'

\begin{description}

\config{RSYSLOGD\_ALLOWED\_SENDER\_N}
{RSYSLOGD\_ALLOWED\_SENDER\_N}
{RSYSLOGDALLOWEDSENDERN}
{
    Anzahl der authorisierten Sender.

    G"ultige Werte: Zahl

    Standardeinstellung: \texttt{RSYSLOGD\_ALLOWED\_SENDER\_N='0'}
}

\config{RSYSLOGD\_ALLOWED\_SENDER\_x\_ACTIVE}
{RSYSLOGD\_ALLOWED\_SENDER\_x\_ACTIVE}
{RSYSLOGDALLOWEDSENDERxACTIVE}
{
    Legt fest, ob Konfigurationselement aktiv ist oder nicht.

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{RSYSLOGD\_ALLOWED\_SENDER\_x\_ACTIVE='yes'}
}

\config{RSYSLOGD\_ALLOWED\_SENDER\_x\_PROT}
{RSYSLOGD\_ALLOWED\_SENDER\_x\_PROT}
{RSYSLOGDALLOWEDSENDERxPROT}
{
    Protokoll, das genutzt wird.

    G"ultige Werte: UDP, TCP oder RELP

    Standardeinstellung: \texttt{RSYSLOGD\_ALLOWED\_SENDER\_x\_PROT='RELP'}
}

\config{RSYSLOGD\_ALLOWED\_SENDER\_x\_PORT}
{RSYSLOGD\_ALLOWED\_SENDER\_x\_PORT}
{RSYSLOGDALLOWEDSENDERxPORT}
{
    Port, der genutzt wird.

    G"ultige Werte: numerische Portnummer

    Standardeinstellung: \texttt{RSYSLOGD\_ALLOWED\_SENDER\_x\_PORT='20514'}
}

\config{RSYSLOGD\_ALLOWED\_SENDER\_x}
{RSYSLOGD\_ALLOWED\_SENDER\_x}
{RSYSLOGDALLOWEDSENDERx}
{
    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)\
    Vorsicht bei Hostnamen, FQDN und Netzwerknamen. Es muss eine entsprechende Namensaufl"osung m"oglich sein.

    G"ultige Werte: siehe oben

    Standardeinstellung: \texttt{RSYSLOGD\_ALLOWED\_SENDER\_x='127.0.0.1'}
}


\end{description}



\subsection{rsyslogd syslog server (impstats settings)}

\begin{description}

\config{RSYSLOGD\_IMPSTAT}
{RSYSLOGD\_IMPSTAT}
{RSYSLOGDIMPSTAT}
{
    Lade das impstats Satistik-Modul, ja oder nein.

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{RSYSLOGD\_IMPSTAT='no'}
}

\config{RSYSLOGD\_IMPSTATS\_INTERVAL}
{RSYSLOGD\_IMPSTATS\_INTERVAL}
{RSYSLOGDIMPSTATSINTERVAL}
{
    Statistik Interval in Sekunden.

    G"ultige Werte: Zahl

    Standardeinstellung: \texttt{RSYSLOGD\_IMPSTATS\_INTERVAL='300'}
}

\config{RSYSLOGD\_IMPSTATS\_FACILITY}
{RSYSLOGD\_IMPSTATS\_FACILITY}
{RSYSLOGDIMPSTATSFACILITY}
{
    Facility f"ur die Statistik (numerisch 0-23). \\
    Facility 5 ist syslog.

    G"ultige Werte: Facility (numerisch) 0..23

    Standardeinstellung: \texttt{RSYSLOGD\_IMPSTATS\_FACILITY='5'}
}

\config{RSYSLOGD\_IMPSTATS\_SEVERITY}
{RSYSLOGD\_IMPSTATS\_SEVERITY}
{RSYSLOGDIMPSTATSSEVERITY}
{
    Severity f"ur die Statistik (numerisch 0-7). \\
    Severity 6 ist info.

    G"ultige Werte: Severity (numerisch) 0..7

    Standardeinstellung: \texttt{RSYSLOGD\_IMPSTATS\_SEVERITY='6'}
}

\config{RSYSLOGD\_IMPSTATS\_BRACKETING}
{RSYSLOGD\_IMPSTATS\_BRACKETING}
{RSYSLOGDIMPSTATSBRACKETING}
{
    Benutze bracketing, ja oder nein. \\
    Beim bracketing werden die Statistikbl"ocke in zwei Zeile
    (BEGIN und END) eingeschlossen.

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{RSYSLOGD\_IMPSTATS\_BRACKETING='no'}
}


\config{RSYSLOGD\_IMPSTATS\_SYSLOG}
{RSYSLOGD\_IMPSTATS\_SYSLOG}
{RSYSLOGDIMPSTATSSYSLOG}
{
    Sende die Statistikzeilen in den Syslog Stream, ja oder nein.

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{RSYSLOGD\_IMPSTATS\_SYSLOG='yes'}
}

\config{RSYSLOGD\_IMPSTATS\_FILE}
{RSYSLOGD\_IMPSTATS\_FILE}
{RSYSLOGDIMPSTATSFILE}
{
    Wenn nicht leer, schreibe die Statistik in eine Datei.

    G"ultige Werte: absoluter Dateiname (z.B. /var/log/impstat.log)

    Standardeinstellung: \texttt{RSYSLOGD\_IMPSTATS\_FILE=''}
}


\config{RSYSLOGD\_IMPSTATS\_FILE\_ROTATE}
{RSYSLOGD\_IMPSTATS\_FILE\_ROTATE}
{RSYSLOGDIMPSTATSFILEROTATE}
{
    Rotiere die Statistikdatei mittels logrotate, ja oder nein.

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{RSYSLOGD\_IMPSTATS\_FILE\_ROTATE='no'}
}

\end{description}


\subsection{rsyslogd syslog server (imrelp port list)}

\begin{description}

\config{RSYSLOGD\_IMRELP}
{RSYSLOGD\_IMRELP}
{RSYSLOGDIMRELP}
{
    Legt fest, ob das Input Modul imrelp genutzt wird (yes) oder (no). \\
    \\
    ACHTUNG: \\
    Wird das Input Modul imrelp 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"ur
    ''libgnutls'' selbst notwendigen Packages sehr umfangreich ist.

    G"ultige Werte: yes, no

    Standardeinstellung: \texttt{RSYSLOGD\_IMRELP='no'}
}

\config{RSYSLOGD\_IMRELP\_N}
{RSYSLOGD\_IMRELP\_N}
{RSYSLOGDIMRELPN}
{
    Anzahl der Port Definitionen.

    G"ultige Werte: Zahl

    Standardeinstellung: \texttt{RSYSLOGD\_IMRELP\_N='0'}
}

\config{RSYSLOGD\_IMRELP\_x\_PORT}
{RSYSLOGD\_IMRELP\_x\_PORT}
{RSYSLOGDIMRELPxPORT}
{
    Zu benutzender Port.

    G"ultige Werte: 1..65535

    Standardeinstellung: \texttt{RSYSLOGD\_IMRELP\_x\_PORT='20514'}
}

\end{description}

\subsection{rsyslogd cron job to purge DB table}

\begin{description}

\config{RSYSLOGD\_DBPURGE}
{RSYSLOGD\_DBPURGE}
{RSYSLOGDDBPURGE}
{
   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"o"ser 0 anzeigt.

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

   G"ultige Werte: yes, no

   Standardeinstellung: \texttt{RSYSLOGD\_DBPURGE='no'}
}

\config{RSYSLOGD\_DBPURGE\_SCHEDULE}
{RSYSLOGD\_DBPURGE\_SCHEDULE}
{RSYSLOGDDBPURGESCHEDULE}
{
   Konfiguration des cron jobs.
   Der Default '10 0 * * *' bedeutet, dass der cron job jeden Tag um 00:10 Uhr ausgef"uhrt werden soll.

   G"ultige Werte: Konfigurationsstring f"ur cron jobs

   Standardeinstellung: \texttt{RSYSLOGD\_DBPURGE\_SCHEDULE='10 0 * * *'}
}

\config{RSYSLOGD\_DBPURGE\_KEEP\_DAYS}
{RSYSLOGD\_DBPURGE\_KEEP\_DAYS}
{RSYSLOGDDBPURGEKEEPDAYS}
{
   Anzahl Tage, f"ur die die Logeintr"age in der Tabelle SystemEvents erhalten bleiben sollen.
   Der Default '7' bedeutet 7 Tage bzw. eine Woche.

   G"ultige Werte: Zahl

   Standardeinstellung: \texttt{RSYSLOGD\_DBPURGE\_KEEP\_DAYS='7'}
}

\end{description}



\subsection{rsyslogd expert cron job(s) to purge DB table}

\begin{description}

\config{RSYSLOGD\_DBPURGE\_EXPERT}
{RSYSLOGD\_DBPURGE\_EXPERT}
{RSYSLOGDDBPURGEEXPERT}
{
   Soll expert purge genutzt werden, ja oder nein.

   G"ultige Werte: yes, no

   Standardeinstellung: \texttt{RSYSLOGD\_DBPURGE\_EXPERT='no'}
}

\config{RSYSLOGD\_DBPURGE\_N}
{RSYSLOGD\_DBPURGE\_N}
{RSYSLOGDDBPURGEN}
{
   Anzahl der Definitionen.

   G"ultige Werte: Zahl

   Standardeinstellung: \texttt{RSYSLOGD\_DBPURGE\_N='1'}
}

\config{RSYSLOGD\_DBPURGE\_x\_NAME}
{RSYSLOGD\_DBPURGE\_x\_NAME}
{RSYSLOGDDBPURGExNAME}
{
   Name bzw. Beschreibung der Definition.

   G"ultige Werte: Text

   Standardeinstellung: \texttt{RSYSLOGD\_DBPURGE\_x\_NAME=''}
}

\config{RSYSLOGD\_DBPURGE\_x\_ACTIVE}
{RSYSLOGD\_DBPURGE\_x\_ACTIVE}
{RSYSLOGDDBPURGExACTIVE}
{
   Ist die Definition aktiv, ja oder nein.

   G"ultige Werte: yes, no

   Standardeinstellung: \texttt{RSYSLOGD\_DBPURGE\_x\_ACTIVE='yes'}
}

\config{RSYSLOGD\_DBPURGE\_x\_SCHEDULE}
{RSYSLOGD\_DBPURGE\_x\_SCHEDULE}
{RSYSLOGDDBPURGExSCHEDULE}
{
   Konfiguration des cron jobs.
   Der Default '10 0 * * *' bedeutet, dass der cron job jeden Tag um 00:10 Uhr ausgef"uhrt werden soll.

   G"ultige Werte: Konfigurationsstring f"ur cron jobs

   Standardeinstellung: \texttt{RSYSLOGD\_DBPURGE\_x\_SCHEDULE='10 0 * * *'}

}

\config{RSYSLOGD\_DBPURGE\_x\_KEEP\_DAYS}
{RSYSLOGD\_DBPURGE\_x\_KEEP\_DAYS}
{RSYSLOGDDBPURGExKEEPDAYS}
{
   Anzahl Tage, f"ur die die Logeintr"age in der Tabelle SystemEvents erhalten bleiben sollen.
   Der Default '7' bedeutet 7 Tage bzw. eine Woche.

   Wird hier eine Angabe gemacht, so wird zus"atzlich zu der Bedingung aus
   COLUMN, OPERATOR und VALUE (siehe unten) eine Bedingung auf die Column ReceivedAt erzeugt.
   
   G"ultige Werte: Zahl / leer

   Standardeinstellung: \texttt{RSYSLOGD\_DBPURGE\_x\_KEEP\_DAYS='7'}
}

\config{RSYSLOGD\_DBPURGE\_x\_COLUMN}
{RSYSLOGD\_DBPURGE\_x\_COLUMN}
{RSYSLOGDDBPURGExCOLUMN}
{
   Column aus der Tabelle SystemEvents.

   G"ultige Werte: ID, ReceivedAt, DeviceReportedTime, Facility, Priority, FromHost, Message, InfoUnitID, SysLogTag, ProcessID

   Standardeinstellung: \texttt{RSYSLOGD\_DBPURGE\_x\_COLUMN='FromHost'}
}

\config{RSYSLOGD\_DBPURGE\_x\_OPERATION}
{RSYSLOGD\_DBPURGE\_x\_OPERATION}
{RSYSLOGDDBPURGExOPERATION}
{
   Operation, die genutzt werden soll.

   G"ultige Werte: >, >=, <, <=, =, !=, like

   Standardeinstellung: \texttt{RSYSLOGD\_DBPURGE\_x\_OPERATION='like'}
}

\config{RSYSLOGD\_DBPURGE\_x\_VALUE}
{RSYSLOGD\_DBPURGE\_x\_VALUE}
{RSYSLOGDDBPURGExVALUE}
{
   Wert, der genutzt werden soll.\\
   Bei like steht \% f"ur mehrere Zeichen, \_ f"ur ein Zeichen.

   G"ultige Werte: Text

   Standardeinstellung: \texttt{RSYSLOGD\_DBPURGE\_x\_VALUE='eistest\%'}
}

\end{description}


\subsection{rsyslogd syslog server (file input definitions)}

\begin{description}

\config{RSYSLOGD\_FILE\_INPUT}
{RSYSLOGD\_FILE\_INPUT}
{RSYSLOGDFILEINPUT}
{
   Soll File Input genutzt werden, ja oder nein.

   G"ultige Werte: yes, no

   Standardeinstellung: \texttt{RSYSLOGD\_FILE\_INPUT='no'}
}

\config{RSYSLOGD\_FILE\_INPUT\_N}
{RSYSLOGD\_FILE\_INPUT\_N}
{RSYSLOGDFILEINPUTN}
{
   Anzahl der Definitionen.

   G"ultige Werte: Zahl

   Standardeinstellung: \texttt{RSYSLOGD\_FILE\_INPUT\_N='0'}
}

\config{RSYSLOGD\_FILE\_INPUT\_x\_NAME}
{RSYSLOGD\_FILE\_INPUT\_x\_NAME}
{RSYSLOGDFILEINPUTNAME}
{
   Name bzw. Beschreibung der Definition.

   G"ultige Werte: Text

   Standardeinstellung: \texttt{RSYSLOGD\_FILE\_INPUT\_x\_NAME=''}
}

\config{RSYSLOGD\_FILE\_INPUT\_x\_ACTIVE}
{RSYSLOGD\_FILE\_INPUT\_x\_ACTIVE}
{RSYSLOGDFILEINPUTACTIVE}
{
   Ist die Definition aktiv ja oder nein.

   G"ultige Werte: yes, no

   Standardeinstellung: \texttt{RSYSLOGD\_FILE\_INPUT\_x\_ACTIVE='yes'}
}

\config{RSYSLOGD\_FILE\_INPUT\_x\_FILENAME}
{RSYSLOGD\_FILE\_INPUT\_x\_FILENAME}
{RSYSLOGDFILEINPUTFILENAME}
{
   Absoluter Pfadname der Input Datei.

   G"ultige Werte: absoluter Pfad

   Standardeinstellung: \texttt{RSYSLOGD\_FILE\_INPUT\_x\_FILENAME='/var/log/log.url-error'}
}

\config{RSYSLOGD\_FILE\_INPUT\_x\_TAG}
{RSYSLOGD\_FILE\_INPUT\_x\_TAG}
{RSYSLOGDFILEINPUTxTAG}
{
   Zu nutzender Tag f"ur die Logmeldungen.
   Es ist sinnvoll den Tag mit einem Doppelpunkt als letztes Zeichen
   einzugeben.

   G"ultige Werte: nicht leer

   Standardeinstellung: \texttt{RSYSLOGD\_FILE\_INPUT\_x\_TAG='url-error:'}
}

\config{RSYSLOGD\_FILE\_INPUT\_x\_FACILITY}
{RSYSLOGD\_FILE\_INPUT\_x\_FACILITY}
{RSYSLOGDFILEINPUTxFACILITY}
{
   Zu nutzende Facility f"ur die Logmeldungen.
   Z.B. news, user, local0, local1, local2, local3, local4, local5, local6, local7.

   G"ultige Werte: facility

   Standardeinstellung: \texttt{RSYSLOGD\_FILE\_INPUT\_x\_FACILITY='local7'}
}

\config{RSYSLOGD\_FILE\_INPUT\_x\_SEVERITY}
{RSYSLOGD\_FILE\_INPUT\_x\_SEVERITY}
{RSYSLOGDFILEINPUTxSEVERITY}
{
   Zu nutzende Severity f"ur die Logmeldungen.

   G"ultige Werte: debug, info, notice, warning, err, crit, alert, emerg

   Standardeinstellung: \texttt{RSYSLOGD\_FILE\_INPUT\_x\_SEVERITY='err'}
}


\end{description}



\section{Spezielle Menuepunkte}

\subsection{Menue: Test rsyslogd configuration}

"Uber diesen Menuepunkt kann die rsyslogd Konfiguration durch den Daemon selbst
gepr"uft werden. Dazu wird er intern mit dem Parameter '-N 10' aufgerufen.

Die Pr"ufung kann von der Kommandozeile auch "uber\\
~~~~/etc/init.d/rsyslogd test\\
ausgef"uhrt werden.

Im Erfolgsfall wird eine Meldung wie folgt ausgegeben:

\begin{verbatim}
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
\end{verbatim}

Die Fehlermeldungen sind leider (manchmal) etwas kryptisch:

\begin{verbatim}
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
\end{verbatim}

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.

\section{Menue: rsyslogd tools}

"Uber ein Untermenue werden folgende Werkzeuge zur Verf"ugung gestellt.

\subsection{Create configuration using syslog(base)}

Unter Nutzung der aktuellen Konfiguration f"ur den syslogd aus der base
Konfiguration wird eine Konfiguration f"ur den rsyslogd erzeugt.

Die globalen Angaben \\
SYSLOGD\_LOG\_COUNT \\
SYSLOGD\_LOG\_INTERVAL \\
werden f"ur alle einzelnen Rules als \\
RSYSLOGD\_RULE\_x\_ROTATE\_LOG\_COUNT und \\
RSYSLOGD\_RULE\_x\_ROTATE\_LOG\_INTERVAL "ubernommen.

\subsection{Nutzung einer Datenbank}

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 "uber das Menue 'Create logging database'. \\

Schritt 3.) \\
Anlegen eines entsprechenden Users, um in die Tabellen der Logging Datenbank
schreiben zu k"onnen. Dies geschieht "uber 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.

\subsection{Create logging database}

Es wird die Datenbank aus RSYSLOGD\_MYSQL\_DB\_NAME (Achtung: Gro"s- 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"alt Erweiterungen, die\\
f"ur den Adiscon's Log Analyzer (Copyright Adiscon) ben"otigt werden.

Das Skript /usr/lib/rsyslog/alterDB\_addon\_LogAnalyzer.sql wird "uber den
Menuepunkt ''Alter logging database for LogAnalyzer'' ausgef"uhrt.


\subsection{Grant full rights on logging database to a user}

Den w"ahrend 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"ur MySQL wie folgt angegeben werden: \\
>localhost,Name der logging database,Username,Passwort

Das Zeichen > definiert, da"s eine Datenbank genutzt werden soll.

Username und Passwort m"ussen (nat"urlich) mit den Angaben bei
'Grant full rights on logging database to a user' "ubereinstimmen.

\subsection{Grant read rights on logging database to a user}

Den w"ahrend des Aufrufs einzugebenden User mit den einzugebenden Passwort
werden ausschlie"slich 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.

"Uber

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

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

\subsection{Drop logging database}

"Uber diesen Menuepunkt kann die komplette logging database gel"oscht werden.

Zur Sicherheit erfolgt eine entsprechende R"uckfrage:\\
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.

\subsection{Alter logging database for LogAnalyzer}

Bei Erzeugen der logging database wird bei der Tabelle SystemEvents
die Column ProcessID erg"anzt.

"Uber diesen Menuepunkt werden die Tabellen ProcessID und SystemEvents
erweitert, um das Tool LogAnalyzer nutzen zu k"onnen.

\subsection{Manual logfile rotate}

Unter Umst"anden ist es sinnvoll ein Logfile unabh"angig von der
Gr"o"se und insbesondere unabh"angig vom Aufruf von logrotate via
cron zu rotieren. Dies ist "uber das Tool 'Manual logfile rotate'
m"oglich.

Beim Aufruf wird ein Untermen"u mit den Namen der Logfiles
angeboten, die rotiert werden k"onnen.

Beispiel:

\begin{verbatim}

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

\end{verbatim}

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

\begin{verbatim}

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

\end{verbatim}
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 Verlust von Loginformation kommen.\\
Au"serdem wurde bei RSYSLOGD\_RULE\_1\_ROTATE\_POST\_CMD keine Angabe gemacht.
Es wird daher beim manuellen Logrotate der oben aufgef"uhrte Befehl genutzt.

Der Logrotate-Befehl wird mit der Option -f (force) ausgef"uhrt.

\subsection{Test log messages}

"Uber den Befehl logger werden Testmessages an den rsyslogd geschickt.
Dabei sind die Facility (FACILITY), die Priorit"at (PRIORITY), die Anzahl
der Durchl"aufe (Count) und eine Wartezeit (Sleep (seconds)) ausw"ahlbar.

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.

\subsection{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:

\begin{verbatim}

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

\end{verbatim}

Hier existieren nur zwei Rules.\\
Alle Tupel FACILITY/PRIORITY bis auf local5/info werden "uber die Rule 1 (\#1\#) erfa"st.
Nur das Tupel local5/info wird "uber Rule 2 (\#2\#) erfa"st.

Eine andere Konfiguration zeigt: \

\begin{verbatim}

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

\end{verbatim}

Hier wird local5/notice und h"oher durch zwei Rules \#1\#2\# erfa"st.

\subsection{List nftables filter table}

Hier k"onnen 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 "ueber UDP Port 517 Meldungen \\
an den rsyslogd senden. \\
Nur der Server 192.168.178.103 darf auch "uber TCP Port 518 Meldungen \\
an den rsyslogd senden. \\
Der Server 192.168.178.103 darf auch "uber das RELP Protokoll "uber
Port 20514 Meldungen an den rsyslogd senden. \\

Dies f"uhrt zu folgender NFtable Filtertabelle: \\

\begin{verbatim}
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
}

}
\end{verbatim}

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"s Pakete die von anderen Quelladressen (saddr) stammen
verworfen werden.

\subsection{List allowed sender}

Hier kann eine "Ubersicht zu den Konfigurationen von
\begin{verbatim}

   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.

\end{verbatim}

Im Wesentlichen k"onnen damit L"ucken beim Schutz vor beliebigen Sendern
erkannt werden.

Beispiel: \\
\begin{verbatim}

   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

\end{verbatim}

Beim Input Modul imudp wurden zwar Regeln f"ur die Ports 514 (2 Regeln) und 518 erstellt, aber
"uber den Port 515 k"onnen beliebige Sender Daten anliefern. \\
Beim Input Modul imtcp wurde eine Regel f"ur den Port 517 erstellt. \\
Beim Input Modul imrelp wurde der Port 20515 f"ur beliebige Sender offen gelassen.

Fehlt ein Schutz, so kann der rsyslogd ggf. mit Meldungen "uberflutet werden!

\section{Datenfluss im rsyslog daemon}

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:\\


\begin{verbatim}


   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

\end{verbatim}


Die Meldungen werden zur Abarbeitung an die angegebenen Regeln "ubergeben.
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"achste Regel ausgewertet.

Nach der Gruppe 'Global Discard Filter' wird f"ur 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"send abh"angig
von RSYSLOGD\_FILTER\_x\_STOP verworfen ('yes') oder bei ('no') die n"achste 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"uhrt und an die n"achste Regel weitergegeben. Klare Ausnahme ist hier die
Discard Aktion. Hier besteht die gew"unschte Aktion ja gerade im Verwerfen der Meldung.

Trifft eine Regel f"ur mehrere Meldungen zu, so werden ggf. mehrere Aktionen durchgef"uhrt.
Um z.B. alle Meldungen in die Datei /var/log/messages und in die Datenbanktabelle der MySQL-Datenbank zu schreiben
w"are also z.B.: \\

\begin{verbatim}

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'

\end{verbatim}

zu konfigurieren (Konfiguration leicht gek"urzt).

\section{Global Discard Filter}

Einige Module / Programme etc. erzeugen zyklisch Syslog-Nachrichten,
die die rsyslogd Ziele unn"otig aufbl"ahen. \\
Diese Syslog-Meldungen lassen sich ggf. nicht "uber facility / priority
Angaben ausfiltern sondern nur "uber den Inhalt der Meldungen.

Dies kann "uber 'Global Discard Filter' geschehen.

Beispiel 1 (von J"urgen Edner):

Das USBIP-Modul generiert beispielhaft zyklisch folgende Meldungen:
\begin{verbatim}

  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

\end{verbatim}
Achtung: Zeilenumbruch zur Lesbarkeit eingebaut.

Andere kernel Meldungen und andere Meldungen von vhci\_hcd sollen
nat"urlich NICHT ausgefiltert werden!

Die obigen Meldungen lassen sich leicht "uber folgende 'Global Discard Filter' unterdr"ucken.

\begin{verbatim}

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' 

\end{verbatim}
Achtung: Zeilenumbruch zur Lesbarkeit eingebaut.

Beispiel 2:

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

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

\end{verbatim}
Achtung: Zeilenumbr"uche 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 "uber folgende
'Global Discard Filter' unterdr"ucken.

\begin{verbatim}

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.*'

\end{verbatim}
Achtung: Zeilenumbruch zur Lesbarkeit eingebaut.

ACHTUNG:\\
Vorsicht bei der Anwendung von Negationen. Hier k"onnen h"ochst unerw"unschte
Ergebnisse erzielt werden.

\section{Filter Rules}

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.

\begin{verbatim}
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'
\end{verbatim}

Hier wird startswith genutzt, da unabh"angig 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.

\begin{verbatim}
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'
\end{verbatim}

F"ur 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"ur Filter Rules mit zwei Dateien:
\begin{verbatim}
#-------------------------------------------------------------------------------
# /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
}
\end{verbatim}

In einer sp"ateren Version des rsyslogd Paketes wird es ggf. Optionen f"ur
einzelne spezielle Konfigurationen geben.

\section{expert cron job(s) to purge DB table}

Mit Hilfe der Definitionen aus dieser Konfigurationsgruppe k"onnen
eine Reihe von cron Jobs definiert werden, bei deren Ausf"urung
jeweils defnierte Zeilen aus der Tabelle SystemEvents gel"oscht
werden k"onnen.

Ist RSYSLOGD\_DBPURGE\_x\_KEEP\_DAYS nicht leer, so wird
eine Bedingung
\begin{verbatim}
(ReceivedAt < date_add(current_date, interval 
              -$RSYSLOGD_DBPURGE_x_KEEP_DAYS day)) and
\end{verbatim}
mit der Bedingung aus COLUMN, OPERATOR und VALUE mittels and verkn"upft.
Achtung: Zeilenumbruch zur besseren Lesbarkeit eingef"ugt.

Aus RSYSLOGD\_DBPURGE\_x\_COLUMN, RSYSLOGD\_DBPURGE\_x\_OPERATION \\
und RSYSLOGD\_DBPURGE\_x\_VALUE wird ebenfalls eine Bedingung generiert. \\
Beispiel:
\begin{verbatim}
(FromHost like 'eistest%')
\end{verbatim}

Die generierten SQL-Befehle k"onnen im Menue ''rsyslogd tools''
Untermenue ''Test DBPurge expert configurations'' getestet werden:

Beispiel:
\begin{verbatim}
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

\end{verbatim}

Die Ausgabe ... unter Name bedeutet, da"s RSYSLOGD\_DBPURGE\_x\_NAME
leer ist.

\section{File Input Definitions}

Mit Hilfe der File Input Definitions kann der rsyslogd veranlasst
werden Standard-Text-Dateien in syslog Meldungen zu konvertieren.
Diese k"onnen dann auch "uber entsprechende Regeln auf einen
Remote Host "ubertragen 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"auft, verf"ugbar.
Eine entsprechende File Input Definition erm"oglicht es
diese Meldungen in syslog Meldungen zu konvertieren und
auf einen anderen Host zu "ubertragen.

Hier wird (zuf"allig) Regel 5 genutzt.

\begin{verbatim}

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'

\end{verbatim}

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

Inhalt:
\begin{verbatim}

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

\end{verbatim}

erscheint als:
\begin{verbatim}

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

\end{verbatim}

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

Es werden jeweils nur 'neue' Zeilen "ubertragen.
Eine ggf. konfigurierte Logrotate Aktion f"ur 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"oscht, so wird erneut der
gesamte Inhalt der Datei "ubertragen.

\section{properties}

\begin{verbatim}

   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.

\end{verbatim}

\section{Logrotate Konfiguration fuer Dynamic Files}

\begin{verbatim}

   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
   ...

\end{verbatim}


\section{Einstellungen beim Uebersetzen der Packages}

Mit folgenden Einstellungen wurde der rsyslogd "ubersetzt (eigentlich konfiguriert):

\begin{small}
\begin{verbatim}

        --prefix=/usr
        --disable-generate-man-pages
        --enable-imfile
        --enable-mysql
        --enable-relp
        --enable-impstats
        --enable-omprog

\end{verbatim}
\end{small}
