Como fazer logrotate com systemd?

11

Estou executando um aplicativo de nó usando systemd com um arquivo de unidade. O log de aplicativos pode ser visualizado usando, journalctl -u example.commas o log é cortado em algum momento, apagando o histórico (necessário para a depuração).

Como faço para configurar o log rotação com systemd para que meus logs de aplicativos fica armazenado em example.com.log.1, example.com.log.2etc. para que eu possa consultar a história do meu aplicativo?

Este é o meu arquivo de unidade:

ExecStart=/usr/bin/node keystone.js
#Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=example.com
User=user
Group=user
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target
htor
fonte
11
Por favor, inclua sua versão do systemd, seu SO e versão.
Mark Stosberg
11
Revise man journald.confpara revisar as opções que controlam o espaço em disco do diário systemd. Se você ainda tiver alguma dúvida, poste o conteúdo da sua /etc/systemd/journald.conf.
Mark Stosberg

Respostas:

6

Aumentando o armazenamento

Se você estiver armazenando em disco, poderá aumentar a quantidade de espaço usado alterando SystemMaxUsee / ou SystemKeepFree. Ter mais espaço permitiria que mais entradas fossem armazenadas.

Por padrão, o limite máximo de uso ( SystemMaxUse) é 10% do sistema de arquivos e o valor mínimo de espaço livre ( SystemKeepFree) é 15% - embora ambos estejam limitados a 4G.

Rotação do diário

Os diários devem ser girados automaticamente quando atingirem o SystemMaxFileSizevalor e o número de diários é controlado por SystemMaxFiles. Se você preferir a rotação baseada no tempo, pode definir a MaxFileSecpara definir o tempo máximo que as entradas são armazenadas em um único diário.

Nota sobre o local / tipo de armazenamento

Com o journald, você pode optar por armazenar as entradas do diário na memória ( Storage=volatile) ou no disco ( Storage=persistent). O item acima pressupõe que você esteja armazenando diários no disco - se esse não for o caso, "Sistema" precisará ser substituído por "Tempo de execução" nas variáveis ​​acima.

Mais detalhes estão disponíveis em man journald.conf.

Alternativa - transmissão de lançamentos contábeis manuais

Se você já está familiarizado com o daemon SYSLOG tradicional, pode transmitir os eventos do diário configurando a ForwardToSyslogopção (que encaminha as mensagens imediatamente) ou fazer com que o daemon syslog se comporte como um cliente do diário e obtenha os próprios logs.

DougC
fonte