zentrales Logging und Loganalyse - aktuell erst einmal für postfix

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Benutzeravatar
heisenberg
Beiträge: 2234
Registriert: 04.06.2015 01:17:27

zentrales Logging und Loganalyse - aktuell erst einmal für postfix

Beitrag von heisenberg » 21.06.2022 13:31:12

Ich möchte zentral diverse Logs erfassen und dieses dann bei Bedarf analysieren.

Ein Anwendungsfall ist hier z. B. Postfix:
  • Mailsuche nach Absender/Empfänger/Datum/...
  • Suche nach Mailproblemen: Häufigkeit gewisser Textpattern (Mailserverblocks)
Es gibt hier ja schon diverse Diskussionen zum Thema. Insofern kenne ich da einige der bekannten Vertreter zumindest vom Namen her(Rsyslog, Graylog, ELK, Fluentd, Octopussy, Splunk, Loggly...).

Ich habe schon ein paar VMs, würde aber schon genauer abwägen, was ich da reinlaufen lassen möchte. Vielleicht Mail-Logs von 10 Mailservern. Und dann von der Menge max. noch das ganze Mal Faktor 5 für andere Logs.

Vor solchen Java-Monstern wie Graylog (mit Elasticsearch) schrecke ich eher etwas zurück. Die Hardwareanforderungen sind da schon enorm.

Meine Motivation ist auch das der grep-Ansatz mit eigenen Scripten schon nervig ist, weil die Suche langsam ist und die Filterung immer wieder erneut bei der Anfrage stattfinden muss. Da hätte ich gerne aufbereitete Daten, die ich schneller durchsuchen kann. Natürlich hätte ich da am liebsten eine OSS-Lösung. Auch würde ich gerne die Robustheit eines Parsing- und Analyseframeworks benutzen. Schön ist es natürlich auch, wenn für Standardsachen da schon Parser da sind, was mir zum einen die Arbeit des selbstschreibens spart und die zum anderen vermutlich einen höhere Qualität haben, als das, was ich selbst zusammengescriptet bekomme.

Ansonsten ist das ein Thema, über das ich auch gerne etwas lernen will, so dass ich es in anderen Umgebungen anwenden kann. D. h. ich will da in einem kleinen Maßstab mit einer Software spielen, die schon auch was taugt.

Octopussy wäre ein Ansatz der etwas leichtgewichtiger ist. Allerdings scheint die Software seit 5 Jahren nicht mehr weiterentwickelt zu werden und so wirklich professionell scheint das ja auch nicht zu sein.

* Habt Ihr da Gedanken dazu?
* Habt Ihr solche Lösungen im Einsatz?
* Was sind da Eure Server-Dimensionierungen dafür?

---

Nachtrag:

Am Beispiel der Anwendung Protokollanalyse Postfix sehe ich dann ja schon, dass ein einfaches zeilenweises einlesen der Logdaten recht nutzlos ist. Da gehören dann ja mehrere Zeilen zusammen. Diese Zeilen bilden dann ein "Event", was dann alle Details enthält, die man da in unterschiedlichen Fällen wissen möchte und nach denen ich suchen können will. Und diese Zeilen sind bei einem sehr beschäftigten Ziel verzahnt ins Logfile geschrieben und werden anhand von Verknüpfungsmerkmalen einander zugeordnet.

Code: Alles auswählen

Jun 21 11:21:01 mailout01 postfix/smtpd[272174]: 2EC40618D3: client=mail.happydomain.de[0.0.0.214]
Jun 21 11:21:01 mailout01 postfix/cleanup[272177]: 2EC40618D3: message-id=<2v12ex3wkpyw8vzaqn4fJHw-ZBYRMax1o2kNngxRQ612f66265e060f44e4a194df@hurz.com>
Jun 21 11:21:01 mailout01 postfix/qmgr[260661]: 2EC40618D3: from=<blablub@hurz.com>, size=178242, nrcpt=1 (queue active)
Jun 21 11:21:01 mailout01 postfix/smtp[272178]: 2EC40618D3: to=<hurz@gmail.com>, relay=gmail-smtp-in.l.google.com[173.194.76.27]:25, delay=0.62, delays=0.02/0.02/0.16/0.42, dsn=2.0.0, status=sent (250 2.0.0 OK  1655810461 y8-20020a056000168800b0021b994aa715si1703191wrd.618 - gsmtp)
Jun 21 11:21:01 mailout01 postfix/qmgr[260661]: 2EC40618D3: removed
Die wichtigen Metadaten bei dieser Mailsendeprozess sind dann z. B.:
  • einliefernder Server
  • Absender
  • Empfänger
  • Relay-Host
  • Mailgrösse
  • relay-status-Nachricht
  • delay-Wert des Relays
  • Start- und Endedatum des Vorgangs
Zuletzt geändert von heisenberg am 22.06.2022 13:13:24, insgesamt 1-mal geändert.

Benutzeravatar
heisenberg
Beiträge: 2234
Registriert: 04.06.2015 01:17:27

Re: zentrales Logging und Loganalyse

Beitrag von heisenberg » 21.06.2022 14:34:36

Was das Postfix-Problem angeht, brauche ich da wohl zumindest mal einen Vor-Parser, der mir dieses Event selbst zusammenstellt und dann ins Logging als Eingabedaten schiebt.

Es gibt sogar etwas auf github. Das bekomme ich aber bisher nicht kompiliert:
https://github.com/youyo/postfix-log-parser

Ok. Es wird auch etwas vorkompiliertes geliefert. Das läuft aber so auch nicht.

Es gibt da noch etwas in Perl:
https://metacpan.org/pod/Mail::Log::Parse

Benutzeravatar
heisenberg
Beiträge: 2234
Registriert: 04.06.2015 01:17:27

Re: zentrales Logging und Loganalyse

Beitrag von heisenberg » 21.06.2022 18:22:28

Das Perl-Modul funktioniert aber wohl auch nicht ootb.

Das Perl-Programm:

Code: Alles auswählen

#!/usr/bin/perl 

use Mail::Log::Parse::Postfix;
use Data::Printer;

$object = Mail::Log::Parse::Postfix->new({  log_file => '/var/log/mail.log'  });
while ( %line_info = %{$object->next()}) {
        if(defined($line_info{"from"})) {
                p %line_info;
        }
}
Die Rohdaten:

Code: Alles auswählen

Jun 20 07:54:49 mailout99 postfix/smtpd[139218]: 7BEAF618CF: client=host_A[0.0.0.214]
Jun 20 07:54:49 mailout99 postfix/cleanup[139221]: 7BEAF618CF: message-id=<000001d8847b$03faedd0$0bf0c970$@blablub.de>
Jun 20 07:54:49 mailout99 postfix/qmgr[14681]: 7BEAF618CF: from=<hurz@blablub.de>, size=20151, nrcpt=1 (queue active)
Jun 20 07:54:51 mailout99 postfix/smtp[139222]: 7BEAF618CF: to=<ooops@argh.de>, relay=mail.argh.de[0.0.0.5]:25, delay=1.6, delays=0.01/0.02/0.57/1, dsn=2.0.0, status=sent (250 OK id=1o3CFG-0004q6-0s)
Jun 20 07:54:51 mailout99 postfix/qmgr[14681]: 7BEAF618CF: removed
Die Ausgabe vom Perl-Programm:

Code: Alles auswählen

{
    connect                      "",
    delay                        undef,
    delay_before_queue           undef,
    delay_connect_setup          undef,
    delay_in_queue               undef,
    delay_message_transmission   undef,
    disconnect                   "",
    from                         "<hurz@blablub.de>",
    host                         "mailout99",
    id                           "7BEAF618CF" (dualvar: 7),
    msgid                        undef,
    pid                          14681,
    previous_host                undef,
    previous_host_ip             undef,
    previous_host_name           undef,
    program                      "postfix/qmgr",
    relay                        undef,
    size                         20151,
    status                       undef,
    text                         "from=<hurz@blablub.de>, size=20151, nrcpt=1 (queue active)",
    timestamp                    1655711689,
    to                           []
}
Nachtrag:

Funktioniert wohl doch. Aber der Parser fasst die Zeilen nicht zusammen, sondern erstellt pro Zeile ein Objekt. Das Zusammenführen muss ich dann selbst erledigen.

Benutzeravatar
heisenberg
Beiträge: 2234
Registriert: 04.06.2015 01:17:27

Re: zentrales Logging und Loganalyse - aktuell erst einmal für postfix

Beitrag von heisenberg » 22.06.2022 13:16:25

Ich überlege mir aktuell erst einmal, welche Fragen ich mir mit dem zentralen Mail-Logging beantworten möchte:

Bisher sind es diese:
  • Wie viele/Welche Mails (optional mit Einschränkung: von Absender XYZ bzw. Absenderdomain) an Provider ABC sind abgelehnt/ausgeliefert worden?
  • Welche Mails von Absender XYZ wurden in den letzten Tagen/Wochen geschickt worden, mit welchen Details?
  • Wie sind die Detaildaten zum Versand von Absender XYZ an Empfänger ABC im Zeitraum X?
  • Detailsuche nach Mail mit MSGID bzw. Queue-ID: ABC
  • Wieviele Mails sind wegen SPF abgelehnt worden?
  • Wieviele Mails sind wegen Spam abgelehnt worden?
  • Wieviele Mails haben lange Durchlaufzeiten?
  • Bei wie vielen Mails ist der Versand fehlgeschlagen?
  • Wie viele Mails werden von wem geschickt?
  • Was sind die Ablehnungsgründe und deren Häufung für gescheiterte Mailversendungen pro Server?
  • Wie ist der serverübergreifende Transportweg einzelner Mail durch die eigene Mailinfrastruktur?

Antworten