From f277c318b4217a1473507c3c205e9a40ff6f8df2 Mon Sep 17 00:00:00 2001 From: Rafael Lopes Date: Thu, 23 Apr 2026 09:28:13 -0300 Subject: [PATCH] =?UTF-8?q?DOCS:=20Atualiza=20README=20e=20crontab=20com?= =?UTF-8?q?=20instru=C3=A7=C3=B5es=20e=20vari=C3=A1veis=20de=20ambiente?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 67 ++++++++++++++++++++++++++++++--------------------- infra/crontab | 2 +- 2 files changed, 41 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index c8f111e..8f65be3 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,5 @@ # 📡 WiFi ETL Pipeline -🚧 **Em construção** 🚧 -Este projeto está em desenvolvimento. Este primeiro commit contém a estrutura base do pipeline ETL. - --- ## 🧠 Visão Geral @@ -107,9 +104,7 @@ Crie um `.env` baseado no exemplo: ```bash cp .env.example .env ``` - -Preencha com suas credenciais (WiFeed já inclusa no `.env`): - +Preencha com suas credenciais (NUNCA commitar o `.env`) ```env # PostgreSQL DB_HOST=localhost @@ -121,14 +116,14 @@ DB_PASSWORD=sua_senha # Ruijie (AP) RUIJIE_BASE_URL=https://cloud-eu.ruijienetworks.com RUIJIE_APPID=seu_appid -RUIJIE_SECRET=seu_secret -RUIJIE_ACCESS_TOKEN= +RUIJIE_SECRET=********** +RUIJIE_ACCESS_TOKEN=********************************** RUIJIE_GROUP_ID=9290679 # WiFeed (autenticação usuários) WIFEED_BASE_URL=https://api.wifeed.com.br -WIFEED_CLIENT_ID=60e40ee2-f39f-4556-8a22-840a2e3fa686 -WIFEED_CLIENT_SECRET=dRpd6FB2hjbyvcA +WIFEED_CLIENT_ID=**********-*****-****-****-************ +WIFEED_CLIENT_SECRET=**************** LOG_LEVEL=INFO ``` @@ -156,11 +151,11 @@ docker run -d --name wifi-db \ docker exec -i wifi-db psql -U postgres -d wifi_etl < infra/init.sql # e) Rode o ETL (uma vez) -python app/main.py +python -m app.main # f) (Opcional) Agende localmente # crontab -e -# */5 * * * * cd /caminho/wifi-etl && /usr/bin/python3 main.py >> /var/log/wifi-etl.log 2>&1 +# */5 * * * * cd /caminho/wifi-etl && PYTHONPATH=. python -m app.main >> /var/log/wifi-etl.log 2>&1 ``` --- @@ -180,26 +175,27 @@ docker-compose exec etl python /app/main.py --- -### 5. **Deploy Automático (CI/CD)** +#### 5. Deploy Automático (CI/CD) -Ao fazer `git push` na branch `main`, o workflow **`.gitea/workflows/deploy.yml`** dispara automaticamente: +Ao fazer `git push` na branch `main`, o workflow executa no runner da VM de produção: -1. **Builda** imagem Docker (`wifi-etl:`) -2. **Salva** como artifact (backup) -3. **Deploy via SSH** no servidor de produção configurado +1. Atualiza o código em `/opt/wifi-etl` +2. Copia o `.env` seguro +3. Rebuilda o container (`docker-compose`) +4. Sobe o serviço automaticamente -#### Configurar Secrets no Gitea +> ⚠️ O deploy roda diretamente na VM (self-hosted runner) -Acesse **Settings → Secrets** do repositório e adicione: -| Nome | Descrição | -|---|---| -| `SSH_PRIVATE_KEY` | Chave privada SSH para acesso ao servidor | -| `SSH_HOST` | IP/hostname do servidor prod (ex: `etl.prod.example.com`) | -| `SSH_USER` | Usuário SSH (ex: `deploy`) | -| `REGISTRY` | (opcional) Registry Docker (ex: `ghcr.io/seu-user`) | -| `REGISTRY_USERNAME` | (opcional) Username do registry | -| `REGISTRY_PASSWORD` | (opcional) Token/Password do registry | +### ⏱️ Agendamento (Cron) + +O ETL é executado a cada 5 minutos via cron dentro do container: + +```bash +*/5 * * * * PYTHONPATH=/app /usr/local/bin/python -m app.main >> /var/log/wifi-etl.log 2>&1 + +``` +⚠️ Importante: o PYTHONPATH=/app é necessário para o cron encontrar os módulos Python. #### Variáveis de Ambiente no Servidor @@ -216,6 +212,7 @@ mkdir -p /opt/wifi-etl --- + ### 6. Consultas Úteis ```sql @@ -243,6 +240,21 @@ WHERE online_time::date = CURRENT_DATE - 1; --- +## 📈 Observabilidade + +Logs do ETL podem ser consultados via: + +```bash +docker exec wifi_etl_worker tail -f /var/log/wifi-etl.log + +``` + +Para ver status do container: +``` bash +docker ps +``` + + ## 📊 Modelo de Dados ``` @@ -302,6 +314,7 @@ watermarks - [x] Docker + cron - [x] CI/CD (push → deploy) - [ ] Retry com backoff nas APIs +- [ ] Automação de envio de erros para equipe - [ ] Testes unitários (pytest) --- diff --git a/infra/crontab b/infra/crontab index 5afbb63..8a0490a 100644 --- a/infra/crontab +++ b/infra/crontab @@ -3,4 +3,4 @@ # Fuso horário: UTC (ajustar se necessário) # A cada 5 minutos: executa o ETL -*/5 * * * * /usr/local/bin/python -m app.main >> /var/log/wifi-etl.log 2>&1 +*/5 * * * * PYTHONPATH=/app /usr/local/bin/python -m app.main >> /var/log/wifi-etl.log 2>&1