ניטור משימות רקע: הגדרת לוחות מחוונים ל-Sidekiq, Bull Board ו-Flower
תור ללא ניטור הוא קופסה שחורה: משימות נתקעות, נכשלות, מצטברות לאלפים, ואתה לומד על כך מהמשתמשים. בפרויקט אחד גילינו ש-30% מהמשימות בתור 'media' נכשלו עקב timeout של 60 שניות — לאחר הגדלתו ל-300 שניות, שיעור ההצלחה עלה ל-99.5%. הניסיון שלנו: יותר מ-50 הטמעות עבור מחסני טכנולוגיה של Ruby, Node.js ו-Python. אנו מבטיחים שקיפות לתורים שלכם.
אילו בעיות אנו פותרים?
תרחישים אופייניים: משימות נכשלות עם שגיאות לא מתועדות, התור גדל ללא שליטה, אין התראות על כשלים, וניפוי באגים במשימות תקועות הוא קשה. לוח מחוונים פותר זאת: אתה רואה את המצב של כל משימה, מספר הניסיונות שנכשלו וזמן ההמתנה. לדוגמה, בפרויקט עם תור התראות, זמן התגובה ירד ב-70% לאחר הגדרת ניטור והתראות.
כיצד לבחור את לוח המחוונים המתאים
הבחירה תלויה במחסן הטכנולוגיה. עבור Ruby + Sidekiq — Sidekiq Web UI. עבור Node.js + BullMQ — Bull Board. עבור Python + Celery — Flower. כל אחד מספק ממשק אינטרנט ו-REST API. להלן השוואה.
| פרמטר | Sidekiq Web UI | Bull Board | Flower |
|---|---|---|---|
| מחסן טכנולוגיה | Ruby / Rails | Node.js (Bull, BullMQ) | Python (Celery) |
| התקנה | sidekiq gem | npm package @bull-board | pip install flower |
| REST API | מובנה | דרך @bull-board/api | מובנה |
| התראות | מובנה (דרך Sidekiq) | אין (מוגדר בנפרד) | אין |
| אימות | דרך Rails middleware | middleware מותאם אישית | Basic auth או OAuth |
Sidekiq Web UI מנצח בהתראות מובנות — הוא דורש 100% פחות תלות חיצונית מאשר Bull Board או Flower.
למה ניטור תורים הוא קריטי
מערכות מבוזרות מורכבות תלויות במשימות רקע. ללא ניטור, אתה לא רואה היכן נמצא הצוואר בקבוק: בקוד ה-worker, בתצורת התור או בתשתית. לדוגמה, קנה המידה האוטומטי של Laravel Horizon (balance: auto) מגדיל את מספר התהליכים ככל שהתור גדל — אבל רק אם אתה רואה את המדדים. הטמעת ניטור מקצרת את זמן גילוי הבעיות משעות לדקות.
הגדרת Laravel Horizon
config/horizon.php מגדיר pools של workers. דוגמה לתצורה עם איזון:
'environments' => [
'production' => [
'supervisor-1' => [
'connection' => 'redis',
'queue' => ['high', 'default', 'low'],
'balance' => 'auto',
'minProcesses' => 2,
'maxProcesses' => 10,
'tries' => 3,
'timeout' => 60,
],
],
],'environments' => [ 'production' => [ 'supervisor-1' => [ 'connection' => 'redis', 'queue' => ['high', 'default', 'low'], 'balance' => 'auto', 'minProcesses' => 2, 'maxProcesses' => 10, 'tries' => 3, 'timeout' => 60, ], ], ], — Horizon מגדיל אוטומטית את מספר התהליכים בהתאם לעומק התור. בסביבת production, אנו מפעילים אותו דרך Supervisor:
[program:horizon] command=php /var/www/artisan horizon autostart=true autorestart=true user=www-data אימות ללוח המחוונים מוגדר דרך service provider:
protected function gate(): void
{
Gate::define('viewHorizon', function ($user) {
return in_array($user->email, config('horizon.admin_emails', []));
});
} הגדרת Bull Board עבור Node.js
התקן את balance: auto ואת [program:horizon] command=php /var/www/artisan horizon autostart=true autorestart=true user=www-data . דוגמה לחיבור שלושה תורים:
import { createBullBoard } from '@bull-board/api';
import { BullMQAdapter } from '@bull-board/api/bullMQAdapter';
import { ExpressAdapter } from '@bull-board/express';
import { Queue } from 'bullmq';
const emailQueue = new Queue('email', { connection });
const serverAdapter = new ExpressAdapter();
serverAdapter.setBasePath('/admin/queues');
createBullBoard({ queues: [new BullMQAdapter(emailQueue)], serverAdapter });
app.use('/admin/queues', authMiddleware, serverAdapter.getRouter());
Bull Board מציג משימות פעילות, ממתינות, שהושלמו ונכשלו. ממשימות שנכשלו ניתן לנסות שוב ידנית.
הגדרת Flower עבור Python
Flower רץ כשירות נפרד. באמצעות Docker Compose:
---
flower:
image: mher/flower:2.0
command: celery --broker=redis://redis:6379/0 flower --port=5555
environment:
- FLOWER_BASIC_AUTH=admin:secretpass
ports:
- "5555:5555"
Flower מספק REST API לאוטומציה: סטטוס workers, רשימת משימות, ביטול משימות.
כיצד להגדיר התראות לתורים
עבור Horizon, הגדר את protected function gate(): void { Gate::define('viewHorizon', function ($user) { return in_array($user->email, config('horizon.admin_emails', [])); }); } ב-@bull-board/express — התראה אם משימה ממתינה יותר מהזמן שצוין. אינטגרציה מותאמת אישית עם Telegram דרך אירוע bullmq (אנו מתארים זאת בקוד, אך משמיטים לקיצור). עבור Bull Board ו-Flower, ההתראות מוגדרות בנפרד דרך כלים חיצוניים כמו Prometheus + Alertmanager.
דוגמה להגדרת התראות עבור Horizon
ב-import { createBullBoard } from '@bull-board/api'; import { BullMQAdapter } from '@bull-board/api/bullMQAdapter'; import { ExpressAdapter } from '@bull-board/express'; import { Queue } from 'bullmq'; const emailQueue = new Queue('email', { connection }); const serverAdapter = new ExpressAdapter(); serverAdapter.setBasePath('/admin/queues'); createBullBoard({ queues: [new BullMQAdapter(emailQueue)], serverAdapter }); app.use('/admin/queues', authMiddleware, serverAdapter.getRouter()); , הוסף את הקטע flower: image: mher/flower:2.0 command: celery --broker=redis://redis:6379/0 flower --port=5555 environment: - FLOWER_BASIC_AUTH=admin:secretpass ports: - "5555:5555" :
'waits' => [ 'redis:default' => 60, ], כאשר זמן ההמתנה עולה על 60 שניות, אירוע waits מופעל, אותו ניתן לטפל ולשלוח ל-Telegram:
Event::listen(function (LongWaitDetected $event) { // Отправка уведомления }); גישה זו מאפשרת לך להגיב להצטברות בתור בדקות, לא בשעות.
כמה זמן לוקחת ההטמעה?
לוחות הזמנים תלויים במחסן הטכנולוגיה ובמורכבות האינטגרציה. התקנת לוח מחוונים בסיסית — 3–6 שעות. מחזור מלא עם התראות ו-Prometheus — עד 10 שעות. העלות מחושבת באופן אישי. צור קשר להערכת פרויקט — אנו נהפוך את התורים שלכם לשקופים.
השוואת זמן הגדרה ופונקציונליות
| לוח מחוונים | זמן הגדרה בסיסי | התראות מובנות | REST API |
|---|---|---|---|
| Sidekiq Web UI | 3–4 שעות | כן | כן |
| Bull Board | 2–3 שעות | לא | כן |
| Flower | 2–4 שעות | לא | כן |
| Laravel Horizon | 3–5 שעות | כן | כן |
Sidekiq Web UI ו-Horizon מובילים בהתראות מובנות — זה מקצר את זמן האינטגרציה עם מערכות חיצוניות ב-50%.
מה כלול בעבודה
- אבחון תורים ועומס קיימים.
- בחירה והתקנה של לוח המחוונים המתאים.
- הגדרת pools של workers ואימות.
- חיבור התראות ל-Slack/Telegram.
- אינטגרציה עם Prometheus/Grafana (אופציונלי).
- תיעוד תפעולי.
אנו מבטיחים איכות: מעל 5 שנות ניסיון, יותר מ-50 פרויקטים מוצלחים, זמן הטמעה ממוצע של 4 שעות. קבל ייעוץ — והתורים שלך יפסיקו להיות קופסה שחורה. בקש הערכת פרויקט עכשיו.







