# MANUAL TÉCNICO - ANÁLISE DE LOGS (SYSTEMD/JOURNALCTL) **Código:** ITGENG 0011/26 | **Classificação:** RESTRITO **Responsável:** João Pedro Toledo Gonçalves | **Data:** {{DATA_ATUAL}} ## 1. HISTÓRICO DE REVISÃO | Data | Versão | Descrição | Autor | | :--- | :--- | :--- | :--- | | {{DATA_ATUAL}} | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves | ## 2. OBJETIVO Capacitar a engenharia na extração, filtro e análise de logs centralizados do `systemd` via comando `journalctl`, substituindo a leitura manual de arquivos texto dispersos. ## 3. PRÉ-REQUISITOS * [ ] Servidor rodando Systemd (Todas as distros modernas listadas). * [ ] Acesso root ou usuário no grupo `systemd-journal`. --- ## 4. USO BÁSICO E FILTRAGEM O `journalctl` exibe logs de todos os serviços unificados. ### Filtrar por Serviço (Unit) A forma mais comum de debug. ```bash journalctl -u nginx journalctl -u ssh journalctl -u docker ``` ### Visualizar em Tempo Real (Follow) Igual ao `tail -f`. ```bash journalctl -u nginx -f ``` ### Filtrar por Tempo (Since / Until) Essencial para incidentes ("O que aconteceu ontem às 14h?"). ```bash journalctl --since "2023-10-20 14:00:00" --until "2023-10-20 14:30:00" journalctl --since "1 hour ago" journalctl --since "today" ``` ### Filtrar por Prioridade (Erro/Crítico) Isola apenas problemas reais. * 0: emerg * 1: alert * 2: crit * 3: err * 4: warning ```bash journalctl -p err -b 0 ``` *(`-b 0` limita ao boot atual, ignorando reboots passados)* --- ## 5. PERSISTÊNCIA DE LOGS Por padrão, muitas distros configuram o journald como **Volátil** (memória RAM), perdendo logs ao reiniciar. 1. Verifique o armazenamento: ```bash cat /etc/systemd/journald.conf | grep Storage ``` 2. Para ativar persistência: * Opção A (Automática): Crie a pasta de logs. ```bash sudo mkdir -p /var/log/journal sudo systemd-tmpfiles --create --prefix /var/log/journal sudo systemctl restart systemd-journald ``` * Opção B (Config): Edite `/etc/systemd/journald.conf` e defina `Storage=persistent`. ## 6. LIMPEZA E MANUTENÇÃO (Vacuum) Logs binários podem crescer muito. Limpe-os seguramente: * **Manter apenas 1GB:** ```bash journalctl --vacuum-size=1G ``` * **Manter apenas os últimos 10 dias:** ```bash journalctl --vacuum-time=10d ``` ## 7. EXPORTAÇÃO DE DADOS Para enviar logs para devs ou anexar em chamados. * **Sem paginação (Texto Puro):** ```bash journalctl -u servico --no-pager > log_exportado.txt ``` * **Formato JSON (Para ELK/Splunk):** ```bash journalctl -u servico -o json-pretty ``` ## 8. ALPINE LINUX (SEM SYSTEMD) > ⚠️ **ATENÇÃO:** O Alpine Linux usa **OpenRC** e não Systemd. Portanto, o comando `journalctl` **NÃO EXISTE**. No Alpine, os logs são arquivos de texto tradicionais (Syslog): * **Log Principal:** `/var/log/messages` (Tudo vai para cá). * **Kernel:** `/var/log/dmesg`. * **Auth (SSH):** `/var/log/messages` (ou `/var/log/auth.log` se configurado). **Comandos Substitutos:** * Ver em tempo real: `tail -f /var/log/messages` * Buscar erro: `grep "error" /var/log/messages` ## 9. VALIDAÇÃO FINAL - [ ] O comando `journalctl` retorna dados (em distros Systemd)? - [ ] Os logs persistem após um reboot? - [ ] A rotação de logs (Vacuum) está funcionando para não lotar o disco?