יצירת דוח

‫App Optimize API עוזר לכם לנתח את נתוני העלויות והשימוש במשאבים על ידי יצירת דוחות. דוח יכול לכלול נתונים של פרויקט יחיד או של אפליקציה יחידה ב-מרכז האפליקציות.

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

כשהדוח יהיה מוכן, תוכלו לקרוא את הנתונים.

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

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

  • כדי לנתח את הדוגמאות במדריך הזה, צריך Google Cloud פרויקט עם משאבים פעילים. כדי להפיק תוצאות משמעותיות, App Optimize API צריך נתוני חיוב ונתוני שימוש. דוחות שמופעלים בפרויקטים חדשים או ריקים יהיו ריקים.

    במדריך הזה, הפרויקט שמזוהה בתור PROJECT_ID מספק את היקף הנתונים ומארח את משאב הדוח.

    ‫App Optimize API תומך ביצירת דוחות בפרויקט אחד שמנתחים נתונים מפרויקט אחר או מאפליקציות בגבולות של פרויקט יחיד או של תיקייה. כדי ליצור דוח על אפליקציה ב-App Hub, שיכולה לכלול כמה פרויקטים, צריך לקבל את הרשאות המעקב והחיוב הנדרשות בכל הפרויקטים שמשויכים לאפליקציה.

  • מוודאים שApp Optimize API מופעל בפרויקט שבו תשתמשו כדי ליצור ולנהל את משאב הדוח.

gcloud

במסוף Google Cloud , מפעילים את Cloud Shell.

הפעלת Cloud Shell

בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

למידע נוסף על הגדרת אימות בסביבת ייצור, ראו את המאמר בנושא הגדרת Application Default Credentials לקוד שפועל ב- Google Cloud במאמרי העזרה בנושא אימות ב- Google Cloud .

Python

  1. מתקינים את ספריית הלקוח של Python עבור App Optimize API.
  2. כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Python שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.

    1. התקינו את ה-CLI של Google Cloud.

    2. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

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

      gcloud auth application-default login

      אם אתם משתמשים ב-Cloud Shell, אין צורך לבצע את הפעולה הזו.

      אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

    למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .

    למידע נוסף על הגדרת אימות בסביבת ייצור, ראו את המאמר בנושא הגדרת Application Default Credentials לקוד שפועל ב- Google Cloud במאמרי העזרה בנושא אימות ב- Google Cloud .

REST

כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.

    התקינו את ה-CLI של Google Cloud.

    אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .

למידע נוסף על הגדרת אימות בסביבת ייצור, ראו את המאמר בנושא הגדרת Application Default Credentials לקוד שפועל ב- Google Cloud במאמרי העזרה בנושא אימות ב- Google Cloud .

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

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

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

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

מידע נוסף על ההרשאות והתפקידים שנדרשים ל-App Optimize API זמין במאמר בקרת גישה באמצעות IAM.

יצירת דוח

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

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

gcloud

כדי ליצור את הדוח, משתמשים בפקודה gcloud beta app-optimize reports create הבאה.

gcloud beta app-optimize reports create REPORT_ID \
  --project=PROJECT_ID \
  --location=global \
  --dimensions=location,product_display_name,project,resource,resource_type \
  --metrics=cost,cpu_mean_utilization \
  --report-filter='hour >= now - duration("168h")' \
  --scopes=project=projects/PROJECT_ID

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

  • REPORT_ID: מזהה ייחודי לדוח החדש, לדוגמה: my-resource-cost-report-1.
  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .

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

Python

קוד ה-Python הבא משתמש ב-AppOptimizeClient.create_report() כדי ליצור דוח.

from google.cloud import appoptimize_v1beta

project_id = "PROJECT_ID"
report_id = "REPORT_ID"

# Create the App Optimize client
client = appoptimize_v1beta.AppOptimizeClient()

# Initialize the report request
report = appoptimize_v1beta.Report(
    dimensions=['location', 'product_display_name', 'project', 'resource', 'resource_type'],
    metrics=['cost', 'cpu_mean_utilization'],
    filter='hour >= now - duration("168h")',
    scopes=[
        appoptimize_v1beta.Scope(project=f"projects/{project_id}"),
    ],
)
request = appoptimize_v1beta.CreateReportRequest(
    parent=f"projects/{project_id}/locations/global",
    report=report,
    report_id=report_id,
)

# Send the request and wait for completion
operation = client.create_report(request=request)
print("Waiting for operation to complete...")
response = operation.result()
print(response)

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

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • REPORT_ID: מזהה ייחודי לדוח החדש, לדוגמה: my-first-report.

השיטה operation.result() בספריית הלקוח ממתינה באופן אוטומטי לסיום הפעולה. אין צורך בלולאת סקר ידנית.

REST

שליחת בקשת HTTP POST אל נתיב המשאב projects.locations.reports של REST API

  1. כדי לשלוח את הבקשה, משתמשים בפקודה curl הבאה:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
        "scopes": [
          {
            "project": "projects/PROJECT_ID"
          }
        ],
        "dimensions": [
          "location",
          "product_display_name",
          "project",
          "resource",
          "resource_type"
        ],
        "metrics": [
          "cost",
          "cpu_mean_utilization"
        ],
        "filter": "hour >= now - duration(\"168h\")"
      }' \
      "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports?report_id=REPORT_ID"
    

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

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • REPORT_ID: מזהה ייחודי לדוח החדש, לדוגמה: my-resource-cost-report-1.

    ה-API מחזיר אובייקט של פעולה ממושכת (LRO). שימו לב לשדה name בתשובה, שבו תשתמשו כדי לבדוק את סטטוס הפעולה:

    {
      "name": "projects/PROJECT_ID/locations/global/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.OperationMetadata"
      },
      "done": false
    }
    

    בתשובה, השדה done הוא false, מה שמציין שהפקת הדוח מתבצעת.

  2. כדי לבדוק אם הדוח מוכן, שולחים בקשת HTTP‏ GET לפעולה name שהוחזרה בשלב הקודם:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/operations/OPERATION_ID"
    

    מחליפים את PROJECT_ID ואת OPERATION_ID בערכים מתגובת ה-LRO.

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

    • אם הדוח עדיין נוצר, התשובה תיראה כמו התשובה הראשונית של LRO, עם done שמוגדר ל-false. צריך להמתין פרק זמן קצר, למשל 5 עד 15 שניות, ולבצע שוב את השלב הזה כדי לשלוח בקשה חוזרת.
    • כשהדוח יהיה מוכן, התגובה תכלול את הערך "done": true ואת משאב הדוח בשדה response:

        {
          "name": "projects/PROJECT_ID/locations/global/operations/OPERATION_ID",
          "metadata": {
            "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.OperationMetadata"
          },
          "done": true,
          "response": {
            "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.Report",
            "name": "projects/PROJECT_ID/locations/global/reports/REPORT_ID",
            "dimensions": [
              "location",
              "product_display_name",
              "project",
              "resource",
              "resource_type"
            ],
            "scopes": [
              {
                "project": "projects/PROJECT_ID"
              }
            ],
            "filter": "hour >= now - duration(\"168h\")",
            "expireTime": "2026-02-05T18:50:25.273833857Z",
            "metrics": [
              "cost",
              "cpu_mean_utilization"
            ]
          }
        }
        ```
      
    • אם תהליך ה-LRO נתקל בשגיאה, התשובה תכיל שדה error במקום שדה response, עם פרטים על הכשל.

אחרי שהפעולה תסתיים בהצלחה, תוכלו לקרוא את נתוני הדוח.

מגבלות על מספר הפעולות שמתבצעות בו-זמנית

כשיוצרים דוח, App Optimize API מקבל נתוני עלויות מחיוב ב-Cloud ונתוני ניצול מ-Cloud Monitoring עבור כל target_project בדוח.

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

ב-App Optimize API יש מכסת מקבילות שנקראת Concurrent CreateReport operations (פעולות מקבילות של יצירת דוחות). המכסה הזו מאפשרת לשלוח עד 10 בקשות מקבילות לנתוני דוחות לכל פרויקט יעד. כשיוצרים דוח, App Optimize API מחשב את מספר פרויקטי היעד בדוח ונועל את מספר יחידות המכסה הנדרש עד לסיום ה-LRO ליצירת הדוח.

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

בדף Quotas & System Limits במסוף Google Cloud אפשר לראות את הפעילות הנוכחית של ה-API ולנהל את המגבלות האלה.

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

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

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

בקשת הצטרפות common-project dance-project draw-project animate-project music-project
dance-app
draw-app
music-app
animate-app
choreograph-app
storyteller-app
dance-premium-app
draw-premium-app
music-premium-app
animate-premium-app
choreograph-premium-app
storyteller-premium-app

אם יוצרים דוחות של נתוני עלויות וניצול לכל האפליקציות שמופיעות ברשימה בו-זמנית, ה-App Optimize API משתמש ביותר מיחידה אחת של מגבלת המקבילות בחלק מהפרויקטים. בפרט, הפרויקט המשותף common-project מקבל 12 בקשות לנתוני עלות וניצול. מכיוון שהמספר הזה חורג ממגבלת ההרצה בו-זמנית, 2 מבקשות הנתונים ייכשלו.

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

המאמרים הבאים