manuais-e-documentacao-itguys/documentacao linux/[Nível 3] Análise De Logs (...

122 lines
3.4 KiB
Markdown

# 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?