Welche Programmstandards verwenden lokale [0-7] Syslog-Funktionen?

19

Neben den gemeinsamen Systemeinrichtungen ( mail, news, daemon, cronusw.), syslog bietet eine Reihe von "lokalen" Einrichtungen, die Ziffern 0 bis 7: LOCAL0, LOCAL1, ..., LOCAL7.

Welche sind Programmvorgaben für gängige Anwendungen?

Ich möchte herausfinden, welche Einrichtungen "traditionell" für bekannte Dienste verwendet werden. Ich werde eine Anwendung auf vielen Servern mit unterschiedlicher installierter Software bereitstellen und möchte sehen, ob es eine "kostenlose" Funktion gibt, die ich problemlos für meine eigenen Protokolle verwenden kann.

Als Hinweis stelle ich fest, dass es dafür andere Möglichkeiten gibt als eine Syslog-Einrichtung. Nur neugierig!

Hier sind ein paar (ein Anfang, um meine eigene Frage zu beantworten) und ein paar Dankeschöns an voretaq7:

  • LOCAL0 wird von postgresql verwendet
  • LOCAL2 wird von sudo verwendet
  • LOCAL3 wird von einigen Versionen von SpamAssassin verwendet
  • LOCAL4 wird standardmäßig von slapd verwendet (OpenLDAP-Server)
  • LOCAL5 wird manchmal vom Snort IDS verwendet
  • LOCAL7 wird für Bootmeldungen unter Fedora 12 verwendet
Jonathan Clarke
quelle
Sind nicht alle Protokolle mit dem Namen des Prozesses oder einem benutzerdefinierten Namen, der den Prozess gesendet hat, vorangestellt? Ich arbeite mit Syslogs und kann mich nicht erinnern, dass ich beim Filtern von Protokolleinträgen nach App auf Probleme gestoßen bin.
Kupplung
Kupplung, Sie beziehen sich auf das Syslog 'Tag'. Standardmäßig besteht das Tag unter Linux aus dem Prozessnamen und der ID, z. B. 'httpd [1234]', die die Protokollnachricht generiert haben. Sie können das Tag jedoch über die Syslog-API auf beliebige Werte einstellen. Siehe meine Antwort unten für weitere Einzelheiten.
Ryan B. Lynch

Antworten:

7

Die LOCALnEinrichtungen stehen für jede lokale Verwendung zur Verfügung und können von Standort zu Standort sehr unterschiedlich sein.

Ich garantiere, dass jede der 8 verfügbaren von etwas verwendet wird. Wenn Sie also Konflikte vermeiden möchten, ist es mein bester Rat, alle 7 in separaten Protokollen zu protokollieren und das auszuwählen, das anscheinend von nichts anderem verwendet wird.

Einige, die Sie verpasst haben (Standardeinstellungen des Programms - können lokal geändert werden, überprüfen Sie dies noch einmal):

  • LOCAL0 wird von postgresql verwendet (wenn konfiguriert, um sich bei syslog anzumelden)
  • LOCAL2 wird von sudo verwendet (wenn konfiguriert, um sich bei syslog anzumelden)
  • LOCAL3 wird von einigen Versionen von SpamAssassin verwendet
    • Dies wird häufig vom lokalen Administrator geändert, um sich mailstattdessen anzumelden
  • LOCAL5 wird manchmal vom Snort IDS verwendet
    • Ich weiß nicht, ob dies eine Standardeinstellung oder nur ein Zufall ist, aber ich habe es auf mehreren Snort-Installationen gesehen
voretaq7
quelle
Groß! Genau das suche ich - Programmvorgaben. Weitere sind willkommen! Offensichtlich werden verschiedene Einrichtungen in Gebrauch sein. Ich bin nur auf der Suche nach Anwendungen, die mir im Weg stehen.
Jonathan Clarke
2

Für die Syslog-Funktionen LOCAL0-LOCAL7 gibt es keinen Standard. Sie können sich nicht darauf verlassen, dass sie von irgendetwas verwendet werden. Bestimmte Distributionen oder Organisationen haben möglicherweise ihre eigenen Konventionen, aber das hängt von der Distributions- oder Organisationspolitik ab, nicht von einem allgemeineren Standard.

Haben Sie alternativ in Betracht gezogen, Syslog-Tags zu verwenden? Tags sind frei formulierte Zeichenfolgen, die vor Protokollmeldungen eingefügt werden, um bestimmte Anwendungen oder Protokollkanäle zu identifizieren. Standardmäßig wird das Tag normalerweise aus dem Prozessnamen und der ID (z. B. 'httpd [2839]') gebildet, die die Protokolldaten generiert haben. Das Befehlszeilendienstprogramm 'logger' und die meisten Syslog-APIs unterstützen die Angabe der Tags, die Sie für Ihre Anwendungen verwenden möchten.

Ich persönlich verwende beispielsweise gerne 'http-access' für meine Apache-Webserver-Zugriffsprotokolle, die ich an Syslog sende, indem ich die Protokollausgabe von Apache an den Befehl 'logger -p local7.info -t' http-access 'weitergebe.

Ryan B. Lynch
quelle
Interessant, danke. Ich baue jedoch eine Lösung auf einer vorhandenen Software auf, die so konfiguriert werden kann, dass sie sich über LOCAL7 bei einem von LOCAL0 anmeldet. Meine Frage betrifft wirklich die Standardeinstellungen, die verschiedene Software verwendet.
Jonathan Clarke
Macht Sinn, das habe ich verpasst. Ich möchte jedoch darauf hinweisen, dass es gefährlich ist, sich hier auf nicht standardisiertes Verhalten zu verlassen. Die Entwickler oder Paketierer von OpenLDAP, Fedora usw. können (und manchmal auch) dieses Verhalten von Version zu Version ändern. Es gibt keine Garantie dafür, dass ein Update nicht von den in der Vergangenheit getroffenen Syslog-Einrichtungsoptionen abweicht. Dies ist kein Deal-Breaker, sondern ein potenzielles Problem, auf das Sie achten sollten.
Ryan B. Lynch
2

Die meisten syslog.conf-Dateien werden mit Platzhalter für die Nachrichtendatei (* .info) eingerichtet. Wenn dies nur ein Programm ist und keine ausgewachsene Kuh, sollten Sie sich wahrscheinlich nur in Nachrichten und nicht in einer eigenständigen Datei anmelden.

Wenn Sie sich für die Protokollierung in Ihrer eigenen Datei entscheiden, wird den Installationspaketen Ihrer Software ein Schritt nach der Installation hinzugefügt, der einen entsprechenden Eintrag in der Datei syslog.conf hinzufügt. Dies bedeutet auch, dass Sie, wenn Sie nett sind, einen Postinstall-Schritt hinzufügen würden, der auch eine entsprechende Logrotate-Datei erstellt.

Carpe Noctem
quelle
Guter Tipp zum Verpacken von Syslog und Logrotate. Vielen Dank.
Jonathan Clarke
-3

Ich suchte auch nach einer Konfigurationsdatei wie syslog.conf, um die local0-7-Funktionen auf das Programm zu verweisen, das auf sie schreibt. Es scheint, dass eine solche Konfigurationsdatei nicht existiert. Um herauszufinden, welches Programm in das Protokoll schreibt, müssen Sie die Protokolldatei öffnen und den Programmnamen neben der Spalte neben dem Doppelpunkt suchen, zum Beispiel ... sendmail [22950]: ist für das Programm sendmail. Die Zahl in eckigen Klammern gibt die Portnummer an, die während der Ausführung des Programms verwendet wurde.

Sieger
quelle