Managed Airflow Agent יכול לעזור לכם להבין, לאבחן ולפתור בעיות במשימות של Airflow ובריצות של DAG שנכשלו.
לפני שמתחילים
- ל-API של ניתוח שיחות שמופעל על ידי Managed Airflow Agent יש מדיניות משלו בנושא מיקום אחסון הנתונים. יכול להיות שהשיחה שלכם תטופל באזור שונה מהמיקום של הסביבה שלכם.
בדיקת משימות Airflow שנכשלו או הפעלות DAG שנכשלו
כדי לחקור משימת Airflow שנכשלה או הרצה של DAG:
נכנסים לדף Environments במסוף Cloud de Confiance .
בוחרים סביבה כדי לראות את הפרטים שלה.
בדף Environment details, עוברים לכרטיסייה DAGs.
לוחצים על השם של DAG.
בדף פרטי DAG, עוברים לכרטיסייה היסטוריית ההרצה.
איתור של הרצת DAG שנכשלה. אתם יכולים לבדוק הפעלה של DAG שלם או משימה ספציפית שנכשלה:
כדי לחקור הפעלה של DAG:
לוחצים על חקירה לצד השם של הפעלת ה-DAG שנכשלה.
בתיבת הדו-שיח Investigate DAG run failure (בדיקת כשל בהרצת DAG), לוחצים על Investigate (בדיקה).
כדי לחקור משימה ב-Airflow:
לוחצים על השם של הרצת ה-DAG שנכשלה כדי להציג רשימה של משימות.
בעמודה State של משימת Airflow שנכשלה, לוחצים על Investigate.
בתיבת הדו-שיח Investigate task failure (חקירת כשל במשימה), לוחצים על Investigate (חקירה).
החלונית Ask agent נפתחת ו-Managed Airflow מתחיל לבדוק את הכשל בהרצת ה-DAG. מחכים עד שהסוכן יסיים את הניתוח ואז בודקים את דוח האבחון, שמורכב מכמה חלקים:
- בעיה: תיאור של שורש הבעיה.
- הוכחות הן ממצאים ספציפיים שתומכים במסקנות של הסוכן.
- המלצה כוללת שלבים ספציפיים לפתרון הבעיה.
דוגמה לחקירה
בדוגמה הזו מוצג תהליך של ניתוח משימה שנכשלה.
במרכז הבקרה DAG Statistics (נתונים סטטיסטיים של DAG) בדף Monitoring (מעקב) >, בודקים את הנתונים של הפעלות DAG שנכשלו:
איור 1. גרף של הפעלות DAG שהושלמו (לחיצה להגדלה) עוברים לכרטיסייה DAGs (תרשימי זרימה מכווני מחזורים). בעמודה Failed runs (1h) (הפעלות שנכשלו (שעה)) אפשר לראות של-DAG
create_large_txt_file_print_logsהיו כמה הפעלות שנכשלו בשעה האחרונה. לוחצים על השם של ה-DAG.
איור 2. רשימה של תרשימי DAG עם נתונים סטטיסטיים של הפעלות DAG (לחצו להגדלה) לוחצים על אחת מהרצות ה-DAG שנכשלו ואז לוחצים על Investigate (חקירה) לצד הרשומה של משימת Airflow שנכשלה.
איור 3. רשימת המשימות בתרשימי ה-DAG שנכשלו (אפשר ללחוץ כדי להגדיל) מחכים עד שהסוכן יסיים את הדוח.
בודקים את דוח האבחון. בדוגמה הזו, המשימה נכשלה בלי ליצור יומנים, אבל Managed Airflow Agent הצליח למצוא את הסיבה לכישלון ביומנים של מתזמן Airflow, שבהם המשימה הופסקה כזומבי:
### **1. Problem** The task `create_huge_file` in DAG `dag_simulation` failed because the Airflow worker executing it ran out of memory (OOM). This caused the task container or process to be abruptly terminated, preventing it from sending heartbeats to the scheduler. As a result, the scheduler detected it as a zombie task and marked it as failed. ### **2. Evidence** * **Scheduler Log (Zombie Detection)**: Detected a task instance without a heartbeat: filepath='dag-simulation.py' bundle_name='dags-folder' bundle_version=None msg="{'DAG Id': 'dag_simulation', 'Task Id': 'create_huge_file', 'Run Id': 'manual__2026-11-25T12:42:50.190250+00:00', 'Hostname': 'airflow-worker-2lxm2', 'External Executor Id': 'cfc98619-0de6-4699-96e6-7ba8a5a581aa'}" * ...לבסוף, בודקים את ההמלצות המוצעות. הנציג של Managed Airflow מסכם את ההוכחות ומספק המלצות לפתרון הבעיה. בדוגמה הזו, המשימה נכשלה כי לעובד של Airflow לא היו מספיק משאבים לעיבוד שלה. הדבר נתמך על ידי ראיות לכך ש-Pod של העובד הופעל מחדש מספר פעמים עם שגיאת OOM, והמשימה הופסקה לאחר מכן על ידי המתזמן כמשימת זומבי.
### **3. Recommendation** To resolve this issue, you must prevent the task from consuming unbound memory. Depending on your workflow: * **Fix Code Logic (Highly Recommended)**: Avoid loading large datasets completely into worker memory. Implement chunk-based processing or streaming, or set up explicit safety limits. For example, if you need to limit memory allocation or process in bounded batches, do not keep references to old chunks in memory: ... * **Scale Worker Memory**: If processing massive datasets in memory is unavoidable, consider upgrading the resource limits (RAM/CPU) of your Airflow worker pools or offloading the heavy processing step to external services.