Alternativa ao cron
Mantenha a simplicidade do cron e adicione os controles que produção exige.
O Dagu mantém os agendamentos próximos dos seus scripts enquanto adiciona grafo de dependências, retries, logs, histórico, reruns manuais e Web UI.
name: nightly-ops
schedule: "0 2 * * *"
steps:
- id: extract
run: python scripts/extract.py
- id: transform
run: ./bin/transform
retry_policy:
limit: 3
depends: [extract]
- id: notify
run: ./scripts/slack-success.sh
depends: [transform]Agendamentos estilo cron em YAML
Dependências de etapas no lugar de cadeias shell
Rerun de etapas falhas sem SSH manual
Histórico e logs em uma Web UI
At a glance
Cron vs. Dagu
Grafo de etapas nativo.
Cadeias shell, arquivos de lock e wrappers.
Políticas de retry por etapa.
Loops customizados ou rerun manual.
Web UI, logs, status e histórico.
Logs do sistema e convenções feitas à mão.
In depth
Where each tool fits
Cron é simples até os jobs dependerem uns dos outros
Quando um script agendado precisa de retries, captura de saída, ordem de execução ou histórico legível, o cron vira um acúmulo de wrappers.
- Modele cada comando como uma etapa nomeada
- Use dependências em vez de cadeias shell longas
- Inspecione a saída falha e rode rerun pela Web UI
Não é preciso migração de plataforma
O Dagu executa os scripts que você já tem. A primeira migração pode começar por um único job noturno.
- Mantenha jobs em Bash, Python, Go, Java, PHP ou Perl
- Leve os agendamentos para YAML versionado
- Adicione timeouts e retries gradualmente
Visibilidade operacional por padrão
O Dagu reúne o estado de execução que o cron normalmente espalha entre syslog, arquivos customizados e conhecimento tribal.
- Veja status atual, histórico e logs
- Acione execuções manuais sem entrar no host
- Use notificações e etapas seguintes para lidar com falhas
FAQ
Practical questions before adopting Dagu
O Dagu usa sintaxe cron?
Sim. Você pode definir agendamentos com expressões cron familiares e ainda ganhar estado de workflow e controles por etapa.
Preciso reescrever meus scripts cron?
Não. Coloque o comando existente em uma etapa do Dagu e depois adicione dependências, retries e notificações quando precisar.
Ele precisa de Kubernetes?
Não. O Dagu pode começar como um único processo em uma máquina comum e evoluir para execução distribuída quando necessário.
Next step
Start with one workflow.
Install Dagu, move one fragile script or agent task into YAML, and decide from a real run history.