Logstash no puede leer archivos, también debería tener acceso


10

Agregué un usuario logstashal grupo admusando el comando $ usermod -a -G adm logstash.

Uno de los archivos que el agente logstash está intentando leer es el /var/log/nginx/foo-access.logque tiene los siguientes permisos:

-rw-r----- 1 www-data adm 0 Jul 25 07:52 /var/log/nginx/foo-access.log

Cuando sudo su logstashpuedo leer el archivo, PERO, cuando $ sudo service logstash_agent restart(el script de inicio se ejecuta como logstashusuario) llena los registros de logstash con:

{:timestamp=>"2013-07-31T17:05:17.287000+0000", :message=>"failed to open /var/log/nginx/foo-access.log: Permission denied - /var/log/nginx/foo-access.log", :level=>:warn}

Puedo confirmar que el usuario logstash está en el grupo adm:

$ groups logstash
logstash : logstash adm

Este archivo definitivamente tiene el acceso a archivos correcto:

$ getfacl /var/log/nginx/foo-access.log
getfacl: Removing leading '/' from absolute path names
# file: var/log/nginx/foo-access.log
# owner: www-data
# group: adm
user::rw-
group::r--
other::---

He intentado apagarlo y volverlo a encender.


Su archivo no parece tener los permisos de escritura de grupo correctos. Chmod para arreglar
— Nithin Meppurathu

No quiero escribir en el archivo, como dije, quiero leerlo.
— Phil Sturgeon

Supongo que también verificó los permisos del directorio principal ( /var/log/nginx)
— dawud

getfacl /var/log/nginx/kapture-api3-access.log
— Nithin Meppurathu

Agregué el resultado de ese comando a la pregunta. Lo había ejecutado antes con los resultados que esperaba, así que al principio no me molesté.
— Phil Sturgeon

Respuestas:


5

Resultó estar relacionado con este error en la fase inicial:

https://bugs.launchpad.net/upstart/+bug/812870

Debido a que admera un grupo secundario, no se estaba aplicando al proceso, que se divide como f ** k y aparentemente se corrige en una versión posterior.

Mi solución fue agregar setguid admal archivo init.


5

Aquí hay una solución alternativa:

sudo vi /etc/init.d/logstash

modificar

    LS_GROUP=logstash

por

    LS_GROUP=adm

luego

sudo /etc/init.d/logstash start

1
También funciona agregando "LS_GROUP = adm" a / etc / defaults / logstash; lo bueno de esto es que es más fácil de administrar usando puppet.
— thinice
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.