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.

Phil Sturgeon
fuente
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.

Phil Sturgeon
fuente
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
David
fuente
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