Logstash não está lendo logs a menos que seja legível por todos

1

Eu recentemente configurei o Logstash com o Kibana eo Elasticsearch, mas estou tendo um problema por meio do qual ele não está lendo logs, a menos que as permissões do diretório sejam de leitura / execução global (e os arquivos sejam lidos pelo menos).

Instalei a versão 1.4.2 do RPM, que é executado como o usuário do logstash. Certifiquei-me de que o usuário do logstash é um membro dos grupos relacionados aos registros que ele precisa ler, por exemplo, "apache".

[root@rhel-00081 conf]# id logstash
uid=497(logstash) gid=497(logstash) groups=48(apache),10081(nexus),27666(spark),497(logstash)

A permissão padrão em / var / log / http é drwxr-x--- root apache , mas o Logstash não processará os logs até que eu altere isso para drwxr-xr-x

Alguma ideia do motivo?

    
por RCross 29.09.2014 / 15:28

2 respostas

2

Ok, descobri o problema. O script de inicialização fornecido no RPM inicia o logstash da seguinte forma:

nice -n ${LS_NICE} chroot --userspec $LS_USER:$LS_GROUP / sh -c "
cd $LS_HOME
ulimit -n ${LS_OPEN_FILES}
exec \"$program\" $args
" > "${LS_LOG_DIR}/$name.stdout" 2> "${LS_LOG_DIR}/$name.err" &

Mas, quando executado sob o comando chroot, todos os membros do grupo secundário são removidos, a menos que você forneça a opção --groups. Você pode ver isso se você executar:

[root@rhel-00081 ~]# chroot --userspec logstash:logstash / bash -c "id"
uid=497(logstash) gid=497(logstash) groups=497(logstash),0(root)

Portanto, os logs do apache são ilegíveis ...

[root@rhel00081 httpd]# chroot --userspec logstash:logstash / bash -c "cat /var/log/httpd/access_log"
cat: /var/log/httpd/access_log: Permission denied

A linha chroot no script de inicialização precisa ser precedida de algo como:

SUPP_GROUPS=$(groups $LS_USER | cut -d " " -f 4- | tr " " ",")
SUPP_GROUP_STR=""
if [ ! -z ${SUPP_GROUPS} ]
then
  SUPP_GROUP_STR="--groups=${SUPP_GROUPS}"
fi

e depois modificar o começo da linha chroot:

nice -n ${LS_NICE} chroot ${SUPP_GROUP_STR} --userspec=$LS_USER:$LS_GROUP / sh -c "
... etc ...
    
por 30.09.2014 / 13:50
0

Este é um problema conhecido no script de inicialização do logstash 1.4.2. link

    
por 10.05.2015 / 10:14