Onde um pacote / opt deve gravar logs?

13

Estou instalando um pacote personalizado para /opt/package_name, armazenando arquivos de configuração /etc/opt/package_namee arquivos estáticos /var/opt/package_name/static/- todos seguindo as convenções sugeridas pelo FHS. [ 1 ] [ 2 ] [ 3 ]

Também preciso armazenar alguns arquivos de log. Eu quero que eles sejam descobertos pelas ferramentas de análise, para que eles também estejam em um local convencional. Estes devem entrar:

  • /var/log/package_name (como um pacote do sistema, mesmo que seja um pacote personalizado)
  • /var/opt/package_name/log(seguindo a /var/optconvenção - mas isso é detectável?)
  • algo mais?
david.libremone
fonte
Você tem um exemplo de uma ferramenta de análise em mente que varre / var / log?
sourcejedi
5
Por que a resposta não é syslog?
27717 Joshua

Respostas:

19

Eu os colocaria /var/log/package_name; satisfaz o princípio de menos surpresa melhor que /var/opt/package_name/log. Eu não tenho uma citação para isso; simplesmente combina onde eu procuraria por logs.

Também posso deixar de escrever meus próprios arquivos de log e, em vez disso, fazer logon syslogcom uma tag e facilidade apropriadas; se estou procurando uma integração limpa com as ferramentas de análise estabelecidas, não acredito que possa fazer melhor em um canal de comunicação:

  • Toda ferramenta genérica com "análise de log" como um recurso listado já observa syslog .
  • A liberação do arquivo de log e a semântica de rotação são tratadas para mim; Não preciso configurar um mecanismo paralogrotate me dizer para deixar o arquivo de lado e abrir um novo. Nem preciso contar logrotatesobre novos arquivos para rodar!
  • A transferência de logs para servidores de log centrais é tratada para mim, se o site exigir; Ferramentas estabelecidas existentes, comorsyslog estarão em uso, se necessário, portanto não preciso considerar a implementação desse recurso.
  • Os controles de acesso (POSIX e, por exemplo, SELinux) em torno dos arquivos de log já são tratados, portanto, não preciso prestar muita atenção à semântica de segurança específica da distribuição.

A menos que eu esteja criando algum formato binário personalizado para o meu log e, mesmo assim, prefiro formatos de texto analisáveis ​​por máquina compatíveis com syslog, como JSON. É difícil justificar meus próprios arquivos de log separados; ferramentas de análise já assistem syslogcomo um falcão.

Michael Mol
fonte
8

Ao seguir as convenções do FHS para os arquivos de configuração de pacotes, você deve ser consistente e armazenar os arquivos de log /var/opt/package_name/log.

A ESF afirma:

Os dados variáveis ​​dos pacotes em / opt devem ser instalados em / var / opt /

e também afirma

Nenhum outro arquivo de pacote pode existir fora das hierarquias / opt, / var / opt e / etc / opt, exceto os arquivos de pacote que devem residir em locais específicos na árvore do sistema de arquivos para funcionar corretamente. Por exemplo, os arquivos de bloqueio de dispositivo devem ser colocados em / var / lock e os dispositivos devem estar localizados em / dev.

Submeter os arquivos de log /var/optnão impede que o pacote funcione corretamente, portanto, o uso /var/logviola claramente o padrão.

Não está claro o que você quer dizer com "isso é detectável?" como seus logs personalizados provavelmente serão manipulados por ferramentas personalizadas, mas assumindo que uma ferramenta genérica foi projetada para processá-los, ela deverá explorar o local padrão para pacotes desagregados como o seu.

Observe que syslogé um recurso útil para centralizar e ajustar a configuração de log, mas não resolve completamente o problema sobre onde armazenar logs quando você precisa fazê-lo em arquivos simples com um caminho conhecido. Alguns arquivos às vezes armazenados em um diretório de log do aplicativo são projetados para serem acessíveis usando o caminho esperado pelo próprio aplicativo ou por programas associados, por exemplo, um arquivo que armazena um ID do processo, portanto syslog, não funcionará para eles.

jlliagre
fonte