GNU/Linux >> Znalost Linux >  >> Linux

Zabránit přihlášení syslogů pod Journalctl?

Mám jednoduchý úryvek Pythonu spravovaný systemd služba, která se přihlásí do rsysogd démon, kde jsem definoval konfigurační soubor, který jej vložím na server syslog ve formátu, který jsem definoval. To zatím funguje dobře.

V níže uvedeném kódu předávám argument jako řetězec, který se chci přihlásit na server. Tento kód níže používám jako modul a používám jej pouze pro protokolování, skutečný skript jej používá pro účely protokolování.

#!/usr/bin/env python

import syslog
import sys

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

Protože aplikaci spravuje systemd zpřístupňuje kopii syslogu při pohledu z journalctl -xe a journalctl -u <my-service> což si nepřeji, aby se stalo, protože mám jiné důležité informace, které zapisuji do deníků.

Definice služby je

[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

a v /etc/systemd/journald.conf soubor, nepovolil jsem žádné z možností, které budou k dispozici. Vyhledal jsem tuto dokumentaci journald.conf, abych použil ForwardToSyslog=no a provedl restart journald službu jako

systemctl restart systemd-journald

a také restartoval svou servisní jednotku, ale vidím odhlášení ze serveru syslog a také do deníků. Jaká možnost mi zde chybí?

Přijatá odpověď:

Mám jednoduchý úryvek Pythonu spravovaný službou systemd, která se přihlásí k démonu rsys[l]ogd […]

Ne, nemáte.

To, co máte, je služba, která se přihlásí do deníku systemd. Server poslouchá na dobře známém /dev/log socket, se kterým váš Python program mluví, není rsyslogd . Je to systemd-journald . rsyslogd je připojen na druhou stranu z systemd-journald a váš program Python s ním nekomunikuje.

Z toho by mělo být zřejmé, že jediný způsob, jak neposílat věci přes systemd-journald je použít nějaké jiné cestu do rsyslogd , ne dobře známý socket, který vaše knihovna Python standardně používá. To vše závisí na tom, jak jste nakonfigurovali rsyslogd .

  • Je možné, že jste zapnuli UDP server pomocí imudp V takovém případě můžete svému programu v Pythonu říci, aby to použil, pomocí jiné knihovny Pythonu, která mluví s takovým UDP serverem. (Knihovna syslog Pythonu je pevně připojena k použití známého místního soketu.)
  • Nebo (a lépe, vzhledem k tomu, že si musíte dávat pozor na to, abyste neotevírali službu UDP světu mimo váš počítač) jste mohli zadat rsyslogd druhý, ne příliš známý, AF_LOCAL socket k poslechu tak, že to nakonfigurujete v imuxsock konfiguraci modulu. Opět budete muset svému programu v Pythonu sdělit, aby to použil a použil jinou knihovnu Pythonu.
Související:Jak zabránit tomu, aby se mě Safari na každém jednotlivém webu zeptalo, zda chci povolit pluginy?

Co přesně děláte ve svém programu Python, je nad rámec této odpovědi.

Další čtení

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

Linux
  1. CentOS / RHEL :Jak zabránit stahování zakázaných repozitářů do mezipaměti yum

  2. Dokáže python zjistit, pod kterým OS běží?

  3. Jak zabránit přechodu na SWAP?

  1. Journalctl:Jak zabránit zkrácení textu v terminálu?

  2. Zabránit spuštění Tmux na Ssh?

  3. Jak mohu zabránit odhalení chobotnice?

  1. Potřebujete zabránit instalaci balíčku?

  2. Jak aktualizovat Python z 3.4.3 na 3.5?

  3. extrahování textu ze souborů MS Word v pythonu