שדרוג של תיקיית יומנים לשימוש ב-Observability Analytics מאפשר להריץ שאילתות SQL כדי לנתח את נתוני היומן שמאוחסנים בתיקייה הזו. אם השדרוג של קטגוריית היומנים נכשל או נתקע, אתם יכולים להיעזר במאמר הזה כדי לאבחן ולפתור שגיאות אימות סינכרוניות, שגיאות הקצאה אסינכרוניות ופעולות חסומות. במאמר שדרוג קטגוריה לשימוש ב-Observability Analytics מוסבר איך משדרגים קטגוריה ביומן.
מידע על תהליך השדרוג
כששולחים פקודה לשדרוג קטגוריית יומנים לשימוש ב-Observability Analytics, ב-Cloud Logging מתבצע תהליך דו-שלבי:
- אימות סינכרוני: רישום ביומן מאמת את הפרמטרים של הפקודה. אם האימות נכשל, הפקודה מחזירה שגיאה באופן מיידי.
- הקצאה אסינכרונית: אם האימות מצליח, Logging מתחיל פעולה ממושכת שבדרך כלל מסתיימת תוך 10 דקות.
שדרוגים של קטגוריות ביומן הם פעולות מבוקרות. כדי לבדוק את הסטטוס של הפעולה הממושכת או למצוא פרטים על השגיאה, אתם יכולים לדגום את הפעולה באמצעות ה-method Operations.GetOperation או לשאול את יומני הביקורת.
מצב של קטגוריית יומנים במהלך שדרוג
אם האימות הסינכרוני של בקשת השדרוג מצליח, מערכת Logging משנה את הסטטוס של מאגר היומנים מ-ACTIVE ל-UPDATING ומתחילה את הפעולה הממושכת. בסיום הפעולה, המצב של מאגר היומנים חוזר לערך ACTIVE.
כדי לבדוק את המצב הנוכחי של קטגוריית היומנים, מריצים את הפקודה gcloud logging buckets describe:
gcloud logging buckets describe LOG_BUCKET_ID \
--location=LOCATION_ID \
--project=PROJECT_ID
לפני שמריצים את הפקודה, מחליפים את הערכים הבאים:
- PROJECT_ID: מזהה הפרויקט.
- LOCATION_ID: המיקום של הקטגוריה.
- LOG_BUCKET_ID: המזהה של הקטגוריה.
השדה lifecycleState בתשובה מציג את מצב הקטגוריה:
description: Default bucket
lifecycleState: ACTIVE
name: projects/PROJECT_ID/locations/LOCATION_ID/buckets/LOG_BUCKET_ID
retentionDays: 30
במסוף Google Cloud , כשהמאגר של יומני הרישום נמצא במצב UPDATING:
- בדף Logs Storage, בעמודה Observability Analytics available מוצג הכיתוב Upgrading… בזמן שהפעולה הארוכה מתבצעת (או Not eligible for upgrade אם המסוף לא יכול לאחזר את סטטוס הפעולה).
- בחלוניות Edit bucket ו-Upgrade log bucket, האפשרות לשדרג את הקטגוריה מושבתת, ובתיאור הכלים מופיעה ההודעה There are no pending updates כדרישה שלא מולאה.
שיקולים לגבי היקף האבטחה של VPC Service Controls
שדרוגים של קטגוריות של יומנים בתוך היקף של VPC Service Controls יכולים להיכשל בגלל ממשקי API שנחסמו על ידי ההיקף או בגלל הגדרות בפרויקטים שונים.
ממשקי API שההיקף חייב לאפשר
כדי לשדרג קטגוריית יומנים שנמצאת בתוך היקף שירות של VPC Service Controls, היקף השירות לא יכול להגביל את השירותים הבאים:
logging.googleapis.com-
cloudkms.googleapis.com: נדרשת כדי לשדרג קטגוריית יומנים שמשתמשת במפתח הצפנה בניהול הלקוח (CMEK).
הגבלת השירותים האלה גורמת להתנהגות הבאה:
logging.googleapis.comrestricted: פקודת השדרוג נכשלת מיד עם שגיאתPERMISSION_DENIED, ומאגר היומנים נשאר במצבACTIVE.פתרון: מעדכנים את ההיקף כדי לאפשר את ממשקי ה-API שמפורטים בתחילת הקטע הזה, ואז מנסים שוב להריץ את הפקודה.
cloudkms.googleapis.comrestricted: בקטגוריות של יומנים שמוגנות באמצעות CMEK, הפעולה שנמשכת זמן רב נכשלת עם השגיאהINTERNALוהקטגוריה של היומנים חוזרת למצבACTIVE.פתרון: מעדכנים את ההיקף כדי לאפשר את ממשקי ה-API שמפורטים בתחילת הקטע הזה, ואז מנסים שוב להריץ את הפקודה.
הגדרות CMEK חוצות-היקף
אי אפשר להשתמש בכללי תעבורת נתונים נכנסת או יוצאת שמבוססים על זהות כדי לתת גישה חוצת-היקף למפתח של Cloud Key Management Service, אם קטגוריית היומנים והמפתח של Cloud KMS נמצאים בהיקפים שונים של VPC Service Controls.
בהגדרה הזו, אם כלל הכניסה מציין רק את הזהות של חשבון השירות של Logging, אז:
- ההקצאה האסינכרונית נכשלת עם השגיאה
INTERNAL, וקטגוריית היומנים חוזרת למצבACTIVE. - הכשל מתועד ביומן הביקורת של המדיניות בפרויקט Cloud KMS.
ביומן הביקורת הזה אפשר לראות שה-method
google.cloud.kms.v1.KeyManagementService.Encryptנכשלה בגלל הפרת כניסה (ingress) מסוגNO_MATCHING_ACCESS_LEVEL, ושהיא מיועדת לחשבון שירות של הצפנה ב-BigQuery.
פתרון: בכלל התעבורה הנכנסת שמאפשר גישה להיקף של Cloud KMS, מגדירים את identityType ל-ANY_IDENTITY ומציינים את הפרויקט שמכיל את קטגוריית היומנים כמשאב המקור:
- ingressFrom:
identityType: ANY_IDENTITY
sources:
- resource: projects/PROJECT_NUMBER
ingressTo:
operations:
- serviceName: cloudkms.googleapis.com
methodSelectors:
- method: '*'
resources:
- projects/KMS_PROJECT_NUMBER
בדוגמה שלמעלה, מחליפים את הערכים הבאים:
- PROJECT_NUMBER: מספר הפרויקט שמכיל את קטגוריית היומנים.
- KMS_PROJECT_NUMBER: מספר הפרויקט שמכיל את המפתח ב-Cloud KMS.
אם מציינים גם כלל תעבורת נתונים יוצאת, צריך להגדיר בו גם את identityType: ANY_IDENTITY.
שאילתות ביומני ביקורת לקבלת מידע על כשלים
השאילתות בקטע הזה יכולות לעזור לכם למצוא רשומות ביומן שמדווחות על כשלים בעדכון או בשדרוג של קטגוריית יומנים. השאילתות האלה מיועדות לשימוש ב-Logs Explorer.
נכנסים לדף Logs Explorer ב- במסוף Google Cloud :
אם אתם משתמשים בשורת החיפוש כדי למצוא את הדף הזה, בחרו בתוצאה עם כותרת המשנה Logging.
שאילתה לכל העדכונים או השדרוגים של קטגוריות שנכשלו בפרויקט
log_id("cloudaudit.googleapis.com/activity")
protoPayload.serviceName="logging.googleapis.com"
(protoPayload.methodName="google.logging.v2.ConfigServiceV2.UpdateBucket" OR
protoPayload.methodName="google.logging.v2.ConfigServiceV2.UpdateBucketAsync")
severity=ERROR
אם אתם משתמשים במסוף Google Cloud כדי לשדרג את קטגוריית היומנים לשימוש ב-Observability Analytics וגם כדי ליצור קבוצת נתונים מקושרת ב-BigQuery, השתמשו בשאילתה הבאה:
log_id("cloudaudit.googleapis.com/activity")
(protoPayload.serviceName="logging.googleapis.com" OR
protoPayload.serviceName="bigquery.googleapis.com")
(protoPayload.methodName="google.logging.v2.ConfigServiceV2.UpdateBucket" OR
protoPayload.methodName="google.logging.v2.ConfigServiceV2.UpdateBucketAsync" OR
protoPayload.methodName="google.cloud.bigquery.v2.DatasetService.InsertDataset")
severity=ERROR
התוצאות של השאילתה הקודמת כוללות רשומות ביומן שמציינות שיצירת מערך הנתונים המקושר ב-BigQuery נכשלה. הודעת השגיאה יכולה לעזור לכם לפתור את הבעיה שגרמה לכשל.
שאילתה לגבי עדכונים או שדרוגים שנכשלו בקטגוריה ספציפית
לפני שמשתמשים בשאילתה הבאה, צריך להחליף את הערכים הבאים:
- PROJECT_ID: מזהה הפרויקט.
- LOCATION_ID: המיקום של הקטגוריה.
- LOG_BUCKET_ID: המזהה של הקטגוריה.
log_id("cloudaudit.googleapis.com/activity")
protoPayload.serviceName="logging.googleapis.com"
(protoPayload.methodName="google.logging.v2.ConfigServiceV2.UpdateBucket" OR
protoPayload.methodName="google.logging.v2.ConfigServiceV2.UpdateBucketAsync")
protoPayload.resourceName="projects/PROJECT_ID/locations/LOCATION_ID/buckets/LOG_BUCKET_ID"
severity=ERROR
שאילתה לגבי כשלים בפעולות ממושכות
log_id("cloudaudit.googleapis.com/activity")
protoPayload.serviceName="logging.googleapis.com"
protoPayload.methodName="google.logging.v2.ConfigServiceV2.UpdateBucketAsync"
operation.last=true
severity=ERROR
INVALID_ARGUMENT (3)
הודעת השגיאה שמופיעה עם קוד השגיאה INVALID_ARGUMENT (3) מכילה מספיק מידע כדי לפתור את הבעיה. לכן, בקטע הזה לא מפורטות כל הודעות השגיאה האפשריות.
בעיות בשמות של משאבים
כדי לפתור בעיות בשמות של משאבים, צריך להעביר שם תקין של משאב קטגוריה בפורמט projects/PROJECT_ID/locations/LOCATION_ID/buckets/LOG_BUCKET_ID.
חשוב לוודא שאורך שם המשאב עומד במגבלות האורך.
בעיות במסכת העדכון
הודעת שגיאה שמכילה את הטקסט update_mask או Update mask מציינת ערך חסר או ערך בפורמט שגוי.
כדי לפתור את הבעיה, בפקודת ה-API, מציינים את update_mask ומגדירים את הערך ל-"analytics_enabled".
בעיות שקשורות לעמידה בדרישות של קטגוריות ביומן
אי אפשר לשדרג קטגוריית יומנים נעולה של
_Defaultאו קטגוריות נעולות בהתאמה אישית. אפשר לשדרג את הקטגוריה_Requiredכשהיא נעולה.כשהקטגוריה של היומן נעולה, הודעת השגיאה היא
"Bucket is not eligible for an upgrade to enable analytics".כדי לפתור את הבעיה, צריך ליצור קטגוריה חדשה עם ניתוח נתונים פעיל ולנתב אליה את היומנים.
אי אפשר לשדרג את קטגוריית היומנים בזמן שמבצעים שינויים אחרים בקטגוריה. לדוגמה, אי אפשר לשדרג קטגוריית יומנים ולעדכן את התיאור שלה.
כדי לפתור את הבעיה, שולחים בקשה נפרדת של
UpdateBucketאוUpdateBucketAsyncעםanalytics_enabledבלבד ב-update_mask, ומעדכנים שדות אחרים של קטגוריית היומנים בבקשה נפרדת.אי אפשר לשדרג קטגוריות של יומנים בארגונים, בתיקיות או בחשבונות לחיוב. אפשר לשדרג רק קטגוריות של יומנים שההורה שלהן הוא פרויקט ב- Google Cloud .
אי אפשר לשדרג קטגוריית יומנים שכבר שודרגה או שנמצאת בתהליך שדרוג.
אפשר להשתמש ב-
GetBucketאו ב-ListOperationsכדי לבדוק אם השדרוג כבר הושלם או שהוא עדיין בתהליך.
בעיות במפתחות Cloud KMS
הודעות שגיאה:
"Not a valid key reference (wrong type): 'KMS_KEY_NAME'""Name "KMS_KEY_NAME" is missing the COMPONENT component. Expected the form projects/[PROJECT_ID]/locations/[ID]/keyRings/[ID]/cryptoKeys/[ID]"
פתרון: לפני שמשדרגים את קטגוריית היומנים, מעדכנים את cmek_settings.kms_key_name של הקטגוריה לשם משאב תקין של Cloud KMS CryptoKey.
צריך לעדכן את שם המשאב, ולא את גרסת המפתח, CryptoKeyVersion.
הודעה על ארגומנט לא תקין
אם מופיעה ההודעה "Request contains an invalid argument.", נסו את הפעולות הבאות לגבי קטגוריות יומנים שמופעל בהן CMEK:
- מוודאים שחשבון השירות של Logging שמשויך להגדרת ה-CMEK של הקטגוריה מאותחל.
- חשוב לוודא שלקטגוריה יש תקופת שמירה חיובית.
כדי למצוא את השם של חשבון השירות, מריצים את הפקודה הבאה אחרי שמעדכנים את מאגר היומנים, המיקום ומזהי הפרויקטים:
gcloud logging buckets describe LOG_BUCKET_ID --location=LOCATION_ID --project=PROJECT_ID
חשבון השירות יכול להיות בפרויקט, בתיקייה או בארגון.
DEADLINE_EXCEEDED (4)
משתמשים ב-UpdateBucketAsync ודוגמים את הפעולה הממושכת שהוחזרה באמצעות ה-method Operations.GetOperation, או קוראים ל-GetBucket אחרי שהשדרוג ברקע מסתיים.
NOT_FOUND (5)
כדי לפתור את הבעיות האלה, נסו את הפתרונות הבאים:
- מוודאים שמזהה הפרויקט או מספר הפרויקט נכונים, ושהפרויקט פעיל. אם הפרויקט בהמתנה למחיקה, קודם צריך לשחזר אותו.
- חשוב לוודא שהמיקום שצוין נתמך על ידי Logging.
- מוודאים שהמזהה והמיקום של קטגוריית היומנים קיימים בפרויקט, ושהקטגוריה היא לא
_CloudTrace.
PERMISSION_DENIED (7)
שגיאת דחיית הרשאה מציינת שהפעולה המבוקשת לא מותרת.
הרשאות משתמש חסרות
כדי לשדרג קטגוריית יומנים, צריך לוודא שלמבצע הקריאה החוזרת יש תפקיד בניהול הזהויות והרשאות הגישה (IAM) שכולל את ההרשאה logging.buckets.update (כמו roles/logging.configWriter או roles/logging.admin), ולוודא שאין מדיניות ארגונית בהתאמה אישית שחוסמת את העדכון.
הגבלות שקשורות למדיניות הארגון
כדי לפתור את הודעת השגיאה "Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier: [ID]", ודאו שהיקף השירות של VPC Service Controls לא מגביל את השירות logging.googleapis.com. מידע נוסף זמין במאמר שיקולים לגבי היקף ההרשאות של VPC Service Controls.
בעיות בנקודות קצה אזוריות
כדי לפתור שגיאות של דחיית הרשאה כשמצוינות נקודות קצה אזוריות, שלחו את הבקשה לנקודת הקצה הגלובלית (logging.googleapis.com) או לנקודת הקצה האזורית שתואמת למיקום של קטגוריית היומנים.
RESOURCE_EXHAUSTED (8)
כדי לפתור את הבעיה, צריך לחכות עד שפעולות ההקצאה הפעילות יסתיימו ולנסות שוב עם השהיה מעריכית לפני ניסיון חוזר (exponential backoff).
FAILED_PRECONDITION (9)
כדי לפתור את הבעיות האלה, נסו את הפתרונות הבאים:
מוודאים שמאגר היומנים נמצא במצב
ACTIVE. אי אפשר לשדרג קטגוריית יומנים שנמצאת בתהליך מחיקה, עדכון או הקצאה.במאמר מצב קטגוריית היומנים במהלך שדרוג מוסבר איך לקבוע את המצב של קטגוריית היומנים.
אי אפשר לשדרג קטגוריית יומנים נעולה.
ההודעה הגנרית
"Precondition check failed."מציינת שהסטטוס של הקטגוריה הוא לאACTIVE. צריך להמתין עד שהפעולות שמתבצעות יסתיימו, ואז לנסות שוב לשדרג.
INTERNAL (13)
הודעות שגיאה:
- פעולה שנמשכת זמן רב (
Operations.GetOperation):"Failed to create analytics enabled bucket." - יומני ביקורת של Cloud ו-
UpdateBucketסינכרוני:"Internal error encountered."
פתרון: אפשר לנסות את הפעולות הבאות:
אם מדובר בקטגוריית יומנים עם CMEK, צריך לוודא שהמפתח של Cloud KMS מופעל, שלחשבון השירות של Logging שמשויך להגדרת ה-CMEK של הקטגוריה יש את התפקיד
roles/cloudkms.cryptoKeyEncrypterDecrypterבמפתח, של-BigQuery יש גישה למפתח, ושאין מדיניות ארגונית או היקף של VPC Service Controls שחוסמים את הגישה ל-Cloud KMS.כדי למצוא את השם של חשבון השירות, מריצים את הפקודה הבאה:
gcloud logging buckets describe LOG_BUCKET_ID --location=LOCATION_ID --project=PROJECT_IDחשבון השירות יכול להיות בפרויקט, בתיקייה או בארגון.
בודקים את תצוגות היומנים הקיימות בקטגוריה (
logging.views.list) כדי לוודא שהמסננים שלהן תקינים, ומנסים שוב לשדרג את הקטגוריה.מוודאים שקטגוריית היומנים לא נמחקה (
DELETE_REQUESTED) ושלא מתבצעת בה פעולת ניהול שמתנגשת עם השדרוג, ואז מנסים שוב לשדרג.נסו לשדרג את קטגוריית היומנים אחרי שייפתרו השגיאות הזמניות ביצירת מערך הנתונים של האחסון או אינדקס החיפוש ב-BigQuery, או אחרי שיוחזר השירות של BigQuery, של Cloud KMS או של שירות ההקצאה. אם הבעיה נמשכת, פנו ל-Cloud Customer Care.
UNAVAILABLE (14)
אם מופיעה ההודעה "The service is currently unavailable.", נסו שוב את הבקשה UpdateBucketAsync עם השהיה מעריכית לפני ניסיון חוזר (exponential backoff).