Como redirecionar os logs para o syslog de um aplicativo que ainda não suporta o syslog?

1

O Nginx adiciona o recurso registro no syslog na versão 1.7.1.

Eu só posso obter a versão 1.6.2 de ppa:nginx/stable , ou a versão 1.4.6 das fontes de pacotes padrão do Ubuntu.

Eu tenho um servidor de log comum (rsyslog) que coleta dados de algumas dezenas de servidores. O rsyslog já está configurado em cada máquina para propagar logs para a máquina de log principal ou o failover, se o primário estiver inativo.

Quais são as minhas opções para obter logs do Nginx para o syslog local (que então será enviado ao servidor remoto pelo rsyslog)?

Nota: embora as respostas relacionadas diretamente ao registro do Nginx sejam bem-vindas, também estou procurando respostas gerais que se aplicariam a qualquer aplicativo (portanto, a falta de tag para esta questão). O motivo é que ainda não migrei todos os aplicativos para syslog e espero que outros aplicativos causem problemas semelhantes.

Notas importantes relacionadas à resposta aceita:

  1. Embora inotify esteja disponível desde a versão beta do rsyslog 5.9.6, 12 de abril de 2012 , só é suportado de outra forma desde 24 de janeiro de 2014 no rsyslog 8.1.5 .

    Isso requer o uso de ppa:adiscon/v8-stable no Ubuntu, já que a última distribuição do Ubuntu no momento da escrita (14.04 LTS) está usando o rsyslog 7.4.4.

  2. inotify mode é especificado em module() , não input() :

    module(load="imfile" mode="inotify")
    

    Com inotify , PollingInterval não precisa ser especificado.

  3. Quando a configuração está incorreta, rsyslog não registra nada em /var/log/syslog . Para inspecionar o que está errado, o comando rsyslogd -N1 parece ser muito útil. Obviamente, ps -A | grep rsyslog também ajuda a descobrir se rsyslog está sendo executado.

    A atual versão rsyslog pode ser obtida executando rsyslogd -version .

  4. ReadMode em input() deve ser definido como zero .

  5. A configuração module() e input() “deve ser colocada no topo do arquivo rsyslog.conf ”.

  6. Parece que rsyslog odeia o Nginx. Não importa qual proprietário, grupo ou permissões esteja definido em /var/log/nginx/ ou /var/log/nginx/access.log , as alterações do arquivo são ignoradas (sem qualquer erro). O mesmo acontece com qualquer outro arquivo criado no diretório /var/log/nginx/ .

    Quando os arquivos são criados em um diretório diferente, como /home/demo/ ou /var/log/ , as alterações são refletidas em syslog conforme o esperado.

por Arseni Mourzenko 16.01.2015 / 00:48

1 resposta

0

Suponho que você tenha rsyslog em execução na máquina local e que esteja encaminhando logs para seu servidor de log remoto.

Na documentação do rsyslog, parece que você pode definir um módulo de entrada para fazer exatamente o que você está querendo. Eu vi detalhes aqui:

link

Ele ainda fornece alguns exemplos interessantes. Espero que isso ajude.

    
por 16.01.2015 / 04:08