La respuesta a su primera pregunta es:
Sí, cualquier llamada a syslog () está bloqueando. Tal vez por un tiempo muy corto, pero sigue siendo una llamada sincrónica que involucra un descriptor de archivo. Ver man 3 syslog
para más detalles.
A menos que sus servidores usen arquitecturas asincrónicas y primitivas, siempre habrá algún bloqueo. Esto puede mitigarse, pero no eliminarse, por ejemplo, utilizando un hilo separado para iniciar sesión. Para las otras dos preguntas que realmente no sé, pero la única forma de saberlo es inspeccionar el código fuente rsyslogd (así como el de la familia de funciones syslog ()).
Más en general, si mueve el registro a un servidor externo a través del "protocolo de syslog de red" UDP: 514, entonces trae las posibilidades de crear bloqueos a casi cero. Con el inconveniente de la posible pérdida de algunos registros durante cargas altas.
Primero , en los servidores "de origen" debe asegurarse de que todo el registro se realice a través de syslog. Por ejemplo, en Apache2 necesita especificar:
ErrorLog "syslog:daemon"
Para otros servidores, consulte la página de manual correspondiente. Si no puede garantizar esto, tenga en cuenta que iniciar sesión en los sistemas de archivos puede crear
En segundo lugar , en la configuración de rsyslogd de origen, solicita dirigir todo el tráfico de syslog para la instalación que elija ("daemon" en este ejemplo) a uno o más servidores de syslog externos. En el archivo de configuración de rsyslog puede especificar:
daemon.* @192.168.128.1
daemon.* @192.168.254.1
tener dos copias de los registros que se enviarán a dos servidores diferentes al mismo tiempo.
En tercer lugar , en los servidores de destino, habilita la recepción del mensaje syslog a través de UDP: 514. Está en el archivo de configuración rsyslogd (destino) y normalmente está deshabilitado por defualt (sería suficiente para eliminar los números iniciales:
$ModLoad imudp
$UDPServerRun 514
Cuarto , opcional pero muy recomendable, también habilitaría marcas de tiempo de alta resolución:
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
Además, esta opción normalmente está desactivada de forma predeterminada (¿por qué en la Tierra?).