implant logrotate
Configura a rotação dos logs do sistema (syslog, kern.log, auth.log e
outros) com limite de tamanho (maxsize) calculado a partir do tamanho do
disco raiz.
A rotação padrão das distribuições é por tempo (diária ou semanal). Um pico de
log — um serviço em loop de erro, um scan agressivo gerando entradas de
firewall — pode encher o disco entre uma rotação e outra. Com maxsize, o
arquivo é rotacionado também quando passa do teto, na próxima execução do
logrotate.
Uso
implant logrotate [OPTIONS] <SUBCOMANDO>Requer root. As opções do comando (--dry-run) vêm antes do subcomando.
Subcomandos
| Subcomando | Descrição |
|---|---|
apply |
Grava /etc/logrotate.d/implant-logs e desativa a config de rotação do rsyslog |
revert |
Remove a config do implant e restaura a do rsyslog |
status |
Mostra se está configurado, o disco detectado e se o rsyslog foi desativado |
Flags
| Flag | Descrição |
|---|---|
--dry-run |
Simula sem aplicar mudanças: lista as operações de arquivo que faria |
-o, --output <FORMATO> |
human (padrão), json ou yaml |
-v, --verbose |
Mostra os comandos executados |
-c, --config <ARQUIVO> |
Arquivo de configuração (padrão /etc/protocolo-implant/config.toml) |
-t, --token <TOKEN> |
Token de identificação do servidor (ou PROTOCOLO_TOKEN) |
Dry-run
apply e revert montam primeiro um plano de operações de arquivo (criar
diretório, copiar, escrever, mover, remover) e só então o executam. Com
--dry-run, nada é alterado: a saída mostra Faria: seguido da lista, e no
JSON a mesma lista vem no campo planned.
sudo implant logrotate --dry-run applyO que é aplicado
Quando o `apply` age
O apply não faz nada se a rotação já tem limite de tamanho, ou seja, se:
/etc/logrotate.d/implant-logsjá existe commaxsize; ou- não existe a config do implant, mas
/etc/logrotate.d/rsyslogjá usamaxsize.
Limites calculados
O tamanho do disco raiz é lido com df (50 GB se não for possível detectar):
| Grupo | maxsize |
Rotações mantidas |
|---|---|---|
Principais (syslog, kern.log) — diário |
~1% do disco, mín. 50 MB, máx. 500 MB | 2 (< 50 GB), 3 (50–99 GB), 4 (≥ 100 GB) |
Autenticação e sistema (auth.log, user.log, mail.log, cron.log) — semanal |
~0,5% do disco, mín. 20 MB, máx. 100 MB | 4 (< 50 GB), 5 (50–99 GB), 7 (≥ 100 GB) |
Debug e daemon (debug, daemon.log, messages) — semanal |
igual ao grupo anterior | 2 |
Exemplos de resultado:
| Disco | Principais | Autenticação e sistema |
|---|---|---|
| 20 GB | 200 MB × 2 | 100 MB × 4 |
| 80 GB | 500 MB × 3 | 100 MB × 5 |
| 160 GB | 500 MB × 4 | 100 MB × 7 |
Todos os grupos usam compress, delaycompress, missingok e notifempty.
Os dois primeiros recarregam o rsyslog após a rotação (postrotate).
O cabeçalho do arquivo registra o tamanho de disco usado no cálculo.
Arquivos tocados
| Arquivo | O que acontece |
|---|---|
/etc/logrotate.d/implant-logs |
Criado com a configuração acima |
/var/lib/implant/backups/logrotate/rsyslog |
Cópia da config original do rsyslog (criada uma única vez) |
/etc/logrotate.d/rsyslog |
Renomeado para rsyslog.disabled, para que os mesmos arquivos não sejam rotacionados por duas configs |
Depois de gravar, o implant valida a config com logrotate -d.
O backup fica fora de /etc/logrotate.d de propósito: o logrotate lê
como configuração todo arquivo desse diretório, exceto os de extensões
ignoradas (como .disabled). Até a 2.54.0, o backup ficava em
/etc/logrotate.d/rsyslog.backup.implant, era lido como uma segunda config do
rsyslog e o logrotate acusava duplicate log entry. Se esse arquivo antigo
existir, o próximo apply o move para /var/lib/implant/backups/logrotate/
(ou só o remove, se já houver backup lá). O check --auto-fix faz a mesma
migração mesmo quando a rotação já está configurada.
Arquivos que a config original do rsyslog rotacionava e que não estão nas listas acima deixam de ser rotacionados enquanto ela estiver desativada. Confira o backup em
/var/lib/implant/backups/logrotate/rsyslogse o seu host grava logs em outros arquivos via rsyslog.
Status
| Campo | Significado |
|---|---|
configured |
/etc/logrotate.d/implant-logs existe |
disk_gb |
Tamanho do disco raiz detectado |
implant_conf |
Caminho da config do implant |
rsyslog_disabled |
/etc/logrotate.d/rsyslog.disabled existe |
planned |
Em apply/revert: operações de arquivo feitas (ou, em dry-run, as que seriam feitas); omitido quando vazio |
Como reverter
sudo implant logrotate revertO revert:
- apaga
/etc/logrotate.d/implant-logse/etc/logrotate.d/protocolo-implant(rotação dos logs do próprio implant, criada pelocheck --auto-fix); - devolve a config do rsyslog: se existir
rsyslog.disabled, renomeia de volta para/etc/logrotate.d/rsyslog; se não existir e também não houver umrsyslog, copia o backup (o de/var/lib/implant/backups/logrotate/ou, na falta dele, o antigorsyslog.backup.implant); - apaga os backups, inclusive o antigo de dentro de
/etc/logrotate.d.
Arquivos já rotacionados e comprimidos não são alterados. O revert também
respeita o --dry-run. implant reset --logrotate faz a mesma reversão.
A rotação de logs não faz parte do emergency-mode;
para desfazê-la, use revert.
Exemplos
# Ver o estado atual (não altera nada)
sudo implant logrotate status
# Ver o que o apply faria, sem alterar nada
sudo implant logrotate --dry-run apply
# Aplicar
sudo implant logrotate apply
# Testar a rotação sem executar
logrotate -d /etc/logrotate.d/implant-logs
# Reverter
sudo implant logrotate revertSaída JSON do status (resumida):
{
"success": true,
"command": "logrotate",
"data": {
"action": "status",
"target": "logrotate",
"result": "completed",
"dry_run": false,
"state": {
"disk_gb": 79.5,
"implant_conf": "/etc/logrotate.d/implant-logs",
"configured": true,
"rsyslog_disabled": true
}
}
}Trecho do state de um --dry-run apply num host ainda sem a config do
implant:
{
"configured": false,
"rsyslog_disabled": false,
"planned": [
"criar diretório /var/lib/implant/backups/logrotate",
"copiar /etc/logrotate.d/rsyslog para /var/lib/implant/backups/logrotate/rsyslog",
"escrever /etc/logrotate.d/implant-logs",
"mover /etc/logrotate.d/rsyslog para /etc/logrotate.d/rsyslog.disabled"
]
}Veja também
- docker-limits — limites de logs dos containers
- check — aplica a rotação no
--auto-fix - reset —
--logrotate