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. בתפריט שדרוג, עוברים מLegacy Logs Viewer אל 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 צמדי מפתח/ערך אחרי הטרנספורמציה. השדה הזה כולל מטא-נתונים שהוגדרו על ידי המשתמש או שונו באובייקט. כך אפשר לאחסן מטא-נתונים נוספים בצורה גמישה.