Cloud Logging לפעולות באצווה של אחסון

בדף הזה מוסבר איך להגדיר את היומנים של פעולות באצווה באחסון ולהציג אותם באמצעות Cloud Logging. אפשר להגדיר עבודת אצווה של אחסון כך שתייצר רשומות ביומן של Cloud Logging לכל עבודת טרנספורמציה. כל רשומה ביומן מתאימה לניסיון ההמרה של אובייקט.

פעולות אצווה ב-Storage תומכות ברישום ביומן גם ב-Cloud Logging וגם ביומני הביקורת של Cloud Storage. שתי האפשרויות מתעדות פעולות של עיבוד אצווה של אחסון, אבל מומלץ להשתמש ב-Cloud Logging. ‫Cloud Logging מספק פלטפורמה מרכזית לניתוח יומנים, למעקב בזמן אמת ולסינון מתקדם, ומציע פתרון חזק לניהול ולהבנה של פעילות העיבוד באצווה.

לפני שמתחילים

מוודאים שיש לכם גישה ל-Cloud Logging. כדי להשתמש ב-Cloud Logging, מומלץ להעניק את התפקיד Logs Viewer (roles/logging.viewer) בניהול הזהויות והרשאות הגישה. התפקיד Logs Viewer (roles/logging.viewer) Identity and Access Management מספק את ההרשאות לניהול הזהויות והרשאות הגישה שנדרשות כדי להציג את הנתונים שלכם ב-Cloud Logging. מידע נוסף על הרשאות גישה ל-Logging זמין במאמר בקרת גישה באמצעות IAM.

כדי לאמת את הרשאות ה-IAM ולהעניק אותן, צריך לבצע את הפעולות הבאות:

הסבר על פרטי הרישום ביומן

כשרישום היומנים מופעל, פעולות באצווה של אחסון מתעדות את הפרטים הבאים:

  • פעולה שניתן לרשום ביומן: הערך של פעולה שניתן לרשום ביומן הוא תמיד transform.

  • מצבים שניתן לרשום ביומן: לכל פעולה, אפשר לבחור לרשום ביומן אחד או את שני המצבים הבאים:

    • SUCCEEDED: הפעולה בוצעה בהצלחה.
    • FAILED: הפעולה נכשלה.

הפעלת רישום ביומן

כדי להפעיל את הרישום ביומן, מציינים את הפעולות והמצבים שרוצים לרשום.

שורת הפקודה

כשיוצרים משימה של פעולות באצווה ב-Storage באמצעות gcloud storage batch-operations jobs create, משתמשים בדגלים --log-actions ו---log-action-states כדי להפעיל רישום ביומן.

gcloud storage batch-operations jobs create JOB_NAME \
  --manifest-location=MANIFEST_LOCATION \
  --delete-object \
  --log-actions=transform \
  --log-action-states=LOG_ACTION_STATES

כאשר:

  • JOB_NAME הוא השם שרוצים לתת לעבודה. לדוגמה, my-job.
  • MANIFEST_LOCATION הוא המיקום של קובץ המניפסט. לדוגמה, gs://my-bucket/manifest.csv.
  • LOG_ACTION_STATES היא רשימה מופרדת בפסיקים של מצבים לרישום ביומן. לדוגמה, succeeded,failed.

API ל-REST

Create a storage batch operations job עם LoggingConfig.

{
   "loggingConfig": {
      "logActions": ["TRANSFORM"],
      "logActionStates": ["LOG_ACTION_STATES"],
        }
}

כאשר:

LOG_ACTION_STATES היא רשימה מופרדת בפסיקים של מצבים לרישום ביומן. לדוגמה, "SUCCEEDED","FAILED".

צפייה ביומנים

כדי לראות את היומנים של פעולות אצווה באחסון:

המסוף

  1. עוברים אל Google Cloud תפריט הניווט ובוחרים באפשרות Logging > Logs Explorer :<br\></br\>

    כניסה לדף Logs Explorer

  2. בוחרים פרויקט Google Cloud .

  3. בתפריט שדרוג, עוברים מכלי הצפייה ביומנים (גרסה קודמת) אל Logs Explorer.

  4. כדי לסנן את היומנים כך שיוצגו רק רשומות של פעולות אצווה של אחסון, מקלידים storage_batch_operations_job בשדה השאילתה ולוחצים על Run query.

  5. בחלונית Query results, לוחצים על Edit time כדי לשנות את התקופה שבה רוצים לקבל תוצאות.

מידע נוסף על השימוש ב-Logs Explorer זמין במאמר שימוש ב-Logs Explorer.

שורת הפקודה

כדי להשתמש ב-CLI של gcloud כדי לחפש יומנים של פעולות אצווה של אחסון, משתמשים בפקודה gcloud logging read.

מציינים מסנן כדי להגביל את התוצאות ליומנים של פעולות אצווה באחסון.

gcloud logging read "resource.type=storage_batch_operations_job"

API ל-REST

משתמשים ב-method ‏entries.list של Cloud Logging API.

כדי לסנן את התוצאות כך שיכללו רק רשומות שקשורות לפעולות אצווה של אחסון, משתמשים בשדה filter. הנה דוגמה לאובייקט בקשת JSON:

{
"resourceNames":
  [
    "projects/my-project-name"
  ],
  "orderBy": "timestamp desc",
  "filter": "resource.type=\"storage_batch_operations_job\""
}

כאשר:

my-project-name הוא שם הפרויקט.

הפורמט של יומן פעולות בכמות גדולה באחסון

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

  • שדות נפוצים ביומן

    השדות הבאים מופיעים בכל היומנים:

    jsonPayload: {
    "@type": "type.googleapis.com/google.cloud.storagebatchoperations.logging.TransformActivityLog",
    "completeTime": "YYYY-MM-DDTHH:MM:SS.SSSSSSSSSZ",
    "status": {
      "errorMessage": "String indicating error",
      "errorType": "ENUM_VALUE",
      "statusCode": "ENUM_VALUE"
    },
    "logName": "projects/PROJECT_ID/logs/storagebatchoperations.googleapis.com%2Ftransform_activity",
    "receiveTimestamp": "YYYY-MM-DDTHH:MM:SS.SSSSSSSSSZ",
    "resource": {
      "labels": {
        "location":"us-central1",
        "job_id": "BATCH_JOB_ID",
        "resource_container": "RESOURCE_CONTAINER",
        // ... other labels
      },
      "type": "storagebatchoperations.googleapis.com/Job"
    },
    // Operation-specific details will be nested here (for example,
    // "DeleteObject", "PutObjectHold", "RewriteObject", "PutMetadata")
    // Each operation-specific object will also contain the following
    // object: "objectMetadataBefore": {
    //   "gcsObject": {
    //     "bucket": "BUCKET_NAME",
    //     "generation": "GENERATION_NUMBER",
    //     "objectKey": "OBJECT_PATH"
    //   }
    // }
    }
    

    בטבלה הבאה מתוארים כל השדות הנפוצים ביומן:

    שדות נפוצים ביומן סוג תיאור
    @type String מציין את סוג המטען הייעודי (payload) של הרשומה ביומן ומראה שהיומן מייצג TransformActivityLog לפעולות אצווה של אחסון.
    completeTime חותמת הזמן חותמת הזמן התואמת לתקן ISO 8601 שבה הפעולה הושלמה.
    status אובייקט מספק מידע על התוצאה של פעילות הפעולה בקבוצה.
    status.errorMessage String הודעת שגיאה אם הפעולה נכשלת. הודעת השגיאה מופיעה רק אם הערך של status.statusCode הוא לא OK.
    status.errorType String סוג השגיאה. סוג השגיאה מופיע רק אם הערך של status.statusCode הוא לא OK.
    status.statusCode String קוד הסטטוס של הפעולה. הפעולה מצליחה אם הערך הוא OK. כל ערך אחר מציין שהפעולה נכשלה.
    logName String השם המלא של המשאב של היומן, שמציין את הפרויקט ואת זרם היומן.
    receiveTimestamp חותמת הזמן חותמת הזמן שבה רשומת היומן התקבלה במערכת הרישום ביומן.
    resource אובייקט מידע על המשאב שיצר את הרשומה ביומן.
    resource.labels אובייקט צמדי מפתח/ערך שמספקים מידע נוסף לזיהוי המשאב.
    resource.type String סוג המשאב שיצר את היומן.
    objectMetadataBefore אובייקט מכיל את המטא-נתונים של האובייקט לפני הניסיון לבצע את פעולת האצווה.
    objectMetadataBefore.gcsObject אובייקט פרטים על האובייקט.
    objectMetadataBefore.gcsObject.bucket String שם הקטגוריה שבה נמצא האובייקט.
    objectMetadataBefore.gcsObject.generation String מספר הדור של האובייקט לפני הפעולה.
    objectMetadataBefore.gcsObject.objectKey String הנתיב המלא של האובייקט בתוך הקטגוריה.
  • תוכן שספציפי לפעולה jsonPayload

    ההבדל בין רשומות ביומן של פעולות שונות של אצווה נמצא באובייקט ברמה העליונה שמוטמע בתוך jsonPayload. רק אחד מהאובייקטים הבאים זמין ברשומה נתונה ביומן, בהתאם לפעולת האצווה הספציפית שבוצעה:

    • מחיקת אובייקט (DeleteObject)

      jsonPayload:
      {
      "DeleteObject": {
        "objectMetadataBefore": {
          "gcsObject": {
            "bucket": "test-bucket",
            "generation": "1678912345678901",
            "objectKey": "test_object.txt"
          }
        }
        }
      }
      
    • דגל object hold על אובייקט (PutObjectHold)

      jsonPayload:
      {
      "PutObjectHold": {
        "objectMetadataBefore": {
          "gcsObject": {
            "bucket": "test-bucket",
            "generation": "1678912345678901",
            "objectKey": "test_object.txt"
          }
        },
        "temporaryHoldAfter": True,
        "eventBasedHoldAfter": True
      }
      }
      
    • כתיבה מחדש של אובייקט (RewriteObject)

      jsonPayload:
      {
      "RewriteObject": {
        "objectMetadataBefore": {
          "gcsObject": {
            "bucket": "test-bucket",
            "generation": "1678912345678901",
            "objectKey": "test_object.txt"
          }
        },
        "kmsKeyVersionAfter": "projects/my-gcp-project/locations/us-central1/keyRings/my-keyring-01/cryptoKeys/my-encryption-key/cryptoKeyVersions/1"
      }
      }
      
    • העלאת מטא-נתונים (PutMetadata)

      jsonPayload:
      {
      "PutMetadata": {
        "objectMetadataBefore": {
          "gcsObject": {
            "bucket": "test-bucket",
            "generation": "1678912345678901",
            "objectKey": "test_object.txt"
          }
        },
        "content_disposition_after": "attachment; filename=\"report_final.pdf\"",
        "content_encoding_after": "gzip",
        "content_language_after": "en-US",
        "content_type_after": "application/pdf",
        "cache_control_after": "public, max-age=3600",
        "custom_time_after": "2025-06-27T10:00:00Z",
        "custom_metadata_after": {
          "project": "marketing",
          "version": "2.0",
          "approvedBy": "Admin"
        }
      }
      }
      

    בטבלה הבאה מתוארים שדות היומן שספציפיים לפעולה:

    שדות ביומן שספציפיים לפעולה סוג תיאור
    PutObjectHold אובייקט מציין פעולת השהיה באובייקט.
    PutObjectHold.temporaryHoldAfter בוליאני אם הערך הוא True, המשמעות היא שהוחל על האובייקט עיכוב זמני אחרי שמשימת הפעולות של אצווה האחסון הסתיימה. הערכים התקינים הם: True או False.
    PutObjectHold.eventBasedHoldAfter בוליאני אם הערך הוא True, המשמעות היא שהוחל על האובייקט עיכוב מבוסס-אירוע אחרי שמשימת הפעולות באצווה של האחסון הסתיימה. הערכים התקינים הם: True או False.
    RewriteObject אובייקט מציין פעולת שכתוב באובייקט.
    RewriteObject.kmsKeyVersionAfter String גרסת המפתח של Cloud Key Management Service שבה נעשה שימוש אחרי עבודת השכתוב. השדה kmsKeyVersionAfter מתמלא אם מפתח ההצפנה של האובייקט השתנה כתוצאה מהכתיבה מחדש. זהו שדה אופציונלי, כלומר יכול להיות שהוא לא יופיע אם גרסת המפתח של Cloud KMS לא השתנתה אחרי הכתיבה מחדש.
    PutMetadata אובייקט מציין פעולת עדכון של מטא-נתונים באובייקט.
    PutMetadata.content_disposition_after String מציין את ערך הכותרת Content-Disposition אחרי השלמת העבודה PutMetadata. זהו שדה אופציונלי, והוא יאוכלס רק אם נקבעה או שונתה ההגדרה של התוכן.
    PutMetadata.content_encoding_after String מציין את ערך הכותרת Content-Encoding אחרי השלמת העבודה PutMetadata. זהו שדה אופציונלי, והוא יאוכלס רק אם קידוד התוכן הוגדר או שונה.
    PutMetadata.content_language_after String מציין את ערך הכותרת Content-Language אחרי השלמת העבודה PutMetadata. זהו שדה אופציונלי, והוא יאוכלס רק אם שפת התוכן הוגדרה או שונתה.
    PutMetadata.content_type_after String מציין את ערך הכותרת Content-Type אחרי השלמת העבודה PutMetadata. זהו שדה אופציונלי, והוא יאוכלס רק אם סוג התוכן הוגדר או שונה.
    PutMetadata.cache_control_after String מציין את ערך הכותרת Cache-Control אחרי השלמת העבודה PutMetadata. זהו שדה אופציונלי שאוכלס רק אם הוגדר או שונה בקרת המטמון.
    PutMetadata.custom_time_after String מציין את ערך הכותרת Custom-Time אחרי השלמת העבודה PutMetadata. זהו שדה אופציונלי שאוכלס רק אם הוגדר או שונה זמן מותאם אישית.
    PutMetadata.custom_metadata_after מפה (מפתח: מחרוזת, ערך: מחרוזת) מכיל מיפוי של Custom- Metadata צמדי מפתח/ערך אחרי הטרנספורמציה. השדה הזה כולל מטא-נתונים שהוגדרו על ידי המשתמש או שונו באובייקט. כך אפשר לאחסן גמיש של מטא-נתונים נוספים.