יצירת דוח

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

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

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

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

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

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

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

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

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

gcloud

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

  • הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.

    איך נכנסים ל-CLI של gcloud באמצעות הזהות המאוחדת?

  • כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  • אחרי שתאתחלו את ה-CLI של gcloud, עדכנו אותו והתקינו את הרכיבים הנדרשים:

    gcloud components update
    gcloud components install beta
  • למידע נוסף על הגדרת אימות בסביבת ייצור, ראו את המאמר בנושא הגדרת 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. הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.

        איך נכנסים ל-CLI של gcloud באמצעות הזהות המאוחדת?

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

        gcloud auth application-default login

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

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

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

    REST

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

      התקינו את ה-CLI של Google Cloud ואז היכנסו ל-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 מבקשות הנתונים ייכשלו.

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

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