Logstash non può leggere i file a cui dovrebbe avere accesso anche


10

Ho aggiunto l'utente logstashal gruppo admusando il comando $ usermod -a -G adm logstash.

Uno dei file che l'agente logstash sta tentando di leggere è /var/log/nginx/foo-access.log, che dispone delle seguenti autorizzazioni:

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

Quando sudo su logstashriesco a leggere il file, MA, quando io $ sudo service logstash_agent restart(che lo script init esegue come logstashutente) riempie i log del 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}

Posso confermare che l'utente del logstash è nel gruppo adm:

$ groups logstash
logstash : logstash adm

Questo file ha sicuramente il giusto accesso ai file:

$ 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::---

Ho provato a spegnerlo e riaccenderlo.


Il tuo file non sembra avere le autorizzazioni di scrittura del gruppo corrette. Chmod da riparare
— Nithin Meppurathu,

Non voglio scrivere sul file, come ho detto che voglio leggerlo.
— Phil Sturgeon,

Presumo che tu abbia anche controllato i permessi della directory principale ( /var/log/nginx)
— dawud,

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

Ho aggiunto l'output di quel comando alla domanda. L'avevo già eseguito con i risultati previsti, quindi inizialmente non mi sono preoccupato.
— Phil Sturgeon,

Risposte:


5

Si è scoperto essere correlato a questo bug in startstart:

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

Poiché admera un gruppo secondario, non veniva applicato al processo, che è rotto come f ** k ed è apparentemente corretto in una versione successiva.

La mia soluzione era quella di aggiungere setguid admal file init.


5

Ecco una soluzione alternativa funzionante:

sudo vi /etc/init.d/logstash

modificare

    LS_GROUP=logstash

di

    LS_GROUP=adm

poi

sudo /etc/init.d/logstash start

1
Funziona anche aggiungendo "LS_GROUP = adm" a / etc / defaults / logstash - la cosa bella è che è più facile da gestire usando il burattino.
— magrezza
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.