גישה ליומני הפלטפורמה ושימוש בהם

מגדירים יומני פלטפורמה ב-Artifact Registry כדי שתוכלו לראות מידע על בקשות שהצליחו ובקשות שנכשלו שבוצעו במאגרי Artifact Registry. יומני הפלטפורמה נוצרים על ידי Cloud Logging ואפשר לראות אותם ב-Logs Explorer. אתם יכולים לעיין ביומנים של פלטפורמת Artifact Registry כדי לפתור בעיות שקשורות לבקשות שנכשלו, לשמור רשומות של בקשות שבוצעו בהצלחה ולראות את מספר ההורדות של ארטיפקט.

יומן פלטפורמה מעוצב כ-LogEntry.

סקירה כללית

‫Artifact Registry יוצר יומנים של פלטפורמה לקריאות ל-API של מישור הנתונים ולקריאות ל-API של מישור הבקרה. פעולות במישור הבקרה כוללות פעולות ניהול מאגרים כמו יצירת מאגרים, עריכת תיאורי מאגרים ומחיקת מאגרים, ופעולות ניהול ארטיפקטים כמו הצגת ארטיפקטים ברשימה, תיוג ארטיפקטים ומחיקת ארטיפקטים. פעולות במישור הנתונים כוללות פעולות כמו שליחה ומשיכה של ארטיפקטים ממאגרי Artifact Registry.

היומנים של שני סוגי השיחות מכילים את הפרטים הבאים:

  • פרטי הבקשה
  • פרטי התשובה
  • סטטוס
  • תוויות
    • שם השיטה
    • שם המשאב
    • מיקום המשאב
    • מזהה פעולה (לפעולות ממושכות)
    • פורמט המאגר (למשאבי מאגר)
    • מצב מאגר (לרכיבי תוכן במאגר)

בנוסף, יומנים של קריאות ל-API של מישור הבקרה מכילים את המידע הבא:

  • פרטי HTTP
    • שיטת בקשה
    • בקש כתובת אתר
    • גודל הבקשה (בבייטים)
    • סטטוס
    • גודל התגובה (בבייטים)
    • סוכן משתמש
    • כתובת IP מרוחקת (כתובת ה-IP של הלקוח ששלח את הבקשה)
    • פרוטוקול
    • גורם מפנה
    • זמן אחזור

אפשר לראות את יומני הפלטפורמה של Artifact Registry ב-Logs Explorer.

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

הפעלת Logging API

התפקידים הנדרשים

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

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

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

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

אפשר להפעיל את רישום הפלטפורמה בכל Google Cloud הפרויקט או במאגר ספציפי.

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

כדי להפעיל את רישום הפעולות בפלטפורמה עבור Google Cloud הפרויקט, מריצים את הפקודה הבאה:

‫CLI של gcloud

gcloud artifacts projects update --enable-platform-logs --severity=SEVERITY --location LOCATION --project PROJECT

curl

curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" -X PATCH -H "X-GFE-SSL: yes" -H "Content-Type: application/json" -d '{"name": "projects/'PROJECT'/locations/'LOCATION'/projectConfig", "platformLogsConfig": {"logging_state": "ENABLED", "severity_level": "SEVERITY"}}' "https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/projectConfig"

כאשר:

  • SEVERITY קובע את סוגי הפעולות שמפעילות יצירה של יומן פלטפורמה של Artifact Registry. אפשר להזין INFO, ‏ERROR או להשמיט את השדה --severity כדי ליצור יומני פלטפורמה לכל הפעולות הנתמכות.
  • LOCATION הוא המיקום של המאגר.
  • PROJECT הוא מזהה הפרויקט. אם לא מציינים את הדגל הזה, המערכת משתמשת בפרויקט הנוכחי או בפרויקט ברירת המחדל.

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

‫CLI של gcloud

gcloud artifacts repositories update --enable-platform-logs --severity=SEVERITY REPOSITORY --location LOCATION --project PROJECT

curl

curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" -X PATCH \
-H "X-GFE-SSL: yes" -H "Content-Type: application/json" \
-d '{"name": "projects/'PROJECT'/locations/'LOCATION'/repositories/'REPOSITORY'", "platformLogsConfig": {"loggingState": "ENABLED", "severityLevel": "SEVERITY"}' \
"https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY?updateMask=platformLogsConfig"

כאשר:

  • SEVERITY קובע את סוגי הפעולות שמפעילות יצירה של יומן פלטפורמה של Artifact Registry. אפשר להזין INFO, ‏ERROR או להשמיט את השדה --severity כדי ליצור יומני פלטפורמה לכל הפעולות הנתמכות.
  • REPOSITORY הוא שם המאגר ב-Artifact Registry.
  • LOCATION הוא המיקום של המאגר.
  • PROJECT הוא מזהה הפרויקט. אם לא מציינים את הדגל הזה, המערכת משתמשת בפרויקט הנוכחי או בפרויקט ברירת המחדל.

אימות ההגדרה של רישום ביומן בפלטפורמה

אתם יכולים לבדוק אם רישום הפעולות בפלטפורמה של Artifact Registry מופעל בפרויקט או במאגר ספציפי.

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

כדי לבדוק אם רישום הפעולות בפלטפורמת Artifact Registry מופעל בפרויקט, מריצים את הפקודה הבאה:

‫CLI של gcloud

gcloud artifacts projects describe --location LOCATION --project PROJECT

curl

curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/projectConfig"

כאשר:

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

הפלט אמור להיראות כך:

{
  "name": "projects/PROJECT/locations/{"<var>LOCATION</var>"}}/projectConfig"
  "platformLogsConfig": {
    "loggingState": "ENABLED"
    "severityLevel": "INFO"
  }
}

אימות רישום ביומן של פלטפורמה למאגר

כדי לבדוק אם רישום ביומן של פלטפורמת Artifact Registry מופעל במאגר, מריצים את הפקודה הבאה:

‫CLI של gcloud

gcloud artifacts repositories describe REPOSITORY --location LOCATION --project PROJECT

curl

curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY"

כאשר:

  • REPOSITORY הוא שם המאגר.
  • LOCATION הוא המיקום של המאגר.
  • PROJECT הוא מזהה הפרויקט. אם לא מציינים את הדגל הזה, המערכת משתמשת בפרויקט הנוכחי או בפרויקט ברירת המחדל.

הפלט אמור להיראות כך:

{
  "name": "projects/PROJECT/locations/LOCATION/repositories/REPOSITORY"
  "platformLogsConfig": {
    "loggingState": "ENABLED",
    "severityLevel": "INFO"
  }
}

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

אפשר להשבית את רישום הפעולות בפלטפורמה לכל Google Cloud הפרויקט או למאגר ספציפי.

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

כדי להשבית את רישום הפעולות בפלטפורמה בפרויקט Google Cloud , מריצים את הפקודה הבאה:

‫CLI של gcloud

gcloud artifacts projects update --disable-platform-logs --location LOCATION --project PROJECT

curl

curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" -X PATCH \
-H "X-GFE-SSL: yes" -H "Content-Type: application/json" \
-d '{"name": "projects/'PROJECT'/locations/'LOCATION'/projectConfig", "platformLogsConfig": {"logging_state": "DISABLED"}}' \
"https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/projectConfig"

כאשר:

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

השבתת רישום ביומן של פלטפורמה למאגר

כדי להשבית את רישום הפעולות בפלטפורמה עבור מאגר, מריצים את הפקודה הבאה:

‫CLI של gcloud

gcloud artifacts repositories update --disable-platform-logs REPOSITORY --location LOCATION --project PROJECT

curl

curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" -X PATCH \
-H "X-GFE-SSL: yes" -H "Content-Type: application/json" \
-d '{"name": "projects/'PROJECT'/locations/'LOCATION'/repositories/'REPOSITORY'", "platformLogsConfig": {"loggingState": "DISABLED", "severityLevel": "INFO"}' \
"https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY?updateMask=platformLogsConfig"

כאשר:

  • REPOSITORY הוא שם המאגר ב-Artifact Registry.
  • LOCATION הוא המיקום של המאגר.
  • PROJECT הוא מזהה הפרויקט. אם לא מציינים את הדגל הזה, המערכת משתמשת בפרויקט הנוכחי או בפרויקט ברירת המחדל.

ניקוי ההגדרות של רישום ביומן בפלטפורמה

אתם יכולים לנקות את הגדרות הרישום ביומן של הפלטפורמה לפרויקט או למאגר. כשמריצים את פקודת הניקוי, הערכים loggingState ו-severityLevel של הפרויקט או המאגר מוגדרים כ-null.

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

ניקוי ההגדרות של רישום ביומן בפלטפורמה של פרויקט

כדי לנקות את הגדרת הרישום בפלטפורמה של פרויקט Google Cloud , מריצים את הפקודה הבאה:

‫CLI של gcloud

gcloud artifacts projects update --clear-platform-logs --location LOCATION --project PROJECT

curl

curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" -X PATCH \
-H "X-GFE-SSL: yes" -H "Content-Type: application/json" \
-d '{"name": "projects/'PROJECT'/locations/'LOCATION'/projectConfig", "platformLogsConfig": {}}' \
"https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/projectConfig"

כאשר:

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

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

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

‫CLI של gcloud

gcloud artifacts repositories update --clear-platform-logs REPOSITORY --location LOCATION --project PROJECT

curl

curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" -X PATCH \
-H "X-GFE-SSL: yes" -H "Content-Type: application/json" \
-d '{"name": "projects/'PROJECT'/locations/'LOCATION'/repositories/'REPOSITORY'", "platformLogsConfig": {}' \
"https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY?updateMask=platformLogsConfig"

כאשר:

  • REPOSITORY הוא שם המאגר ב-Artifact Registry.
  • LOCATION הוא המיקום של המאגר.
  • PROJECT הוא מזהה הפרויקט. אם לא מציינים את הדגל הזה, המערכת משתמשת בפרויקט הנוכחי או בפרויקט ברירת המחדל.

צפייה ביומני הפלטפורמה

כדי לראות את יומני הפלטפורמה:

  1. פותחים את הדף Logs Explorer במסוף Google Cloud .

    פתיחת הדף Logs Explorer

  2. בחלונית השאילתה, לוחצים על התפריט הנפתח שם היומן.

  3. מזינים requests ובוחרים את תיבת הסימון requests בכותרת Artifact Registry.

  4. לוחצים על אישור.

    הרישום ביומן מציג יומנים של קריאות API של מישור הנתונים ומישור הבקרה בחלונית Query results.

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

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

ניתוח יומנים של פלטפורמות באמצעות Observability Analytics

אתם יכולים להשתמש ב-Observability Analytics כדי להריץ שאילתות SQL על היומנים של Artifact Registry, וכך לנתח את היומנים בפירוט רב יותר. בקטע הזה מופיעות כמה דוגמאות לשאילתות לתרחישי שימוש נפוצים. אפשר לשנות את השאילתות האלה כדי לנתח היבטים אחרים של השימוש ב-Artifact Registry. לשם כך, מסננים שדות שונים במבנה LogEntry.

לפני שמתחילים להשתמש ב-Observability Analytics, צריך לבצע את הפעולות הבאות:

  1. מגדירים את מאגרי היומנים לשימוש ב-Observability Analytics.

  2. הגדרת תפקידים והרשאות בניהול הזהויות והרשאות הגישה כדי להשתמש ב-Observability Analytics.

אחר כך פועלים לפי השלבים להזנה והרצה של שאילתה בהתאמה אישית. כשמגיעים לחלונית Query של SQL, אפשר להזין אחת מהשאילתות לדוגמה הבאות:

דוגמה: 10 כתובות ה-IP המובילות לפי נפח ההורדה

השאילתה הזו מעריכה את יומני הפלטפורמה של Artifact Registry ומחזירה את 10 כתובות ה-IP המובילות שהורידו הכי הרבה נתונים מהמאגרים שלכם ב-7 הימים האחרונים:

SELECT
  http_request.remote_ip AS client_ip,
  SUM(http_request.response_size) AS total_download_bytes
FROM
  `YOUR_PROJECT.YOUR_LOCATION.YOUR_BUCKET._AllLogs`
WHERE
  log_id = "artifactregistry.googleapis.com/requests"
  AND JSON_VALUE(resource.labels.repository_id) IS NOT NULL
  AND http_request.request_method = "GET"
  AND http_request.status >= 200 AND http_request.status < 300
  AND http_request.response_size > 0
  AND CAST(http_request.response_size AS INT64) > 0
  AND timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
GROUP BY
  client_ip
ORDER BY
  total_download_bytes DESC
LIMIT 10;

דוגמה: בקשות לכל מאגר

השאילתה הזו מעריכה את יומני הפלטפורמה של Artifact Registry ומחזירה את מספר הבקשות שנשלחו לכל מאגר ב-24 השעות האחרונות:

SELECT
  JSON_VALUE(resource.labels.repository_id) AS repository,
  JSON_VALUE(resource.labels.location) AS location,
  COUNT(*) AS request_count
FROM
  `YOUR_PROJECT.YOUR_LOCATION.YOUR_BUCKET._AllLogs`
WHERE
  log_id = "artifactregistry.googleapis.com/requests"
  AND JSON_VALUE(resource.labels.repository_id) IS NOT NULL
  AND timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
GROUP BY
  repository,
  location
ORDER BY
  request_count DESC;

דוגמה: בקשות שנכשלו

השאילתה הזו מעריכה את יומני הפלטפורמה של Artifact Registry ומפרטת את הפרטים של 10 הבקשות האחרונות שנכשלו בשעה האחרונה:

SELECT
  timestamp,
  http_request.status,
  http_request.request_method,
  http_request.request_url,
  http_request.remote_ip,
  JSON_VALUE(resource.labels.repository_id) AS repository,
  JSON_VALUE(labels.resource_name) AS artifact_name,
  trace
FROM
  `YOUR_PROJECT.YOUR_LOCATION.YOUR_BUCKET._AllLogs`
WHERE
  log_id = "artifactregistry.googleapis.com/requests"
  AND JSON_VALUE(resource.labels.repository_id) IS NOT NULL
  AND http_request.status >= 400
  AND timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR)
ORDER BY
  timestamp DESC
LIMIT 10;