Onde um pacote / opt deve gravar logs?

12

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

Eu também preciso armazenar alguns arquivos de log. Eu quero que eles sejam detectáveis por ferramentas de análise, então eles também devem estar em um local convencional. Eles devem entrar:

  • /var/log/package_name (como um pacote de sistema, mesmo que seja um pacote personalizado)
  • /var/opt/package_name/log (seguindo a convenção /var/opt - mas isso é detectável?)
  • alguma outra coisa?
por d3vid 27.03.2017 / 14:01

2 respostas

18

Gostaria de colocá-los em /var/log/package_name ; satisfaz o princípio da menor surpresa melhor que /var/opt/package_name/opt . Eu não tenho uma citação para isso; ele simplesmente combina onde eu procuraria por registros.

Também posso renunciar a escrever meus próprios arquivos de log e, em vez disso, fazer o login em syslog com uma tag e um recurso apropriados; se estou procurando uma integração limpa com ferramentas de análise estabelecidas, não acredito que possa fazer melhor para um canal de comunicação:

  • Toda ferramenta genérica com "análise de log" como um recurso listado já assiste syslog .
  • As semânticas de liberação e rotação do arquivo de log são tratadas por mim; Eu não tenho que configurar um mecanismo para logrotate me dizer para deixar o arquivo e abrir um novo. Eu nem preciso dizer logrotate sobre novos arquivos para girar!
  • O descarregamento de logs para servidores de registro central é feito para mim, se o site exigir isso; As ferramentas existentes e existentes, como rsyslog , estarão em uso se necessário, portanto, não preciso contemplar a implementação desse recurso por mim mesmo.
  • Os controles de acesso (POSIX e, por exemplo, o SELinux) em torno dos arquivos de log já foram tratados, portanto, não preciso prestar tanta atenção à semântica de segurança específica da distribuição.

A menos que eu esteja fazendo algum formato binário customizado para o meu log - e mesmo assim, eu prefiro formatos de texto que podem ser interpretados por máquina e amigáveis ao syslog como JSON - eu tenho dificuldade em justificar meus próprios arquivos de log separados; ferramentas de análise já assistem syslog como um falcão.

    
por 27.03.2017 / 14:30
7

Como você está seguindo as convenções do FHS para os arquivos de configuração do pacote, você deve ser consistente e armazenar os arquivos de log em /var/opt/package_name/log .

A ESF afirma:

Variable data of the packages in /opt must be installed in /var/opt/

Não está claro o que você quer dizer com "isso é detectável?" como os registros personalizados provavelmente serão manipulados por ferramentas personalizadas, mas supondo que uma ferramenta genérica seja projetada para processá-los, ele deve explorar o local padrão para pacotes não incluídos como o seu.

Observe que syslog é um recurso útil para centralizar e ajustar a configuração de criação de log, mas não resolve totalmente o problema sobre onde armazenar logs quando você precisar fazer isso em arquivos simples com um caminho bem conhecido. Alguns arquivos, por vezes, armazenados em um diretório de log de aplicativo são projetados para serem acessados usando o caminho esperado pelo próprio aplicativo ou por programas associados, por exemplo, um arquivo que armazena um ID de processo, portanto syslog não funcionará para eles. >     

por 27.03.2017 / 16:56

Tags