בדף הזה מוסבר איך לפתור בעיות ב-Cloud Scheduler.
Cloud Scheduler מפרסם יומנים בתחילת הביצוע של כל משימה ובסוף הביצוע של כל משימה. אתם יכולים לאחזר, לראות ולנתח את היומנים של משימה ספציפית, כולל יומני הביקורת שזמינים ל-Cloud Scheduler. מידע נוסף זמין במאמר בנושא צפייה ביומנים.
כברירת מחדל, כשעבודה ב-Cloud Scheduler לא מקבלת אישור משירות היעד שלה – המטפל בבקשת העבודה – העבודה נחשבת ככזו שנכשלה. Cloud Scheduler ינסה שוב להפעיל את המשימה בהתאם להשהיה מעריכית לפני ניסיון חוזר שהגדרתם.
למידע על אירועים שמשפיעים על שירותים, אפשר לעיין בGoogle Cloud Service Health Dashboard ובכל האירועים שדווחו לגבי Cloud Scheduler. Google Cloud
העבודה נכשלת בגלל בעיה בשירות במורד הזרם
יכול להיות שהכשל במשימה נובע מבעיה בשירות במורד הזרם שמכוון ל-Cloud Scheduler – למשל, Cloud Run – ולא מ-Cloud Scheduler עצמו. אפשר לחשוד בבעיה בשירות במורד הזרם כשמתקיימים התנאים הבאים:
- ההרשאות ל-Cloud Scheduler מוגדרות בצורה נכונה.
- Cloud Scheduler יכול להגיע לשירות היעד.
- הודעות השגיאה ביומני הביצוע של Cloud Scheduler מגיעות משירות downstream.
כדי לפתור את הבעיה, מבצעים את השלבים הבאים:
- הפעלת השירות במורד הזרם ישירות: מוודאים שאפשר להפעיל את השירות במורד הזרם בהצלחה בלי Cloud Scheduler. הפעלה מוצלחת מצביעה על כך ש-Cloud Scheduler הוא כנראה הגורם לבעיה. אם ההפעלה לא מוצלחת, צריך לבצע ניפוי באגים נוסף בשירות במורד הזרם.
- בדיקת היומנים של שירות היעד: בודקים את היומנים של שירות היעד, מזהים את השגיאות שמוצגות ומטפלים בהן בהתאם.
- חיפוש פעולות שפועלות לאורך זמן: כש-Cloud Scheduler מחזיר שגיאת HTTP
504לפעולות שפועלות לאורך זמן (יותר מ-30 דקות), כדאי לבדוק את היומנים של שירות היעד כדי לראות אם ההפעלה הצליחה או נכשלה, כי יכול להיות שלשירות היעד יש פסק זמן ארוך יותר לבקשה. במקרה כזה, הפעולה של Cloud Scheduler תסתיים בטיימ-אאוט, אבל הפעולה של שירות היעד לא תסתיים בטיימ-אאוט.
העבודה נכשלת בגלל שגיאת הרשאה
ההרשאות קובעות לאילו גורמים ראשיים יש גישה למשאבים ואילו פעולות מותרות. הרשאות שהוגדרו בצורה שגויה עלולות לשבש את ההרצה של משימות ולהוביל לשגיאות של דחיית הרשאה. יומני ביקורת מספקים רשומה מפורטת של כל שינויי ההרשאות, ומאפשרים לכם לזהות את המקור של הבעיות האלה.
אם משימה של Cloud Scheduler נכשלת בגלל שגיאת הרשאה, יכול להיות שביומני הביצוע יוצג מסר שדומה ל-"debugInfo":"URL_ERROR-ERROR_OTHER. Original HTTP response code number = 403".
כדי לפתור את הבעיה, צריך להשלים אחת או יותר מהפעולות הבאות:
מאמתים את תפקידי ה-IAM שהוקצו לסוכן השירות: לסוכן השירות של Cloud Scheduler נדרש התפקיד Cloud Scheduler Service Agent (
roles/cloudscheduler.serviceAgent). ללא התפקיד הזה, משימות Cloud Scheduler נכשלות. אתם יכולים להקצות את התפקיד לסוכן השירות של Cloud Scheduler באופן ידני. נדרשת הענקה ידנית רק אם הפעלתם את Cloud Scheduler API לפני 19 במרץ 2019, או אם הסרתם את התפקיד Cloud Scheduler Service Agent. מידע נוסף זמין במאמר הענקת התפקיד Cloud Scheduler Service Agent.אימות ההרשאות של חשבון השירות: צריך לוודא שלחשבון השירות שמצורף לעבודה יש את ההרשאות וההיקף הנכונים להפעלת שירות היעד. זה כולל תרחישים שבהם היעד נמצא בפרויקט אחר, או שהוא היעד הסופי של שירות ביניים. אם היעד נמצא בתוך Google Cloud, צריך לוודא שהענקתם את התפקידים הנדרשים לחשבון השירות. כל שירות בתוך Google Cloud דורש תפקיד ספציפי, והשירות המקבל מאמת אוטומטית את האסימון שנוצר. לדוגמה, כדי להשתמש ב-Cloud Run ובפונקציות Cloud Run, צריך להקצות את התפקיד
Cloud Run Invoker. אם היעד נמצא מחוץ ל- Google Cloud, שירות הקבלה צריך לאמת את האסימון באופן ידני. מידע נוסף זמין במאמרים אימות ל-Cloud Scheduler ושימוש באימות עם HTTP Target.בודקים אם יש הפרות של VPC Service Controls: VPC Service Controls הוא תכונה שמאפשרת להגדיר גבולות גזרה מאובטחים כדי להגן מפני זליגת נתונים. Google Cloudכדי לדעת אם השגיאה קשורה ל-VPC Service Controls, צריך לבדוק אם הפעלתם את השירות והגדרתם אותו בפרויקטים ובשירותים שבהם אתם מנסים להשתמש. כדי לבדוק אם הפרויקטים והשירותים מוגנים על ידי VPC Service Controls, בודקים את מדיניות VPC Service Controls ברמה הזו של היררכיית המשאבים.
כדי להבין את היקף הבעיה, אפשר לאחזר שגיאות של VPC Service Controls מיומני ביקורת.
-
במסוף Google Cloud , נכנסים לדף Logs Explorer:
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Logging.
מריצים שאילתה ביומני הביקורת לפי הקריטריונים הבאים:
severity="ERROR" AND protoPayload.status.details.violations.type="VPC_SERVICE_CONTROLS"
באופן ספציפי, הודעות השגיאה עשויות לכלול את הטקסט הבא:
Request is prohibited by organization's policyRequest violates VPC Service Controls
מידע נוסף על בעיות שאתם עשויים להיתקל בהן כשמגדירים VPC Service Controls זמין במאמר פתרון בעיות נפוצות.
-
אימות של נקודות קצה פרטיות: Cloud Scheduler יכול להפעיל רק נקודות קצה פרטיות מסוימות, כמו Cloud Run, פונקציות Cloud Run ו-API של Google Cloud בתוך היקף של VPC Service Controls. בודקים את הגדרות הכניסה של שירות היעד – לדוגמה, אפשר לעיין במאמר הגבלת כניסה לרשת ב-Cloud Run – ואת ההרשאות של חשבון השירות המצורף. יכול להיות שתקבלו הודעת שגיאה.
URL_ERROR-ERROR_DNSמידע נוסף זמין בקטע העבודה נכשלת בגלל יעד שלא ניתן להגיע אליו.
העבודה נכשלת בגלל שאי אפשר להגיע ליעד
הבעיה הזו מתרחשת כשהעבודה של Cloud Scheduler נכשלת כי אי אפשר להגיע ליעד. השגיאות ביומני הביצוע מתחילות ב-URL_ERROR או ב-URL_UNREACHABLE.
כדי לפתור את הבעיה, בהתאם להודעת השגיאה שקיבלתם, מבצעים אחת מהבדיקות הבאות:
URL_ERROR-ERROR_AUTHENTICATION: מוחזרת שגיאת HTTP401 (Unauthorized)או HTTP407 (Proxy Authentication Required). יעד היעד דורש אימות, אבל הבקשה של Cloud Scheduler לא כוללת טוקן אימות תקין – למשל, חסר בבקשה כותרת הרשאה או שפרטי הכניסה לא תקינים. בודקים את הגדרות האימות של העבודה. מידע נוסף זמין במאמרים אימות ל-Cloud Scheduler ושימוש באימות עם HTTP Target.
URL_ERROR-ERROR_DNS: מציין שאחזור של כתובת URL נכשל כי לא הייתה אפשרות לפענח את שם המארח באמצעות מערכת שמות הדומיין (DNS) – לדוגמה, שם המארח לא קיים או שאין לו כתובת IP משויכת. יכול להיות שהודעת השגיאה תכלול את הטקסטOriginal HTTP response code number = 0. בודקים את התוקף של שם המארח, וכשמפעילים נקודת קצה פרטית, מוודאים שהיא נתמכת על ידי Cloud Scheduler ובודקים את הגדרות הכניסה שלה.
URL_ERROR-ERROR_NOT_FOUND: שרת האינטרנט מחזיר שגיאת HTTP404 Not Found. בודקים אם כתובת ה-URL של היעד נכונה והמשאב קיים.
URL_ERROR-ERROR_OTHER: זו שגיאת HTTP כללית4xxשלא פורטה קודם. בודקים את היומנים כדי לאחזר את קוד תגובת ה-HTTP המקורי. אם מתקבלת שגיאת HTTP403, אפשר לעיין בקטע העבודה נכשלת עם שגיאת הרשאה במסמך הזה.
URL_UNREACHABLE-UNREACHABLE_5xx: יעד ההפניה מחזיר שגיאת HTTP5xxאו429. יכול להיות שמדובר במצב זמני – למשל, שרת עמוס מדי. כדאי לבדוק את היומנים של יעד היעד כדי לנפות את הבאג.
URL_UNREACHABLE-UNREACHABLE_CONNECTION_RESET: החיבור אופס על ידי העמית. בודקים אם יש בעיה בצד השרת החיצוני.
URL_UNREACHABLE-UNREACHABLE_ERROR: מציין שגיאה ברשת. בודקים אם כתובת היעד נכונה ואם יש כללי חומת אש שחוסמים את הגישה.
יעד לא נתמך כשמשתמשים בהיקף מאובטח
כש-Cloud Scheduler הוא שירות מוגבל במתחם היקפי של VPC Service Controls, כל ניסיון ליצור או לעדכן משימה עם יעד לא נתמך ייכשל עם קוד השגיאה TARGET_TYPE_NOT_PERMITTED_FOR_VPC. מידע נוסף זמין במאמר בנושא אבטחת משימות cron באמצעות VPC Service Controls.
בעיות בביצוע המשימות
משימות של Cloud Scheduler מופעלות בזמנים מוגדרים או במרווחי זמן קבועים. יכול להיות שיתרחשו הבעיות הבאות בזמן שמשימה מתבצעת.
תהליך שהיה תקין בעבר מפסיק לפעול
הבעיה הזו מתרחשת כשמשימה של Cloud Scheduler שרצה בהצלחה בעבר מפסיקה לפעול כי Cloud Scheduler API מושבת. כדי לוודא מתי הושבת ה-API, אפשר לשלוח שאילתה ליומני הביקורת לפי הקריטריונים הבאים:
resource.type="audited_resource" AND protoPayload.serviceName="cloudscheduler.googleapis.com" AND operation.producer="serviceusage.googleapis.com" AND protoPayload.authorizationInfo.permission="serviceusage.services.disable"
כדי לפתור את הבעיה, צריך להפעיל את Cloud Scheduler API.
הביצועים הבאים של המשימה לא מתחילים
הבעיה הזו מתרחשת כשעבודה עדיין פועלת או ממתינה לתשובה מהיעד שלה. ריצות מתוזמנות אחרות של העבודה מדלגות עד שהריצה הנוכחית מסתיימת או עד שחלף הזמן הקצוב שלה.
ברשומות ביומן, מחפשים את הרשומה האחרונה של type.googleapis.com/google.cloud.scheduler.logging.AttemptStarted ואת הרשומה התואמת של type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished. אם הרשומה AttemptFinished חסרה או מופיעה אחרי ההפעלה המתוזמנת הבאה של העבודה, ההפעלות הממתינות האחרות נחסמות ולא יתחילו. בהתאם לתזמון של העבודה, יכול להיות שזה ימנע את ההתחלה של כמה עבודות. כדי לבדוק את הבעיה לעומק, צריך לוודא שאין זמן קצוב לתפוגה ביעד של העבודה, ולבדוק אם היעד נתקל בבעיות כלשהן.
חשוב לדעת: בכל רגע נתון צריך להריץ רק מופע אחד של משימה. במקרים נדירים, יכול להיות שיישלחו בקשות לכמה מופעים של אותה משימה. לכן, המטפל בבקשות צריך להיות אידמפוטנטי, והקוד צריך לוודא שלא יהיו תופעות לוואי מזיקות אם זה יקרה.
הביצוע של משימה הופך להיות לא סדיר בגלל שעון קיץ
כשיוצרים משימה ב-Cloud Scheduler באמצעות מסוף Google Cloud , צריך לציין אזור זמן. כשמשתמשים ב-Google Cloud CLI, אפשר לציין אזור זמן באמצעות הדגל --time-zone. אחרת, אזור הזמן שמוגדר כברירת מחדל הוא UTC או UTC.
הבעיה הזו מתרחשת כשמגדירים משימה עם אזור זמן שאינו UTC, והביצוע שלה הופך ללא סדיר בגלל שינויים בשעון הקיץ (DST). זו התנהגות צפויה.
אם העבודה שלכם דורשת קצב מדויק מאוד, כדאי לבחור אזור זמן שלא חל בו שעון קיץ. כדי להימנע מהבעיה לחלוטין, צריך להגדיר את לוח הזמנים של העבודה כך שישתמש באזור הזמן UTC.
מידע נוסף זמין במאמר בנושא פורמט של משימת Cron ואזור זמן.
המאמרים הבאים
אם לא מצאתם פתרון לבעיה שלכם במסמכי התיעוד של Cloud Scheduler, תוכלו לנסות את האפשרויות הבאות:
- אפשר לקבל תמיכה מהקהילה על ידי פרסום שאלות ב-Stack Overflow או חיפוש בעיות דומות באמצעות התג
google-cloud-scheduler. - כדי לפתוח בקשת תמיכה, צריך לפנות אל Google Cloud Customer Care.
- אפשר לפתוח באג או הגשת בקשה להוספת תכונה באמצעות הכלי הציבורי למעקב אחר בעיות.
מידע נוסף זמין במאמר בנושא תמיכה ב-Cloud Scheduler.