Nginx agrega el registro a la función syslog en la versión 1.7.1.
Solo puedo obtener la versión 1.6.2 ppa:nginx/stableo la versión 1.4.6 de las fuentes predeterminadas del paquete de Ubuntu.
Tengo un servidor de registro común (rsyslog) que recopila datos de unas pocas docenas de servidores. rsyslog ya está configurado en cada máquina para propagar registros a la máquina de registro primaria o al failover, si la primaria está inactiva.
¿Cuáles son mis opciones para obtener registros de Nginx en syslog local (que luego rsyslog enviará al servidor remoto)?
Nota: aunque las respuestas relacionadas directamente con el registro de Nginx son bienvenidas, también estoy buscando respuestas generales que se apliquen a cualquier aplicación (por lo tanto, la falta de etiqueta nginx para esta pregunta). La razón es que todavía no he migrado todas las aplicaciones syslog, y espero que otras aplicaciones causen problemas similares.
Notas importantes relacionadas con la respuesta aceptada:
Si bien
inotifyestá disponible desde la versión beta de rsyslog 5.9.6, el 12 de abril de 2012 , solo se admite desde el 24 de enero de 2014 en rsyslog 8.1.5 .Esto requiere su uso
ppa:adiscon/v8-stableen Ubuntu, ya que la última distribución de Ubuntu en el momento de la escritura (14.04 LTS) está utilizando rsyslog 7.4.4.inotifyel modo se especifica enmodule(), noinput():module(load="imfile" mode="inotify")Con
inotify,PollingIntervalno tiene que especificarse.Cuando la configuración es incorrecta,
rsyslogno registra nada en/var/log/syslog. Para inspeccionar lo que está mal, el comandorsyslogd -N1parece ser muy útil. Obviamente,ps -A | grep rsyslogtambién ayuda para saber si sersyslogestá ejecutando.La
rsyslogversión actual se puede obtener ejecutandorsyslogd -version.ReadModeeninput()debe establecerse en cero .La configuración
module()y "debe colocarse en la parte superior del archivo rsyslog.conf" .input()Parece que
rsyslogodia a Nginx. No importa en qué propietario, grupo o permisos estén configurados/var/log/nginx/o/var/log/nginx/access.log, los cambios en el archivo se ignoran (sin ningún error). Lo mismo ocurre con cualquier otro archivo creado en el/var/log/nginx/directorio.Cuando los archivos se crean en un directorio diferente, como
/home/demo/o/var/log/, los cambios se reflejansyslogcomo se esperaba.

Respuestas:
Supongo que tiene rsyslog ejecutándose en la máquina local y que reenvía registros a su servidor de registro remoto.
De la documentación de rsyslog, parece que puede definir un módulo de entrada para hacer exactamente lo que desea. Vi detalles de esto aquí:
http://www.rsyslog.com/doc/master/configuration/modules/imfile.html
Incluso proporciona algunos ejemplos ingeniosos.
fuente