Me pregunto si systemd-journald es una nueva implementación del protocolo syslog, o más bien, usa implementaciones syslog, como rsyslog, syslog-ng
Busqué en Google un poco, pero no encontré nada convincente al respecto.
syslog
systemd-journald
sebelk
fuente
fuente
Respuestas:
En lo que respecta a los protocolos,
systemd-journald
.../run/systemd/journal/stdout
. systemd conecta las salidas estándar sin procesar y los errores de los servicios (que se han predeterminado o que tienen explícitamenteStandardOutput=journal
/StandardError=journal
) a este socket. Por lo tanto, recibe el protocolo de registros de formato libre de longitud variable terminados con saltos de línea./run/systemd/journal/dev-log
, que está simbólicamente vinculado desde/dev/log
. Esto recibe el protocolo que lasyslog()
función de la biblioteca en la biblioteca GNU C, vinculada a las aplicaciones, habla./run/systemd/journal/syslog
. Esto también recibe el protocolo quesyslog()
habla la función de biblioteca en la biblioteca GNU C (aunque ensystemd-journald
realidad usa otra biblioteca y otra función para hablarlo)./dev/kmsg
. Esto recibe el protocolo que habla el kernel de Linux, que es un protocolo de longitud variable, en gran parte de formato libre, registros terminados con avances de línea./run/systemd/journal/socket
. Esto es análogo al caso de la biblioteca GNU C en que las aplicaciones se vinculan a una biblioteca que habla un cierto protocolo a este socket; excepto que la función essd_journal_sendv()
, es en una biblioteca de systemd C a la que se vinculan las aplicaciones, y el protocolo no está estandarizado, sino que es un protocolo solo de systemd que comprende una matriz de pares clave = valor, y opcionalmente un descriptor de archivo legible, en cada datagrama .El protocolo hablado por la
syslog()
función en la biblioteca GNU C no es RFC 5424 ni RFC 3164, y es efectivamente su propio estándar de facto. No es RFC 5424 porque no tiene la cantidad correcta de espacios en blanco y los guiones que designan campos opcionales con valores NIL. No es RFC 3164 porque tiene unPROCID
campo en lugar de unHOSTNAME
.Hace un par de años, su sistema operativo systemd habría tenido:
systemd-journald
haciendo todo lo anterior (y algunas cosas que son irrelevantes cuando se trata de protocolos ) y ser el servidor con el que la biblioteca GNU C y la biblioteca systemd C hablan utilizando sus respectivos protocolosxinetd
/inetd
-style cuando algo intenta enviar mensajes/run/systemd/journal/syslog
y recibir el socket como un descriptor de archivo abierto, o como un servicio directo configurado para abrir y escuchar/run/systemd/journal/syslog
con su (equivalente del rsyslog)imuxsock
módulo; y hablando el protocolo de la biblioteca GNU CHoy en día, su sistema operativo systemd tiene:
systemd-journald
de nuevo haciendo todo lo anterior y siendo el servidor con el que hablan la biblioteca GNU C y la biblioteca systemd Cimjournal
móduloOtras lecturas
fuente