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/stable
o 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
inotify
está 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-stable
en Ubuntu, ya que la última distribución de Ubuntu en el momento de la escritura (14.04 LTS) está utilizando rsyslog 7.4.4.inotify
el modo se especifica enmodule()
, noinput()
:module(load="imfile" mode="inotify")
Con
inotify
,PollingInterval
no tiene que especificarse.Cuando la configuración es incorrecta,
rsyslog
no registra nada en/var/log/syslog
. Para inspeccionar lo que está mal, el comandorsyslogd -N1
parece ser muy útil. Obviamente,ps -A | grep rsyslog
también ayuda para saber si sersyslog
está ejecutando.La
rsyslog
versión actual se puede obtener ejecutandorsyslogd -version
.ReadMode
eninput()
debe establecerse en cero .La configuración
module()
y "debe colocarse en la parte superior del archivo rsyslog.conf" .input()
Parece que
rsyslog
odia 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 reflejansyslog
como 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