This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
uls:agents:log_file_adapter [2024-04-19 09:24] uls [Configuration File] |
uls:agents:log_file_adapter [2025-04-03 10:43] (current) uls [Configuration File] |
||
---|---|---|---|
Line 50: | Line 50: | ||
Für jede neu hinzukommende Zeile werden folgende Aktionen durchgeführt: | Für jede neu hinzukommende Zeile werden folgende Aktionen durchgeführt: | ||
* passt die Zeile zum regulären Ausdruck von vreg, dann diese Zeile ignorieren => auf nächste Zeile warten | * passt die Zeile zum regulären Ausdruck von vreg, dann diese Zeile ignorieren => auf nächste Zeile warten | ||
- | * passt die Zeile zu einem regulären Ausdruck von reg0..reg99 oder reg0+..reg99+, dann die Zeile parsen mit iformat0..99 und entsprechende action0..action99 ausführen => wenn reg0+..reg99+, dann weiter vergleichen, sonst auf nächste Zeile warten | + | * passt die Zeile zu einem regulären Ausdruck der reg oder reg+, dann die Zeile parsen mit iformat und entsprechende action, write oder syslog ausführen |
- | * ist ereg_all = 1, dann eaction ausführen => auf nächste Zeile warten | + | => wenn reg+, dann weiter vergleichen, sonst auf nächste Zeile warten |
- | * passt die Zeile zum regulären Ausdruck von ereg, dann die Zeile parsen mit inputformat und eaction ausführen => auf nächste Zeile warten | + | |
- | * ist wreg_all = 1, dann waction ausführen => auf nächste Zeile warten | + | |
- | * passt die Zeile zum regulären Ausdruck von wreg, dann die Zeile parsen mit inputformat und waction ausführen => auf nächste Zeile warten | + | |
* ist lreg_all = 1, dann laction ausführen => auf nächste Zeile warten | * ist lreg_all = 1, dann laction ausführen => auf nächste Zeile warten | ||
* passt die Zeile zum regulären Ausdruck von lreg, dann die Zeile parsen mit inputformat und laction ausführen => auf nächste Zeile warten | * passt die Zeile zum regulären Ausdruck von lreg, dann die Zeile parsen mit inputformat und laction ausführen => auf nächste Zeile warten | ||
* wenn keine der obigen Bedingungen erfüllt sind, dann wird die Zeile ignoriert => auf nächste Zeile warten | * wenn keine der obigen Bedingungen erfüllt sind, dann wird die Zeile ignoriert => auf nächste Zeile warten | ||
- | Zu allen direkt eingetragenen regulären Ausdrücken reg?[+] kann auch eine Datei reg_file?[+] angegeben werden, die mehrere Zeilen mit jeweils einem regulären Ausdruck enthalten können. Die regulären Ausdrücke werden bei der Anwendung von reg_file? logisch ODER verknüpft. Es wird entweder reg? oder reg_file? verwendet, der letzte Eintrag in der Konfigurationsdatei entscheidet. | + | Zu allen direkt eingetragenen regulären Ausdrücken reg[+] kann auch eine Datei reg_file[+] angegeben werden, die mehrere Zeilen mit jeweils einem regulären Ausdruck enthalten können. Die regulären Ausdrücke werden bei der Anwendung von reg_file logisch ODER verknüpft. Es wird entweder reg oder reg_file verwendet, der letzte Eintrag in der Konfigurationsdatei entscheidet. |
Line 235: | Line 232: | ||
# es können bis zu 100 Dateien überwacht werden, die als feste Dateinamen oder Suchmuster angeben werden | # es können bis zu 100 Dateien überwacht werden, die als feste Dateinamen oder Suchmuster angeben werden | ||
- | # d. h. inputfile und inputfilepattern darf mehrfach angegeben werden | + | # d. h. inputfile, inputfiles, inputfilepattern und inputfilepatterns dürfen mehrfach angegeben werden |
# feste Dateinamen | # feste Dateinamen | ||
Line 252: | Line 249: | ||
# Es wird die erste Datei, die zum Muster passt überwacht. | # Es wird die erste Datei, die zum Muster passt überwacht. | ||
# Wenn die Datei gelöscht oder komprimiert wird, dann wird erneut gesucht. | # Wenn die Datei gelöscht oder komprimiert wird, dann wird erneut gesucht. | ||
- | # | + | # |
inputfilepattern = /var/log/prod/logfile*.log | inputfilepattern = /var/log/prod/logfile*.log | ||
+ | |||
+ | # Dateien nach Muster in mehreren Pfaden | ||
+ | # | ||
+ | # Wenn der Name der Logdatei nicht feststeht. | ||
+ | # Es wird in allen Pfaden jeweils die erste Datei, die zum Muster passt überwacht. | ||
+ | # Wenn die Datei gelöscht oder komprimiert wird, dann wird erneut gesucht. | ||
+ | # Der letzte Wildcard gibt an, über welche Dateien die neueste gesucht werden soll. | ||
+ | # Wenn der veränderliche Teil nicht am Ende steht, dann muss der veränderliche Teil | ||
+ | # in {...} eingeschlossen werden. | ||
+ | # | ||
+ | inputfilepatterns = /var/log/*/logfile*.log # jeweils die neueste Datei pro Ordner | ||
+ | inputfilepatterns = /var/log/*_logfile*.log # mehrere Logfiles in einem Ordner | ||
+ | inputfilepatterns = /var/log/logfile_{*}_*.log # mehrere Logfiles in einem Ordner, das Datum steht vorn | ||
+ | |||
# Die Suchreihenfolge kann geändert werden: | # Die Suchreihenfolge kann geändert werden: | ||
Line 268: | Line 279: | ||
# unabhängig von inputfilepatternsort wird auf die neueste Datei gewechselt | # unabhängig von inputfilepatternsort wird auf die neueste Datei gewechselt | ||
inputfilepatternsearch = 60 | inputfilepatternsearch = 60 | ||
+ | |||
+ | # inputfilereopen | ||
+ | # Bei Linux werden die Logdateien nicht geschlossen | ||
+ | inputfilereopen = 1 # Logdateien schließen, wenn nicht gelesen wird (ist bei Windows standard) | ||
+ | |||
+ | # exit_on | ||
+ | # der lfa4uls kann beendet werden, wenn: | ||
+ | exit_on = EOF # beenden, wenn Datei zu Ende gelesen wurde | ||
+ | exit_on = FNF # wenn keine Datei gefunden wird, bzw. wenn es keine neue Datei gibt | ||
Line 343: | Line 363: | ||
- | # ----- LINE FORMAT ----- | + | # ----- date time ----- |
- | # | + | utcin = 1|0 # read timestamps in UTC or localtime |
- | # ----- INPUT FORMAT ----- | + | utcout = 1|0 # write timestamps in UTC or localtime |
+ | |||
+ | |||
+ | # ----- INPUT LINE FORMAT ----- | ||
inputformat = %t %h %q: %sValue1: %1, Value2: %2, %W | inputformat = %t %h %q: %sValue1: %1, Value2: %2, %W | ||
Line 354: | Line 377: | ||
inputformat =| %t %h %q: %svalue1: %1, value2: %2, %W | inputformat =| %t %h %q: %svalue1: %1, value2: %2, %W | ||
- | |||
# Folgende Codes koennen zum Parsen der Zeilen benutzt werden: | # Folgende Codes koennen zum Parsen der Zeilen benutzt werden: | ||
Line 506: | Line 528: | ||
# gleiche Zeilen werden für <s> Sekunden unterdrückt. Die erste passende Zeile wird ausgegeben. | # gleiche Zeilen werden für <s> Sekunden unterdrückt. Die erste passende Zeile wird ausgegeben. | ||
# Bei der Prüfung auf gleiche Zeilen werden alle Felder mit Ausnahme der Zeitstempelfelder herangezogen, | # Bei der Prüfung auf gleiche Zeilen werden alle Felder mit Ausnahme der Zeitstempelfelder herangezogen, | ||
- | # die als Ausgabe genutzt werden können. Also nicht %s (ab Version 5.5). | + | # die als Ausgabe genutzt werden können. Also nicht %s, %c (ab Version 5.5). |
# Wenn ein Feld nicht beachtet werden soll, dann muss das Feld um ein 'i' erweitert werden: %q -> %iq, %1 -> %i1, ... | # Wenn ein Feld nicht beachtet werden soll, dann muss das Feld um ein 'i' erweitert werden: %q -> %iq, %1 -> %i1, ... | ||
# Beispiel: | # Beispiel: | ||
Line 523: | Line 545: | ||
# Average über die Variablen ausgegeben werden kann. | # Average über die Variablen ausgegeben werden kann. | ||
# <CONSFMT>: | # <CONSFMT>: | ||
- | # <n>/<m>[s|m|h]<SFLE>: <n> 0-59 | + | # <n>/<m>[s|m|h]<SFLEN>: <n> 0-59 |
# <m> Anzahl s|m|h | # <m> Anzahl s|m|h | ||
# s|m|h Sekunden, Minuten, Stunden, def. ist m | # s|m|h Sekunden, Minuten, Stunden, def. ist m | ||
- | # <SFLE> Zeitstempelflag: S: Start, F: First, L: Last, E: End, def. ist E | + | # <SFLEN> Zeitstempelflag: S: Start, F: First, L: Last, E: End, N: Now, def. ist E |
# Bedeutung: Beginnend mit <n> wird alle <m> s|m|h eine Zeile ausgegeben. | # Bedeutung: Beginnend mit <n> wird alle <m> s|m|h eine Zeile ausgegeben. | ||
# Beispiele: | # Beispiele: | ||
- | # 0/5m -> alle 5 Minuten eine Zeile | + | |
- | # 3/10s -> alle 10 Sekunden (3, 13, 23, 33, 43, 53) eine Zeile | + | consoliate = 0/5m -> alle 5 Minuten eine Zeile |
+ | consolidate = 3/10s -> alle 10 Sekunden (3, 13, 23, 33, 43, 53) eine Zeile | ||
# | # | ||
# <CONSFMT2>: | # <CONSFMT2>: | ||
- | # <m><smh><FL>: <smh> für Sekunden, Minute, Stunden, <m> Anzahl | + | # <m><smh><FLN>: <smh> für Sekunden, Minute, Stunden, <m> Anzahl |
- | # F|L first/last | + | # F|L|N first/last/now |
# Bedeutung: Es wird auf pasende Zeilen gewartet, dann wird alle | # Bedeutung: Es wird auf pasende Zeilen gewartet, dann wird alle | ||
# <m> Sekunden/Minuten/Stunden ein konsolidierter Wert | # <m> Sekunden/Minuten/Stunden ein konsolidierter Wert | ||
Line 542: | Line 565: | ||
# ausgegeben oder bei SIGHUP|SIGUSR1 | # ausgegeben oder bei SIGHUP|SIGUSR1 | ||
# | # | ||
- | # consolidatenull = 1 # Zeile auch ausgeben, wenn keine Zeilen konsolidiert wurden. | + | consolidatenull = 1 # Zeile auch ausgeben, wenn keine Zeilen konsolidiert wurden. |
- | # consolidatedistinct = 1 # Es werden nur unterschiedliche Zeilen betrachtet. Z. B. unterschiedliche User zählen. | + | consolidatedistinct = 1 # Es werden nur unterschiedliche Zeilen betrachtet. Z. B. unterschiedliche User zählen. |
+ | consolidatedistinctinit = 100000 # distinct lines Vorbelegung, wenn größer als 10000. | ||
Line 572: | Line 596: | ||
<priority>: LOG_DEBUG|LOG_INFO|LOG_NOTICE|LOG_WARNING|LOG_ERR|LOG_CRIT|LOG_ALERT|LOG_EMERG | <priority>: LOG_DEBUG|LOG_INFO|LOG_NOTICE|LOG_WARNING|LOG_ERR|LOG_CRIT|LOG_ALERT|LOG_EMERG | ||
store = Ausgabeformat beim Schreiben in Temp-Datei (unter storepath) | store = Ausgabeformat beim Schreiben in Temp-Datei (unter storepath) | ||
- | writetopath = Pfad festlegen für "write" | + | writetopath = Pfad festlegen für "writeto" |
writeto = Ausgabemuster für Datei, die mit writetopath festgelegt wird. | writeto = Ausgabemuster für Datei, die mit writetopath festgelegt wird. | ||
exit = <exitcode> # lfa4uls beenden mit Exitcode <exitcode> (Der <exitcode> kann auch eine Variable z. B. %3 sein) | exit = <exitcode> # lfa4uls beenden mit Exitcode <exitcode> (Der <exitcode> kann auch eine Variable z. B. %3 sein) | ||
Line 584: | Line 608: | ||
konsolidierte Zeilen zurückgesetzt werden | konsolidierte Zeilen zurückgesetzt werden | ||
- | # ----- Einschränkung der reg<n> für verschiedene Logdateien ----- | + | # ----- Einschränkung der reg für verschiedene Logdateien ----- |
# | # | ||
- | # Die anzuwendenden reg<n> können pro "inputfile" bzw. "inputfilepattern" eingeschränkt werden. | + | # Die anzuwendenden reg können pro "inputfile" bzw. "inputfilepattern" eingeschränkt werden. |
# Dazu wird vor den entsprechenden "inputfile" und "inputfilepattern" Zeilen der Gültigkeitsbereich definiert: | # Dazu wird vor den entsprechenden "inputfile" und "inputfilepattern" Zeilen der Gültigkeitsbereich definiert: | ||
# | # | ||
- | # setregrange = <start> - <end> | + | # setregrange = <start> - <end> # Geht übersichtlicher durch die Bildung von Blöcken. |
# | # | ||
# für die nun folgenden "input*" Zeilen gelten nur die reg<start> - reg<end> | # für die nun folgenden "input*" Zeilen gelten nur die reg<start> - reg<end> | ||
+ | # | ||
+ | # Sollte nicht mehr verwendet werden, denn das kann durch entsprechende Blöcke übersichtlicher abgebildet werden: | ||
+ | |||
+ | inputfile = file1 | ||
+ | reg = | ||
+ | write = | ||
+ | |||
+ | reg = | ||
+ | write = | ||
+ | |||
+ | # durch Angabe eines neuen "inputfile*" wird ein neuer Block begonnen. Die vorherigen reg gelten nur für file1 und die folgenden nur für file2. | ||
+ | inputfile = file2 | ||
+ | reg = | ||
+ | write = | ||
+ | |||
+ | reg = | ||
+ | write = | ||
# ----- SYSLOG ----- | # ----- SYSLOG ----- | ||
# festlegen der Syslog Parameter | # festlegen der Syslog Parameter | ||
- | syslogpars = <syslog-ident>, <syslog-facility> # Siehe openlog | + | syslogpars = <syslog-ident>, <syslog-facility> # Siehe "man openlog" |
# ----- LOG ----- | # ----- LOG ----- | ||
# | # | ||
- | # Regulaeren Ausdruck und Aktion fuer "Logging" (Info) | + | # Regulären Ausdruck und Aktion für "Logging" |
+ | # ACHTUNG: lreg_all, lreg, laction und lwrite werden in einer der nächsten Versionen nicht mehr zur Verfügung stehen. | ||
+ | # Die Kombination aus lreg_all = 1 und lwrite kann durch regall und write abgelöst werden. | ||
lreg_all = 1 | lreg_all = 1 | ||
Line 702: | Line 745: | ||
<file> | <file> | ||
- | # ----- FILE ----- | + | # ----- logfile ----- |
# | # | ||
# file to search | # file to search | ||
- | inputfile = /var/log/messages | + | inputfile = /var/log/sample.log |
- | # ----- LINE FORMAT ----- | + | # ----- write quoting ----- |
# | # | ||
- | inputformat = %t %h %q: %W | + | writequoting = \" |
- | # <inputformat> defines the parsing rule for each line of the <inputfile>. | + | # ----- line format ----- |
- | # Each line is eaten character by character and you cannot use regular | + | |
- | # expressions, see 'reg' in the `Advanced Usage 1`_ below. | + | |
- | + | ||
- | # You may use the following special directives: | + | |
- | # %% => % | + | |
- | # %s => discard an expression up to the next white space | + | |
- | # %.<n>s => discard <n> non white space characters | + | |
- | # %t => Date in the format: MMM DD hh:mm:ss | + | |
- | # or in the format: YYYY-MM-DD[T ]hh:mm:ss[.ssssss][+-hh:mm] | + | |
- | # %c => discard one character | + | |
- | # %.<n>c => discard <n> characters | + | |
- | # %h => set %h to the expression from current position to last non white space character | + | |
- | # %q => set %q to the expression from current position to last non white space character | + | |
- | # %W => set %h to the expression from current position to end of line | + | |
- | # %D => set %D to the date in the format: DD.MM.YY or DD.MM.YYYY | + | |
- | # %F => set %F to the date in the format: YYYY-MM-DD | + | |
- | # %T => set %T to the time in the format: hh:mm:ss | + | |
- | # %d => set %d to the day | + | |
- | # %m => set %m to the month | + | |
- | # %b => set %b to the three character month name | + | |
- | # %y => set %y to the year, two digits | + | |
- | # %Y => set %Y to the year, four digits | + | |
- | # %H => set %H to the hour | + | |
- | # %M => set %M to the minute | + | |
- | # %S => set %S to the seconds | + | |
- | # %0 => set %0 to the expression up to last non white space character | + | |
- | # %.<n>:0 => set %0 to the next <n> characters | + | |
- | # %1 => set %1 to the expression up to last non white space character | + | |
- | # %.<n>:1 => set %1 to the next <n> characters | + | |
- | # ... | + | |
- | # %9 => set %9 to the expression up to last non white space character | + | |
- | # %.<n>:9 => set %9 to the next <n> characters | + | |
# | # | ||
- | # One white space in the <inputformat> will eat as many white spaces as possible. | + | inputformat = %F %T.%s %V |
- | FIXME | + | # ----- filter ----- |
- | + | ||
- | # Die meisten Codes stehen in den ?action und ?write fuer eine Ausgabe zur Verfuegung, | + | |
- | # siehe ACTION FORMAT. | + | |
- | + | ||
- | # ----- ACTION und WRITE FORMAT ----- | + | |
- | # In <?action>, <action?>, <?write> und <write?> koennen Ergebnisse des Parsens der | + | |
- | # Zeilen verwendet werden. Folgende Codes können dafuer verwendet werden: | + | |
- | # alle Codes des Inputfomates ohne %t, %s, %s* und %c | + | |
# | # | ||
- | # %y => Jahr im Format JJ | + | reg =| error|warning |
- | # %Y => Jahr im Format JJJJ | + | |
- | # %b => Monatsname (erste drei Zeichen) | + | |
- | # %d => Tag (01..31) | + | |
- | # %m => Monat (01..12) | + | |
- | # %N => Anzahl gleicher Zeilen bei hist_secs > 0 oder Anzahl bei sum_hist | + | |
- | # %F => Datum im Format: YYYY-MM-DD | + | |
- | # %z => die ganze Zeile | + | |
- | # %p => Dateiname der überwachten Datei | + | |
- | # %P => kompletter Pfad der überwachten Datei | + | |
- | # %0 … %9 => Variablen 0-9 | + | |
- | # ----- IGNORE ----- | + | # ----- output ----- |
- | # | + | # write ULS file-format |
- | # Regulaeren Ausdruck fuer Zeilen definieren, die verworfen werden. | + | write = V;%F %T;%h;Sample;Logfileadapter;Log;"%V";_ |
- | # | + | |
- | # vreg = INFO|MARK | + | |
- | # | + | |
- | # Oder Datei mit regulaeren Ausdruecken angeben | + | |
- | # | + | |
- | # vreg_file = ignore_regexps_list.txt | + | |
- | + | ||
- | # ----- ERROR ----- | + | |
- | # | + | |
- | # Regulaeren Ausdruck und Aktion fuer "Fehler" | + | |
- | + | ||
- | # ereg_all = 1 | + | |
- | # ereg = error | + | |
- | # ereg_file = | + | |
- | # eaction = echo 'Error: %z' | + | |
- | # ewrite = | + | |
- | + | ||
- | # ----- WARN ----- | + | |
- | # | + | |
- | # Regulaeren Ausdruck und Aktion fuer "Warnung" | + | |
- | + | ||
- | # wreg_all = 1 | + | |
- | # wreg = warn | + | |
- | # wreg_file = | + | |
- | # waction = echo 'Warnung: %z' | + | |
- | # wwrite = | + | |
- | + | ||
- | # ----- LOG ----- | + | |
- | # | + | |
- | # Regulaeren Ausdruck und Aktion fuer "Logging" (Info) | + | |
- | + | ||
- | lreg_all = 1 | + | |
- | # lreg = log | + | |
- | # lreg_file = | + | |
- | laction = echo 'Info: %z' | + | |
- | # lwrite = | + | |
</file> | </file> | ||
Line 820: | Line 777: | ||
- wenn keine der obigen Bedingungen erfüllt sind, dann wird die Zeile ignoriert => auf nächste Zeile warten | - wenn keine der obigen Bedingungen erfüllt sind, dann wird die Zeile ignoriert => auf nächste Zeile warten | ||
- | Zu allen direkt eingetragenen regulären Ausdrücken reg?[+] kann auch eine Datei reg_file?[+] angegeben werden, | + | Zu allen direkt eingetragenen regulären Ausdrücken reg[+] kann auch eine Datei reg_file[+] angegeben werden, |
die mehrere Zeilen mit jeweils einem regulären Ausdruck enthalten können. | die mehrere Zeilen mit jeweils einem regulären Ausdruck enthalten können. | ||
- | Die regulären Ausdrücke werden bei der Anwendung von reg_file? logisch ODER verknüpft. | + | Die regulären Ausdrücke werden bei der Anwendung von reg_file logisch ODER verknüpft. |
- | Es wird entweder reg? oder reg_file? verwendet, der letzte Eintrag in der Konfigurationsdatei entscheidet. | + | Es wird entweder reg oder reg_file verwendet, der letzte Eintrag in der Konfigurationsdatei entscheidet. |
Mit dieser (logischen) Unterscheidung können verschiedene Aktionen für verschiedene reguläre Ausdrücke ausgeführt werden. | Mit dieser (logischen) Unterscheidung können verschiedene Aktionen für verschiedene reguläre Ausdrücke ausgeführt werden. |