como fazer logstash ler log kannel

2

Eu tenho o logstash instalado no Ubuntu 12.04 usando o repositório apt. Mas o logstash não está lendo nenhum documento. No log logstash, há o seguinte:

{:timestamp=>"2014-08-01T22:06:09.722000+0000", :message=>"failed to open /var/log/kannel/smsbox.log: Permission denied - /var/log/kannel/smsbox.log", :level=>:warn}

Eu verifiquei as permissões no arquivo:

$ ls -lh /var/log/kannel/smsbox.log
-rw-r----- 1 kannel adm 42M Aug  2 00:14 /var/log/kannel/smsbox.log

Então, adicionei o usuário logstash ao grupo adm com usermod -a -G root logstash e isso não ajudou. Eu até adicionei a raiz, mas ainda não funciona. Eu estou no final do meu juízo.

    
por black sensei 02.08.2014 / 02:25

1 resposta

3

No que diz respeito ao kernel, um processo é executado como um usuário¹ e um ou mais grupos. Depois que o processo é iniciado, ele não adquirirá mais grupos. Um processo herda seu usuário e grupo (s) do processo que o chama.

A noção de um usuário pertencente a um grupo é gerenciada por ferramentas de administração de usuários e é o programa de login que concede associações ao grupo ao processo iniciado. Assim, quando você adiciona um usuário a um grupo, isso só entra em vigor em sessões de login iniciadas posteriormente, não em sessões já em andamento.

Os daemons não passam por um processo de login interativo e geralmente são iniciados como um usuário e grupo específicos. Geralmente, o grupo nem é lido no banco de dados de contas, mas codificado no script de inicialização do daemon ao lado do nome de usuário. Portanto, adicionar o usuário logstash ao grupo adm não ajudará você; O que você precisa fazer é alterar o script de inicialização do logstash para executar o logstash com adm como um grupo adicional. Como isso depende de como o script de inicialização é escrito. Em qualquer caso, isso exigirá o reinício do serviço logstash.

Como alternativa, você pode alterar a lista de controle de acesso do arquivo de log para permitir que o processo de logstash o use. Por exemplo, para permitir que o usuário logstash leia o arquivo de log kannel:

setfacl -m u:logstash:r /var/log/kannel/smsbox.log

e talvez também

setfacl -m u:logstash:rx /var/log/kannel

Observe que isso pode ser apenas uma solução temporária, pois a rotação do log pode reinicializar suas permissões. Para essa abordagem, você provavelmente precisará alterar a configuração do programa que (re) cria o arquivo de log.

¹ Dois usuários (real e efetivo), mas o UID real não é relevante nesta resposta.

    
por 04.08.2014 / 03:24