GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verhindern, dass Syslogs unter Journalctl protokolliert werden?

Ich habe ein einfaches Python-Snippet, das von einem systemd verwaltet wird Dienst, der sich beim rsysogd anmeldet Daemon, in dem ich eine Konfigurationsdatei definiert habe, um sie mit einem von mir definierten Format auf einen Syslog-Server zu legen. Das funktioniert soweit gut.

Im folgenden Code übergebe ich das Argument als Zeichenfolge, mit der ich mich beim Server anmelden möchte. Ich verwende diesen Code unten als Modul und verwende ihn nur für die Protokollierung, das eigentliche Skript verwendet dies für Protokollierungszwecke.

#!/usr/bin/env python

import syslog
import sys

syslog.openlog(facility=syslog.LOG_LOCAL0)
syslog.syslog(syslog.LOG_INFO, sys.argv[1])

Da die Anwendung von systemd verwaltet wird es stellt eine Kopie des Syslogs zur Verfügung, wenn es von journalctl -xe aus gesehen wird und den journalctl -u <my-service> was ich nicht möchte, weil ich andere wichtige Informationen habe, die ich in Journalprotokollen protokolliere.

Die Dienstdefinition ist

[Unit]
Description=Computes device foobar availability status

[Service]
Type=simple

EnvironmentFile=/etc/sysconfig/db_EndPoint
ExecStart=/usr/bin/python /opt/foobar/foobar.py
WatchdogSec=60
RestartSec=10
Restart=always
LimitNOFILE=4096

[Install]
WantedBy=default.target

und in der /etc/systemd/journald.conf Datei habe ich keine aktiviert der verfügbaren Optionen. Ich habe diese Dokumentation zu journald.conf nachgeschlagen, um ForwardToSyslog=no zu verwenden und einen Neustart von journald durchgeführt Dienst als

systemctl restart systemd-journald

und auch meine Serviceeinheit neu gestartet, aber ich sehe die Protokolle zum Syslog-Server und auch zu den Journalprotokollen. Welche Option übersehe ich hier?

Akzeptierte Antwort:

Ich habe ein einfaches Python-Snippet, das von einem systemd-Dienst verwaltet wird, der sich beim rsys[l]ogd-Daemon […]

anmeldet

Nein hast du nicht.

Was Sie haben, ist ein Dienst, der sich im systemd-Journal protokolliert. Der Server lauscht auf dem bekannten /dev/log Socket, mit dem Ihr Python-Programm kommuniziert, ist nicht rsyslogd . Es ist systemd-journald . rsyslogd wird an der anderen Seite angebracht von systemd-journald , und Ihr Python-Programm spricht nicht damit.

Daraus sollte ersichtlich sein, dass der einzige Weg nichts über systemd-journald zu senden ist ist, etwas anderes zu verwenden Route zu rsyslogd , nicht der bekannte Socket, den Ihre Python-Bibliothek standardmäßig verwendet. Das hängt alles davon ab, wie Sie rsyslogd konfiguriert haben .

  • Möglicherweise haben Sie mit dem imudp einen UDP-Server eingeschaltet Modul, in diesem Fall könnten Sie Ihr Python-Programm anweisen, dieses zu verwenden, indem Sie eine andere Python-Bibliothek verwenden, die mit einem solchen UDP-Server kommuniziert. (Die Python-Syslog-Bibliothek ist fest verdrahtet, um den bekannten lokalen Socket zu verwenden.)
  • Oder (und besser, da Sie vorsichtig sein müssen, keinen UDP-Dienst für die Welt außerhalb Ihres Rechners zu öffnen) Sie hätten rsyslogd angeben können ein zweites, nicht sehr bekanntes, AF_LOCAL Socket zum Abhören, indem Sie dies im imuxsock konfigurieren Modulkonfiguration. Auch hier müssen Sie Ihrem Python-Programm mitteilen, dass es das verwenden soll, und eine andere Python-Bibliothek verwenden.
Verwandte:Wie kann ich verhindern, dass Safari mich auf jeder einzelnen Seite fragt, ob ich Plugins zulassen möchte?

Was genau Sie in Ihrem Python-Programm tun, würde den Rahmen dieser Antwort sprengen.

Weiterführende Literatur

  • https://unix.stackexchange.com/a/294206/5132

Linux
  1. Extrahieren von Text aus MS-Word-Dateien in Python

  2. So verhindern Sie, dass ein Hintergrundprozess nach dem Schließen des SSH-Clients in Linux gestoppt wird

  3. Importieren des Python-Moduls aus Bash

  4. Python deinstallieren, das aus der Quelle erstellt wurde?

  5. Ausführen eines Python-Skripts von PHP

Installieren Sie Python-Pakete von GitHub unter Linux

Was ist ein DDoS und wie verhindern wir, dass unser Unternehmen angegriffen wird?

So stellen Sie von Linux aus eine Verbindung zu SQL Server her

Kann Python erkennen, unter welchem ​​Betriebssystem es läuft?

Wie kann man verhindern, zu SWAP zu gehen?

Wie kann ich verhindern, dass Tintenfisch entdeckt wird?