GNU/Linux >> Linux Esercitazione >  >> Linux

Impedire ai Syslog di essere registrati in Journalctl?

Ho un semplice frammento di Python gestito da un systemd servizio che accede a rsysogd demone in cui ho definito un file di configurazione per inserirlo in un server syslog con un formato che ho definito. Finora funziona bene.

Nel codice seguente, sto passando l'argomento come la stringa che voglio accedere al server. Sto usando questo codice qui sotto come modulo e lo sto usando solo per la registrazione, lo script effettivo lo usa per scopi di registrazione.

#!/usr/bin/env python

import syslog
import sys

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

Poiché l'applicazione è gestita da systemd sta rendendo disponibile una copia del syslog visto da journalctl -xe e il journalctl -u <my-service> cosa che non desidero che accada perché ho altre informazioni critiche che sto registrando nei registri del diario.

La definizione del servizio è

[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

e nel /etc/systemd/journald.conf file, non ho abilitato nessuno delle opzioni disponibili. Ho cercato questa documentazione journald.conf per usare ForwardToSyslog=no e ha riavviato journald servizio come

systemctl restart systemd-journald

e ho anche riavviato la mia unità di servizio, ma vedo i log out sul server syslog e anche ai registri del diario. Quale opzione mi manca qui?

Risposta accettata:

Ho un semplice frammento di codice Python gestito da un servizio systemd che si collega al demone rsys[l]ogd […]

No, non l'hai fatto.

Quello che hai è un servizio che si registra nel diario di systemd. Il server in ascolto sul noto /dev/log il socket con cui sta parlando il tuo programma Python non è rsyslogd . È systemd-journald . rsyslogd è attaccato all'altro lato di systemd-journald , e il tuo programma Python non sta parlando con esso.

Da questo, dovrebbe essere evidente che l'unico modo per non inviare materiale tramite systemd-journald è usare un altro altro instradare a rsyslogd , non il noto socket che la tua libreria Python usa per impostazione predefinita. Tutto dipende da come hai configurato rsyslogd .

  • È possibile che tu abbia attivato un server UDP con imudp modulo, nel qual caso potresti dire al tuo programma Python di usarlo usando una libreria Python diversa che parla a un tale server UDP. (La libreria syslog di Python è cablata per utilizzare il noto socket locale.)
  • Oppure (e meglio, dato che devi stare attento a non aprire un servizio UDP al mondo fuori dalla tua macchina) avresti potuto dare rsyslogd un secondo, non molto noto, AF_LOCAL socket da ascoltare configurandolo in imuxsock configurazione del modulo. Ancora una volta, dovrai dire al tuo programma Python di usarlo e utilizzare una libreria Python diversa.
Correlati:come impedire a Safari di chiedermi su ogni singolo sito se voglio consentire i plug-in?

Quello che fai esattamente nel tuo programma Python va oltre lo scopo di questa risposta.

Ulteriori letture

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

Linux
  1. estrazione di testo da file MS word in python

  2. Come impedire l'arresto di un processo in background dopo la chiusura del client SSH in Linux

  3. Importazione del modulo Python da Bash

  4. Disinstallare Python creato dal sorgente?

  5. Python può rilevare su quale sistema operativo è in esecuzione?

Installa pacchetti Python da GitHub su Linux

Che cos'è un DDoS e come possiamo impedire che la nostra attività venga attaccata?

Come connettersi a SQL Server da Linux

CentOS / RHEL:come impedire che i repository disabilitati vengano scaricati nella cache yum

Come evitare di andare in SWAP?

Come posso impedire che i calamari vengano rilevati?