Siento que he pasado por alto lo obvio, pero no puedo entender cómo obtener mi servidor Arch Linux, que usa systemd
, para recibir y registrar syslog
mensajes desde un sistema remoto.
Tengo un módem DSL Cisco 678 y un WAP DD-WRT, y ambos se pueden configurar para enviar mensajes en formato syslog a otra máquina. Me gustaría que esa máquina sea mi servidor Arch Linux.
He buscado en Google, y todo lo que encuentro es que "systemd reemplaza syslog", o que ya no necesito ejecutar syslog
o algo igualmente irrelevante para mi pregunta.
ACTUALIZAR
He preguntado en los foros de Arch y no obtuve respuestas relevantes. He instalado syslog-ng solo para escuchar en el puerto UDP 514. syslog-ng escribe mensajes de mi Cisco 678 y tengo un DD-WRT WAP. Desafortunadamente, los mensajes no terminan en el diario de systemd, sino en archivos planos. Por lo tanto, no hay una solución exacta, sino una solución alternativa. Prefiero tener los mensajes de syslog en el diario, no en archivos planos.
fuente
Respuestas:
Puede escribir el servidor syslog de un pobre con bastante facilidad con socat . Solo necesita una unidad de servicio como esta:
Enviará ciegamente todo lo recibido en el puerto del servicio syslog al diario systemd. Guarde lo anterior como, digamos,
/etc/systemd/system/syslog.service
y luegoEntonces solo necesita su fuente para enviar mensajes al puerto UDP 514 en su servidor de escucha.
Es posible que desee mejorar esto para analizar los datos recibidos y formatearlos, pero no es necesario si todo lo que desea hacer es registrar lo que se recibe.
( Socat está en el Arch Linux extra repositorio:
pacman -S socat
)fuente
import socket; sock = socket.socket(type=socket.SocketKind.SOCK_DGRAM); sock.bind(("0.0.0.0", 514)); while True: print(sock.recv(1024 * 1024))
Entonces hay un poco de brecha aquí.
Systemd admite la mensajería remota a través del componente systemd-journal-gateway. Dicho esto, estos mensajes no están en formato syslog. Syslog (como formato) es una especificación ratificada por IETF documentada en RFC 5424 (que desaprobó la versión anterior, RFC 3164).
Aquí se documentan más de las complejidades de hacer que estos jueguen bien juntos:
http://www.freedesktop.org/wiki/Software/systemd/syslog/
y aquí (man systemd-journald.service)
En resumen, asegúrese de que los mensajes se envíen desde syslog-ng a STDOUT y que todo termine en el diario.
En el seguimiento de esto un poco más, encontré esto también:
https://github.com/intgr/pg_journal/blob/master/doc/pg_journal.md
Donde alguien está escribiendo un enlace desde PostgreSQL a systemd para iniciar sesión. En esto citan que actualmente (a partir de la fecha de ese archivo, 2013/06) los mensajes multilínea no son compatibles con systemd, así que ten cuidado con eso también.
fuente
No sé la distribución del arco. Tengo Fedora 20 (incluido systemd) y lo configuré para aceptar mensajes remotos de syslog.
En mi humilde opinión, esta funcionalidad no está relacionada con systemd. Systemd-journald.service se interpone entre los programas kernel / userspace y el subsistema syslog. Captura (creo) solo los mensajes locales de estas fuentes en su base de datos de diarios y luego los reenvía a syslog. Ver por ejemplo "man systemd-journald.service" (al menos en Fedora).
En mi caso, habilito esto configurando un "módulo receptor TCP syslog" opcional en /etc/rsyslog.conf
Un módulo UDP también está disponible.
También es necesario agregar (r) reglas de syslog para dirigir la salida a los archivos deseados. Para ver la documentación completa, consulte: http://www.rsyslog.com/doc/
HTH.
fuente
Instalé syslog-ng y pude recibir mensajes de registro de syslog. Pero lo que realmente quería era recibir mensajes de registro de syslog y luego escribir dicho mensaje en journald. No pude encontrar una manera de configurar syslog-ng para escribir mensajes remotos de syslog en journald.
Entonces escribí una utilidad para hacer esto.
https://github.com/advantageous/rsyslog-journald-repeater
Los archivos de compilación y las instrucciones para la prueba y los archivos de muestra de la unidad systemd se incluyen con el proyecto. ¡Disfrutar!
fuente
syslog-ng y systemd journal
De syslog-ng
Comenzando con syslog-ng versión 3.6.1, la
system()
fuente predeterminada en los sistemas Linux que usan systemd usa journald como susystem()
fuente estándar .Si, por otro lado, no desea retener los registros del diario, sino solo los registros de texto de syslog-ng, configurados
Storage=volatile
yForwardToSyslog=yes
en/etc/systemd/journald.conf
. Esto almacenará journald en ram. A partir de syslog-ng 3.6.3, syslog-ng está utilizando journald comosystem()
fuente, por lo que si establece Storage = none, el diario systemd descartará todos los mensajes y no los reenviará a syslog-ng.Después del cambio, reinicie los demonios
systemd-journald.service
ysyslog-ng.service
.fuente