Tengo un servidor de syslog estándar que se ejecuta en un host de la LAN y escucha en el puerto UDP 514. Estoy intentando que mi Mac (que ejecuta MacOS 12.4 con SIP activado) envíe los registros en formato syslog a este servidor remoto.
Pude averiguar que si edito /etc/syslog.conf
y añadir, por ejemplo, la siguiente línea:
# send all logs to 192.168.10.10
*.* @192.168.10.10:514
y luego rebote de syslogd:
sudo launchctl kickstart -kp system/com.apple.syslogd
Que sí veo algunos registros que se envían al servidor. Sin embargo, muchos Las entradas de registro se pierden debido al nuevo Sistema de Registro Unificado (ULS) de Apple. Soy consciente de que /etc/asl.conf
que también tiene alguna configuración de registro relevante, pero no pude averiguar si o cómo esto podría ser utilizado para enviar registros a una máquina remota.
También soy consciente de la log
y puede utilizarlo para consultar y obtener resultados en formato syslog, por ejemplo
log show --info --predicate 'messageType > 2' --last 60s --style syslog
Pensé en usar esto para consultar periódicamente (a través de un LaunchAgent) y enviar los registros usando netcat o alguna otra herramienta sencilla. Pero esto parece bastante ineficiente, ya que tendría que analizar cada línea y almacenar un hash en algún lugar para ver si ese mensaje ya ha sido enviado para evitar duplicados. Además, algunas entradas de registro abarcan varias líneas, por lo que el análisis con cosas como sed
o awk
se vuelven engorrosos.
Sin añadir demasiadas herramientas de terceros a la mezcla, ¿alguien tiene una receta para enviar un conjunto más completo de registros a un servidor remoto?