O Logstash não pode ler arquivos, ele também deve ter acesso

10

Eu adicionei usuário logstashem grupo admusando o comando $ usermod -a -G adm logstash.

Um dos arquivos que o agente do logstash está tentando ler é o /var/log/nginx/foo-access.logque possui as seguintes permissões:

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

Quando eu sudo su logstashposso ler o arquivo, MAS, quando eu $ sudo service logstash_agent restart(que o script init executa como logstashusuário), ele preenche os logs do logstash com:

{: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 confirmar que o usuário do logstash está no grupo adm:

$ groups logstash
logstash : logstash adm

Este arquivo definitivamente tem o acesso correto:

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

Tentei desligá-lo e ligá-lo novamente.

Phil Sturgeon
fonte
Seu arquivo não parece ter as permissões de gravação de grupo corretas. Chmod para corrigir
Nithin Meppurathu
Não quero gravar no arquivo, como disse que quero lê-lo.
Phil Sturgeon
Eu suponho que você também verificou as permissões do diretório pai ( /var/log/nginx)
Dawud
getfacl /var/log/nginx/kapture-api3-access.log
Nithin Meppurathu
Eu adicionei a saída desse comando à pergunta. Eu já o havia executado com os resultados esperados, então não me incomodei inicialmente.
Phil Sturgeon

Respostas:

5

Acabou por estar relacionado a esse bug no inicio:

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

Por admser um grupo secundário, ele não estava sendo aplicado ao processo, que é quebrado como f ** k e aparentemente é corrigido em uma versão posterior.

Minha solução foi adicionar setguid admao arquivo init.

Phil Sturgeon
fonte
5

Aqui está uma solução alternativa de trabalho:

sudo vi /etc/init.d/logstash

modificar

    LS_GROUP=logstash

por

    LS_GROUP=adm

então

sudo /etc/init.d/logstash start
David
fonte
1
Também funciona adicionando "LS_GROUP = adm" a / etc / defaults / logstash - a parte boa disso é que é mais fácil gerenciar usando o fantoche.
thinice