بديل cron
احتفظ ببساطة cron وأضف عناصر التحكم التي تحتاجها بيئة الإنتاج.
يبقي Dagu الجداول الزمنية قريبة من سكربتاتك ويضيف graphs للـ dependencies وretries وlogs وhistory وreruns اليدوية و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]جداول على نمط cron داخل YAML
Dependencies بين الخطوات بدلاً من shell chains
إعادة تشغيل الخطوات الفاشلة من دون SSH يدوي
History وlogs داخل Web UI
At a glance
Cron مقابل Dagu
Step graph أصلي.
Shell chains وlock files وwrappers.
سياسات retry لكل خطوة.
Loops مخصصة أو reruns يدوية.
Web UI وlogs وstatus وhistory.
System logs واتفاقيات يدوية.
In depth
Where each tool fits
cron بسيط حتى تبدأ jobs بالاعتماد على بعضها
حالما تحتاج المهمة المجدولة إلى retries أو التقاط المخرجات أو ترتيب التنفيذ أو history واضحة، يتحول cron إلى مجموعة من wrapper scripts.
- نمذج كل command كخطوة ذات اسم
- استخدم dependencies بدلاً من shell chains الطويلة
- افحص المخرجات الفاشلة وأعد التشغيل من Web UI
لا حاجة إلى migration لمنصة كاملة
يشغّل Dagu السكربتات الموجودة لديك كما هي. يمكن أن يبدأ أول migration من nightly job واحدة فقط.
- احتفظ بـ Bash وPython وGo وJava وPHP وPerl
- انقل الجداول إلى YAML قابل لإدارة النسخ
- أضف timeouts وretries تدريجياً
رؤية تشغيلية بشكل افتراضي
يجمع Dagu حالة التنفيذ التي يبعثرها cron عادة بين syslog وملفات مخصصة ومعرفة الفريق.
- اعرض الحالة الحالية وhistory وlogs
- نفّذ يدوياً من دون الدخول إلى الخادم
- استخدم notifications وخطوات لاحقة لمعالجة الفشل
FAQ
Practical questions before adopting Dagu
هل يدعم Dagu صيغة cron؟
نعم. يمكنك استخدام تعابير cron المألوفة مع الحصول على حالة workflow والتحكم في الخطوات.
هل يجب أن أعيد كتابة سكربتات cron؟
لا. ضع الأمر الحالي داخل خطوة Dagu ثم أضف dependencies وretries وnotifications عند الحاجة.
هل يحتاج إلى Kubernetes؟
لا. يمكن أن يبدأ Dagu كعملية واحدة على جهاز عادي ثم يتوسع لاحقاً إلى التنفيذ الموزع.
Next step
Start with one workflow.
Install Dagu, move one fragile script or agent task into YAML, and decide from a real run history.