GNU/Linux >> Tutoriales Linux >  >> Linux

¿Evitar que los Syslogs se registren en Journalctl?

Tengo un fragmento de Python simple administrado por un systemd servicio que inicia sesión en rsysogd daemon donde he definido un archivo de configuración para ponerlo en un servidor syslog con un formato que he definido. Esto está funcionando bien hasta ahora.

En el siguiente código, paso el argumento como la cadena que quiero iniciar sesión en el servidor. Estoy usando este código a continuación como un módulo y lo uso solo para iniciar sesión, el script real lo usa para fines de registro.

#!/usr/bin/env python

import syslog
import sys

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

Dado que la aplicación es administrada por systemd está haciendo una copia del syslog disponible cuando se ve desde el journalctl -xe y journalctl -u <my-service> lo cual no deseo que suceda porque tengo otra información crítica que estoy ingresando en los registros del diario.

La definición del servicio es

[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

y en el /etc/systemd/journald.conf archivo, no he habilitado ninguna de las opciones disponibles. Busqué esta documentación de journald.conf para usar ForwardToSyslog=no e hice un reinicio de journald servicio como

systemctl restart systemd-journald

y también reinicié mi unidad de servicio, pero veo que se cierra la sesión en el servidor syslog y también a los registros diarios. ¿Qué opción me falta aquí?

Respuesta aceptada:

Tengo un fragmento de Python simple administrado por un servicio systemd que se registra en el demonio rsys[l]ogd […]

No, no lo has hecho.

Lo que tiene es un servicio que se registra en el diario systemd. El servidor escuchando en el conocido /dev/log el socket con el que está hablando su programa Python no es rsyslogd . Es systemd-journald . rsyslogd está unido al otro lado de systemd-journald , y su programa Python no está hablando con él.

A partir de esto, debería ser evidente que la única forma de no enviar cosas a través de systemd-journald es usar alguna otra ruta a rsyslogd , no el socket bien conocido que su biblioteca de Python usa por defecto. Todo depende de cómo haya configurado rsyslogd .

  • Es posible que haya activado un servidor UDP con el imudp módulo, en cuyo caso podría decirle a su programa de Python que lo use usando una biblioteca de Python diferente que hable con dicho servidor UDP. (La biblioteca syslog de Python está cableada para usar el conocido socket local).
  • O (y mejor, dado que debe tener cuidado de no abrir un servicio UDP al mundo fuera de su máquina) podría haber dado rsyslogd un segundo, no muy conocido, AF_LOCAL socket para escuchar configurando esto en el imuxsock configuración del módulo. Nuevamente, tendrá que decirle a su programa de Python que use eso y use una biblioteca de Python diferente.
Relacionado:¿Cómo evitar que Safari me pregunte en cada sitio si quiero permitir complementos?

Lo que hace exactamente en su programa Python está más allá del alcance de esta respuesta.

Lecturas adicionales

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

Linux
  1. CentOS / RHEL:cómo evitar que los repositorios deshabilitados se descarguen en el caché de yum

  2. ¿Puede Python detectar con qué sistema operativo se está ejecutando?

  3. Ejecutar un script de Python desde PHP

  4. ¿Cómo evitar ir a SWAP?

  5. Cómo evitar que un proceso escriba archivos

Instalar paquetes de Python desde GitHub en Linux

¿Qué es un DDoS y cómo evitamos que nuestro negocio sea atacado?

Cómo conectarse a SQL Server desde Linux

Importación del módulo Python desde Bash

¿Desinstalar python construido desde la fuente?

Actualice Python de 2.6 a 2.7 en Centos 6.5