בדף הזה מוסבר איך להגדיר את היומנים של פעולות באצווה באחסון ולהציג אותם באמצעות 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".
צפייה ביומנים
כדי לראות את היומנים של פעולות אצווה באחסון:
המסוף
עוברים אל Google Cloud תפריט הניווט menu ובוחרים באפשרות Logging > Logs Explorer :<br\></br\>
בוחרים פרויקט Google Cloud .
בתפריט שדרוג, עוברים מכלי הצפייה ביומנים (גרסה קודמת) אל Logs Explorer.
כדי לסנן את היומנים כך שיוצגו רק רשומות של פעולות אצווה של אחסון, מקלידים
storage_batch_operations_jobבשדה השאילתה ולוחצים על Run query.בחלונית 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" // } // } }בטבלה הבאה מתוארים כל השדות הנפוצים ביומן:
שדות נפוצים ביומן סוג תיאור @typeString מציין את סוג המטען הייעודי (payload) של הרשומה ביומן ומראה שהיומן מייצג TransformActivityLogלפעולות אצווה של אחסון.completeTimeחותמת הזמן חותמת הזמן התואמת לתקן ISO 8601 שבה הפעולה הושלמה. statusאובייקט מספק מידע על התוצאה של פעילות הפעולה בקבוצה. status.errorMessageString הודעת שגיאה אם הפעולה נכשלת. הודעת השגיאה מופיעה רק אם הערך של status.statusCodeהוא לאOK.status.errorTypeString סוג השגיאה. סוג השגיאה מופיע רק אם הערך של status.statusCodeהוא לאOK.status.statusCodeString קוד הסטטוס של הפעולה. הפעולה מצליחה אם הערך הוא OK. כל ערך אחר מציין שהפעולה נכשלה.logNameString השם המלא של המשאב של היומן, שמציין את הפרויקט ואת זרם היומן. receiveTimestampחותמת הזמן חותמת הזמן שבה רשומת היומן התקבלה במערכת הרישום ביומן. resourceאובייקט מידע על המשאב שיצר את הרשומה ביומן. resource.labelsאובייקט צמדי מפתח/ערך שמספקים מידע נוסף לזיהוי המשאב. resource.typeString סוג המשאב שיצר את היומן. objectMetadataBeforeאובייקט מכיל את המטא-נתונים של האובייקט לפני הניסיון לבצע את פעולת האצווה. objectMetadataBefore.gcsObjectאובייקט פרטים על האובייקט. objectMetadataBefore.gcsObject.bucketString שם הקטגוריה שבה נמצא האובייקט. objectMetadataBefore.gcsObject.generationString מספר הדור של האובייקט לפני הפעולה. objectMetadataBefore.gcsObject.objectKeyString הנתיב המלא של האובייקט בתוך הקטגוריה. תוכן שספציפי לפעולה
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.kmsKeyVersionAfterString גרסת המפתח של Cloud Key Management Service שבה נעשה שימוש אחרי עבודת השכתוב. השדה kmsKeyVersionAfterמתמלא אם מפתח ההצפנה של האובייקט השתנה כתוצאה מהכתיבה מחדש. זהו שדה אופציונלי, כלומר יכול להיות שהוא לא יופיע אם גרסת המפתח של Cloud KMS לא השתנתה אחרי הכתיבה מחדש.PutMetadataאובייקט מציין פעולת עדכון של מטא-נתונים באובייקט. PutMetadata.content_disposition_afterString מציין את ערך הכותרת Content-Dispositionאחרי השלמת העבודהPutMetadata. זהו שדה אופציונלי, והוא יאוכלס רק אם נקבעה או שונתה ההגדרה של התוכן.PutMetadata.content_encoding_afterString מציין את ערך הכותרת Content-Encodingאחרי השלמת העבודהPutMetadata. זהו שדה אופציונלי, והוא יאוכלס רק אם קידוד התוכן הוגדר או שונה.PutMetadata.content_language_afterString מציין את ערך הכותרת Content-Languageאחרי השלמת העבודהPutMetadata. זהו שדה אופציונלי, והוא יאוכלס רק אם שפת התוכן הוגדרה או שונתה.PutMetadata.content_type_afterString מציין את ערך הכותרת Content-Typeאחרי השלמת העבודהPutMetadata. זהו שדה אופציונלי, והוא יאוכלס רק אם סוג התוכן הוגדר או שונה.PutMetadata.cache_control_afterString מציין את ערך הכותרת Cache-Controlאחרי השלמת העבודהPutMetadata. זהו שדה אופציונלי שאוכלס רק אם הוגדר או שונה בקרת המטמון.PutMetadata.custom_time_afterString מציין את ערך הכותרת Custom-Timeאחרי השלמת העבודהPutMetadata. זהו שדה אופציונלי שאוכלס רק אם הוגדר או שונה זמן מותאם אישית.PutMetadata.custom_metadata_afterמפה (מפתח: מחרוזת, ערך: מחרוזת) מכיל מיפוי של Custom- Metadataצמדי מפתח/ערך אחרי הטרנספורמציה. השדה הזה כולל מטא-נתונים שהוגדרו על ידי המשתמש או שונו באובייקט. כך אפשר לאחסן גמיש של מטא-נתונים נוספים.