• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[jelöööst] Logsurfer / Ubuntu 20.04.2 / ARM / Cortex A72

suwelo

Member
Moin zusammen,
ich habe mal wieder eine Frage..

Bis zu SuSE Linux 13.2 (x86 Hardware) und Ubuntu 16.04.x (x86_64) habe ich Logsurfer verwendet, um bestimmte Ereignisse in Echtzeit aus den System Logs via Mail an mich weiter leiten zu lassen oder in eine *.csv Datei zu übergeben, um selbige Ereignisse über ein Webinterface mit PHP auszulesen.

Logsurfer läuft in Echtzeit, der eine oder mehrere Logs mit REGEX auf bestimmte Ereignisse durchsuchen kann.

Ich möchte Logsurfer mit Raspberry PI Harware nutzen.
Ein Linux/UNIX übliches Archiv habe ich einwandfrei entpacken und mit den gängigen Befehlen auf einem RPI 3b+ (Debian Streach 9) und einem Odroid-C2 (Ubuntu 18.04.x) installieren können. Beide SingleBoard PCs sind mit ARM Prozessoren ausgestattet.
RPI3b+ hat 1GB RAM, Odroid-C2 hat 2GB RAM. Die Prozessor Architektur wäre für RPi3b+ = 32Bit und Odroid-C2 = 64Bit.

Der Versuch mit den SingleBoard PCs führte dazu, dass alle Systeme (Debian Strech 9 und Ubuntu 18.04.x) vollständig lahmgelegt wurden. Nur Strom abschalten konnte die Geräte wieder zum Leben erwecken.

Aus (Strom spar-) Kostengründen möchte ich keine x86 und/oder x86_64 Hardware mehr einsetzen.

Kennt jemand ähnliche Software, die für Ubuntu 20.04.x und ARM Prozessoren geeignet ist und Log Dateien auf bestimmte Ereignisse in Echtzeit durchsuchen kann?

Danke für eure Empfehlungen und Hilfe
 

gehrke

Administrator
Teammitglied
Hhmm - ich fürchte, dass die gewählte Hardware dafür etwas unterdimensioniert ist.
Alternative/aktuellere Software könnte ElasticSearch mit Logstash + Filebeats sein, aber das braucht noch viel mehr Hardware-Ressourcen.

Vielleicht kannst Du auf das WebInterface verzichten und auf Remote-Logging setzen und via tail/grep analysieren?

Leider ist die Projektseite derzeit wohl nicht aufrufbar. Wenn es eine SQL-Datenbank gibt, könntest Du auch schauen, ob Du noch die Indizierung verbessern kannst - das könnte die Situation vielleicht noch erheblich verbessern.

Aber es würde mich wundern.
 
OP
suwelo

suwelo

Member
Hallo,
erst mal danke für Deine Antwort.
Im Nachhinein denke ich, sollte ich doch kurz erwähnen was ich damit anstellen will.

Mein DSL Router sendet bei Zwangstrennung bzw. bei Verbindungsabbruch eine Mail an meinen internen Mailserver mit der aktualisierten IP Adresse. Derzeit kümmert sich ein Cron Job um das Ereignis, das zu einer bestimmten Uhrzeit über 2 Stunden verteilt ein Script startet, die neue IP Adresse ermittelt und bei Änderung bei meinen DynDNS Diensten die neue IP Adresse aktualisiert.
Unglücklicherweise habe ich mehrere "Dyn Dienste" und am Router selbst kann ich nur einen "Dyn Dienst" dazu bewegen sich zu aktualisieren.
Wenn ein Verbindungsabbruch außerhalb der 2 Stunden stattfindet, in der der Cron Job nicht läuft, bleibt das aktualisieren der IP Adresse bei den anderen "Dyn Diensten" aus.
Zu Zeiten wo ein PC noch ein DSL Modem über die Netzwerkkarte emulieren konnte, war das mit dem DynDNS eigenen Script einfach machbar, wobei auch dieses zyklisch immer wieder nachgeschaut hat, ob eine IP Adressänderung eingetreten ist.

Mir fehlt leider eine Idee, wie ich das ohne noch mehr Cron lösen könnte. Deswegen der Logsurfer mit dem sich Scripte auslösen lassen; wenn dieser am internen Mailserver auf das Ereignis abgerichtet ist um die IP Adresse zu aktualisieren.

:???:
 
Sehr verwirrend

Beginnen wir damit:
suwelo schrieb:
Mein DSL Router sendet bei Zwangstrennung bzw. bei Verbindungsabbruch eine Mail ...
Kannst du das am router ändern?
Damit meine ich, kann du eine andere Art der Übermittlung dieser Zustandsänderung konfigurieren oder implementieren?
 
OP
suwelo

suwelo

Member
Hallo,
es handelt sich bei dem Router um eine AVM FritzBox 7560.
Man kann die Benachrichtigung per Mail ein- oder ausschalten. Ist die Funktion angeschaltet, muss eine Mailadresse dazu angeben werden um über die Änderung zu informieren.
Bei mir geht die Mail von der AVM Box direkt an meinen internen Mailserver über SMTP an Dovecot Imap.
Es gibt keine Möglichkeit mit dem Router eine SMS zu versenden.

Die Zwangstrennung vom ISP geschieht normalerweise nach Zufall nach etwa so um die 24H +- online Zeit Stunden.
Man kann der zufälligen Zwangstrennung zuvor kommen, in dem ein Zeitfenster am Router für die Zwangstrennung eingerichtet wird. Es ist eben auch schon vorgekommen, dass die Zwangstrennung um Punkt 6:00 war. Das Script mit einer IP Aktualisierung war dann eine Minute zu früh dran. Deshalb habe ich den Cron Job auf 2 Stunden ausgeweitet anstatt auf nur eine Stunde. Der Cron Job wird ab 5:01, 5:10, 5:20, 5:30, 5:40, 5:50, 5:59 abgearbeitet und ab 6 Uhr nochmal zu den eben genannten Minuten.

Zudem kommt es gelegentlich mal vor, dass der ISP in den Nachtstunden an der Leitung irgendwas treibt so dass es zu einem Verbindungsabbruch kommt.
 
suwelo schrieb:
Hallo,
es handelt sich bei dem Router um eine AVM FritzBox 7560.
Man kann die Benachrichtigung per Mail ein- oder ausschalten. Ist die Funktion angeschaltet, muss eine Mailadresse dazu angeben werden um über die Änderung zu informieren.
D.h. du kannst die Zustandsmeldung vom router nach server nicht auf ein anderes Protokoll legen.
Z.B. ssh.
Es geht nur smtp oder nichts?
Korrekt?
 
OP
suwelo

suwelo

Member
Hallo,
ja, es geht nur SMTP.
Ich kann auch nur einen SMTP Server mit Port angeben.

Ich bekomme von der AVM Fritzbox einen ganzen Wust an Benachrichtigungen wie. z.b. eingegangene Anrufe, AB Nachrichten als *.wav an den Mailer, tägliche, wöchentliche und monatliche Datenverbrauchs Übersiicht. Änderungen im WLAN, wenns dann mal an ist oder auch Benachrichtigungen über neue Portfreigaben, die an der Fritzbox ins LAN geöffnet wurden.

Mal so als Übersicht.
 
suwelo schrieb:
Hallo,
ja, es geht nur SMTP.
Ich kann auch nur einen SMTP Server mit Port angeben.
ok
smtp bzw. mail ist in solchen Zusammenhängen immer ein Problem.
mails sind dead ends, Sackgassen, deshalb auch dein Aufwand.
Eine Meldung dieser Art sollte über RPC vom router abgesetzt werden.
Geht aber nicht, wie ich nun weiß.

Stell dir vor, am server würde bei jeder dieser Meldung (in diesem Fall mail) ein event ausgelöst werden.
D.h. der server könnte sofort darauf reagieren.
Das würde jede Art von parsing überflüssig machen, auch cron könnte entfallen.
Wäre das ein Lösung?
 
OP
suwelo

suwelo

Member
Hallo,
deshalb habe ich früher Logsurfer noch zu ISDN Zeiten, und als es noch möglich war die Netzwerkkarte als DSL Modem zu emulieren, verwendet.

Witzig an den Architekturen ist auch, die Maschinen die ich AnnoDuZuMal eingesetzt habe, waren Intel und AMD Single Core Prozessoren mit 1/3 GHZ Leistung der RPI ARM Prozessoren heute. Meine PCs hatten damals grade mal 500MB RAM. Die jetzigen RPI 4b+ habe ich mit 4GB RAM geholt.

Da Logsurfer die ARM Architektur komplett lahm legt, habe ich ehrlich gesagt keine Ahnung, wie ich das sonst lösen könnte.
Wegen den Zustands Mails vom AVM auf den internen SMTP, habe ich auch für das Event "Neue IP Adresse" eine separate Mailadresse erzeugt.
Logsurfer hätte nur dann darauf reagiert, wenn dieser spezielle Mailempfänger in den Mail Logs vorgekommen wäre.

Nur leider ist das Problem der Logsurfer und meine ARM Architektur :D

Stell dir vor, am server würde bei jeder dieser Meldung (in diesem Fall mail) ein event ausgelöst werden.
D.h. der server könnte sofort darauf reagieren.
Das würde jede Art von parsing überflüssig machen, auch cron könnte entfallen.
Wäre das ein Lösung?

Die Lösung hört sich elegant an, ich habe nur keine Idee wie das lösbar wäre.
 
suwelo schrieb:
.. ich habe nur keine Idee wie das lösbar wäre.
Ich auch noch nicht
Mit "Meldung" meine ich NUR die Mitteilung "IP geändert"
1. kann diese Meldung eine eigene @mail Adresse haben?
2. unterscheidet sich diese Meldung von anderen im Betreff?
3. kann diese Meldung auf einen zu bestimmenden smtp server oder definiertem smtp:port gesendet werden?
4. smtp server: postfix?
 
OP
suwelo

suwelo

Member
Hallo,

1. kann diese Meldung eine eigene @mail Adresse haben?

Code:
internet-master@example.com


Alle anderen Mitteilungen gehen an
Code:
user@example.com


2. unterscheidet sich diese Meldung von anderen im Betreff?

Betreff Beispiele:
Code:
Internet-Adresse: ip.v4.addr.ess, [ip:v6:prae:fix::2]
FRITZ!Box-Info: Nutzungs- und Verbindungsdaten vom 01.03.2021
Anruf von 01234567890
Nachricht von 01234567890
Änderungsnotiz - Portfreigaben


3. kann diese Meldung auf einen zu bestimmenden smtp server oder definiertem smtp:port gesendet werden?

Code:
Push Service
SMTP-Server: [FREI.Einstellbar.MUSS.Erreichbar.Sein] Port: [FREI_Wählbar]

Der SMTP kann sich im Interrnet befinden, dazu muss UserName und Passwort übergeben werden oder im LAN mit gleicher Authentifizierungsmethode .. UserName und Passwort.


Code:
postconf mail_version
mail_version = 3.4.13

Postfix SMTP
 

gehrke

Administrator
Teammitglied
@suwelo: Bitte die Zitat-Funktionalität des Forums zwecks besserer Lesbarkeit benutzen.
TNX
 
Das sind mehr Unterscheidungsmöglichkeiten als wir benötigen.
Das ist gut

Mein Vorschlag wäre, wir nehmen die @mail Adresse als Unterscheidungsmerkmal.

Beispiel:
Wenn eine Adresse - und nur diese - mit der URI "ipchange@example.com" auf deinem smtp server einlangt,
startet dieser ein script.

Oder:
Wenn das Betreff "xyz{regex}" lautet, wird am server ein event ausgelöst, der dann ein script startet.

Oder:
Wenn ein connect nicht auf port smtp(25), sondern auf auf z.B. 1022 erfolgt, startet postfix ein script.

usw.

Wie wollen wir vorgehen?
 
OP
suwelo

suwelo

Member
Hallo,

Das wird denke ich die einfachere Lösung sein, da keine Mails verworfen werden und Postfix die Mails so oder so annehmen muss. Wie ich mit Postfix und REGEX ausdrücken umgehen sollte müsste ich noch in Erfahrung bringen.

Wenn eine Adresse - und nur diese - mit der URI "ipchange@example.com" auf deinem smtp server einlangt,
startet dieser ein script.

Wenn das Betreff "xyz{regex}" lautet, wird am server ein event ausgelöst, der dann ein script startet.


Gibt es eine entweder / oder Lösung?

Wenn ein connect nicht auf port smtp(25), sondern auf auf z.B. 1022 erfolgt, startet postfix ein script.


Ich kann in der AVM Box nur einen "empfangenden SMTP" mit "einem" Port eintragen.
Alle Mails laufen in den (selbst) eingestellten Mailserver mit (selbst eingestelltem) Port ein, ansonsten werden alle anderen Mails unzustellbar (So glaube ich)?
Auch wenn die anderen unwichtigeren Mails der AVM Box als Datenmüll durchgehen, bin ich dennoch mal mehr, mal weniger daran interessiert, was da drin steht. :D

Um das zu realisieren müsste ein anderer Dienst die eingehenden Mails auf einem anderen Port nach Betreff "vor sortieren" oder ein zweiter SMTP auf einem anderen Port lauschen, den nur die AVM Box kennt?
Dabei denke ich an Spamassasin oder ProcMail?

Was passiert mit "Logwatch" oder anderen Status Mails, die von anderen "Client/Servern" im LAN am Mailer ankommen?

Gut. Bei den anderen Postfix SMTP kann man ja in der

Code:
/etc/postfix/main.cf

relayhost = [mail.example.com]:25

Eingestellt lassen um andere Status Mails an den Mailserver weiter zu leiten.
 
suwelo schrieb:
Das wird denke ich die einfachere Lösung sein, da keine Mails verworfen werden..
Wenn eine Adresse - und nur diese - mit der URI "ipchange@example.com" auf deinem smtp server einlangt,
startet dieser ein script.

Wenn das Betreff "xyz{regex}" lautet, wird am server ein event ausgelöst, der dann ein script startet.
ok

Verworfen wird in keinem Fall
regex - das macht dein script

Beispiel:
postfix prüft: sender == "router@example.com" ? -> dann geht mail an dovecot UND an dein script
Dein script schaut sich den Betreff an -> IP Änderung? -> Mach den job oder sonst verwerfen

Konfiguration postfix: master.cf, z.B
ipchange unix - n n - - pipe flags=F user=suwelo argv=/usr/local/sbin/script.sh ${sender} ${recipient}

und natürlich in postfix für Adresse router@example.com ein Bcc: setzen, also Bcc zu service ipchange
Fertig -> kein cron, kein parsen, kein Logsurfer
 
OP
suwelo

suwelo

Member
Hallo,

Beispiel:
postfix prüft: sender == "router@example.com" ? -> dann geht mail an dovecot UND an dein script
Dein script schaut sich den Betreff an -> IP Änderung? -> Mach den job oder sonst verwerfen

Ich müsste doch nach Empfänger prüfen

Code:
internet-master@example.com

da selbiger unique ist.


Der (Ab-) Sender aus der AVM Box ist immer der gleiche

Code:
suwelo@example.com


Im Internet habe ich Lösungen im Zusammenhang mit USV gefunden, die über den Umweg ProcMail gehen. Wenn es geht will ich ProcMail vermeiden.

Die Idee von Dir ist gut und will mal damit herum basteln.
 
OP
suwelo

suwelo

Member
Hallo,
ich habe nochmal eine Verständnisfrage dazu

postfix prüft: sender == "router@example.com" ? -> dann geht mail an dovecot UND an dein script
Dein script schaut sich den Betreff an -> IP Änderung? -> Mach den job oder sonst verwerfen

Postfix kann Sender und Empfänger prüfen?
Der Empfänger

Code:
internet-master@example com

Ist genauso "unique" wie das "Subject" der Mail.
Die Empfänger kann ich auch frei mit Mailadresse adressieren.
Alle anderen Benachrichtigungen von

Code:
router@example.com

gehen an

Code:
suwelo@example.com

Nach Prüfung, des Sender && Empfänger ist mir das Subject und der Content der Mail völlig egal, weil ich bereits ein Bash Script habe das sich um die Ermittlung und Aktualisierung der neuen IP Adresse kümmert.

Möglicherweise muss ich das Script für die Adress Akualisierung in den Filter einbauen oder es kann separat aus dem Filter heraus aufgerufen werden.

Den Filter will ich mit Python schreiben.
 
Oben