פתרון בעיות בכללי הזיהוי

נתמך ב:

שגיאות זמן ריצה יכולות להתרחש במהלך הפעלת הכלל ולמנוע את ההפעלה שלו. במאמר הזה מוסבר איך לפתור כמה בעיות נפוצות בזמן הריצה.

  • כדי למנוע שגיאות זמן ריצה, אתם יכולים לבדוק את הכללים לפני הפריסה. לוחצים על Run Test בכלי לעריכת כללים. אם מזוהה שגיאה, לוחצים על הקישור לשגיאה כדי לקבל פרטים.

  • אם מתרחשת שגיאה במהלך הפעלת הכלל, אפשר ללחוץ על הקישור לשגיאה בדף Detections כדי לקבל פרטים נוספים.

שגיאות תחביר ושגיאות לוגיות בשאילתות

השגיאות האלה קורות כשמבנה השאילתה לא תקין, מורכב מדי או משתמש בסוגי נתונים לא תואמים.

הודעת השגיאה הסיבה הבסיסית רזולוציה
Too many `OR` and `AND` operations השאילתה מכילה ביטויים או לוגיקה עם רמות עמוקות של קינון, שחורגות ממגבלות המקום במחסנית.

לפשט את התנאים של הכלל.

לפצל לוגיקה מורכבת לחלקים קטנים יותר.

Query is too long השאילתה דורשת יותר מדי מקום במחסנית כדי לעבד אותה. לפצל את הלוגיקה לכמה כללים.
Accessing a new field that did not exist for this time range הכלל מתייחס לשדה שנוסף לאחרונה לסכימה, אבל הכלל פועל בטווח זמן שבו השדה הזה לא היה קיים.

משנים את טווח התאריכים כך שיתחיל אחרי שהשדה היה קיים.

צריך לשנות את הכלל כדי לטפל במקרים שבהם השדה ריק או חסר.

Invalid subnet CIDR בחלק מהפונקציות נתקלנו בטווח Classless Inter-Domain Routing (CIDR) שלא ניתן לנתח צריך לבדוק את הפורמט של טווחי ה-CIDR בכלל.
Invalid IP address בחלק מהפונקציות זוהתה כתובת IP לא תקינה. צריך לוודא שערך השדה מכיל פורמט תקין של כתובת IP
Map access for reading label does not support duplicate map keys חלק מהפונקציות ניסו לגשת לאלמנטים ממבנה דמוי מפה (לדוגמה, שדות נוספים) שבו קיימים מפתחות כפולים (לא מותר בפעולה).

בודקים אם יש מפתחות כפולים במקור הנתונים.

להתאים את הלוגיקה של הכלל כדי לטפל במאפיין הזה של הנתונים.

Invalid regular expression הביטוי הרגולרי שמשמש בפונקציות כמו re.regex() לא תקין.

מתקנים את התחביר של הביטוי הרגולרי.

Invalid re.replace() שימוש שגוי ב-re.regex(), בדרך כלל בגלל חוסר התאמה בין ביטויי משנה בסוגריים לבין הפניות במחרוזת ההחלפה. צריך לוודא שסכימת השכתוב ב-re.regex() תואמת לביטויי המשנה בסוגריים בביטוי הרגולרי.
Integer overflow in sum() aggregation סכום הערכים חורג מהמגבלה המקסימלית למספרים שלמים רגילים. צריך להמיר את השדה לסוג נקודה צפה (floating-point) לפני הסיכום (לדוגמה, באמצעות sum(0.0 + $e.field)).
Cannot complete [arithmetic/mod] operation between unsigned and signed integer הכלל מנסה לבצע פעולות אריתמטיות (+, -, *) או פעולות מודולו (%) בין סוגים שונים של מספרים שלמים.

אפשר להשתמש ב-cast.as_int() או ב-cast.as_uint() כדי להמיר אופרנד אחד כך שיתאים לשני. צריך להשתמש בהמרה מפורשת לאופרטור המודולו (%), שמקבל רק מספרים שלמים. בפעולות +, - או *, אפשר גם לאלץ את הקבוע של המספר השלם להתנהג כמספר ממשי באמצעות ליטרל של נקודה צפה, כמו 2.0 או 100.0, או אילוץ חלוקה, כמו (2/1), בביטויים ללא אופרטורים אחרים של / באותה שורה.

אילוץ ההקלדה הזה מתרחש כשביטוי משלב ערכים מילוליים של מספר שלם עם סימן (INT64) עם שדות של Unified Data Model (UDM) של מספר שלם ללא סימן (UINT64), כמו network.received_bytes,‏ network.sent_bytes ו-principal.file.size. האילוץ חל גם על הקטע events וגם על הקטע outcome, כולל בתוך צבירות של sum() או max(). כלל עם שילוב של חשבון מספרים שלמים עם סימן ובלי סימן עשוי להישמר בלי שגיאת תחביר, ולהיכשל רק בזמן הריצה או כשבודקים את הכלל. מידע נוסף זמין במאמר פעולות חשבון עם שדות אירועים לא חתומים.

מגבלות על משאבים ושגיאות בביצועים

השגיאות האלה מציינות שהשאילתה כבדה מדי לעיבוד במערכת.

הודעת השגיאה הסיבה הבסיסית רזולוציה
Request was throttled, please try again later הכלל דורש יותר זיכרון או כוח עיבוד ממה שהוקצה (בדרך כלל בגלל איחודים מורכבים, צבירות גדולות או סינון לא מספיק). להוסיף מסננים ספציפיים יותר לקטע האירועים.
Not enough memory for aggregation הייתה חריגה מהמגבלה של aggregate_memory_limit. כדי לבצע אופטימיזציה של צבירות הנתונים, צריך לצמצם את מספר המפתחות בקטע match.
Spilled bytes exceed limit השאילתה מנסה לעבד יותר מדי אירועים. כדי לבצע אופטימיזציה של השאילתה, אפשר להוסיף מסננים, למשל לפי metadata.log_type.
Your query resource usage is exceeding its allocation השאילתה בוטלה על ידי מנהל המשאבים כי היא השתמשה ביותר מדי משאבים. כדי לבצע אופטימיזציה של השאילתה, אפשר להוסיף מסננים, למשל לפי metadata.log_type.

גישה לנתונים ושגיאות מערכת

השגיאות האלה הן בדרך כלל זמניות או קשורות למאגר הנתונים בקצה העורפי.

הודעת השגיאה הסיבה הבסיסית רזולוציה
Error reading files בעיות זמניות בגישה לנתונים הבסיסיים. נסו שוב מאוחר יותר. אם השגיאה נמשכת, פנו לתמיכה.
Error reading database בעיות זמניות בגישה לנתונים הבסיסיים. נסו שוב מאוחר יותר. אם השגיאה נמשכת, פנו לתמיכה.
Internal error בעיה זמנית במערכת. נסו שוב מאוחר יותר. אם השגיאה נמשכת, פנו לתמיכה.
Unknown error הודעת שגיאה שמוצגת כברירת מחדל כשלא מוגדר קוד שגיאה פנימי ספציפי. נסו שוב מאוחר יותר. אם השגיאה נמשכת, פנו לתמיכה.
Request was throttled, please try again later יש עומס כבד על המערכת. נסו שוב מאוחר יותר.

שגיאות לא ידועות בזמן ריצה

יכול להיות שתיתקלו בשגיאות לא ידועות בזמן הריצה, בלי תיאור. במקרה כזה, פנו אל התמיכה של Google SecOps.

הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.