App Optimize API עוזר לכם לנתח את נתוני העלויות והשימוש במשאבים על ידי יצירת דוחות. דוח יכול לכלול נתונים של פרויקט יחיד או של אפליקציה יחידה ב-מרכז האפליקציות.
קודם יוצרים דוח על ידי שליחת בקשת API. בבקשה הזו, מגדירים את היקף הנתונים, את אופן הצבירה או הקיבוץ שלהם ואת המסננים שרוצים להחיל.
כשהדוח יהיה מוכן, תוכלו לקרוא את הנתונים.
למידע על ההיקפים, המאפיינים, המדדים והמסננים הזמינים, ועל שילובים תקפים של ההגדרות האלה, אפשר לעיין במאמר מידע על דוחות.
לפני שמתחילים
כדי לנתח את הדוגמאות במדריך הזה, צריך Google Cloud פרויקט עם משאבים פעילים. כדי להפיק תוצאות משמעותיות, App Optimize API צריך נתוני חיוב ונתוני שימוש. דוחות שמופעלים בפרויקטים חדשים או ריקים יהיו ריקים.
במדריך הזה, הפרויקט שמזוהה בתור
PROJECT_IDמספק את היקף הנתונים ומארח את משאב הדוח.App Optimize API תומך ביצירת דוחות בפרויקט אחד שמנתחים נתונים מפרויקט אחר או מאפליקציות בגבולות של פרויקט יחיד או של תיקייה. כדי ליצור דוח על אפליקציה ב-App Hub, שיכולה לכלול כמה פרויקטים, צריך לקבל את הרשאות המעקב והחיוב הנדרשות בכל הפרויקטים שמשויכים לאפליקציה.
מוודאים שApp Optimize API מופעל בפרויקט שבו תשתמשו כדי ליצור ולנהל את משאב הדוח.
-
נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
Verify that you have the permissions required to complete this guide.
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות במסמך הזה:
gcloud
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
למידע נוסף על הגדרת אימות בסביבת ייצור, ראו את המאמר בנושא הגדרת Application Default Credentials לקוד שפועל ב- Google Cloud במאמרי העזרה בנושא אימות ב- Google Cloud .
Python
- מתקינים את ספריית הלקוח של Python עבור App Optimize API.
-
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Python שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
אם אתם משתמשים במעטפת מקומית, אתם צריכים ליצור פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
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 הבאים:
- אדמין של אופטימיזציה של אפליקציות (
roles/appoptimize.admin) - צפייה ב-Monitoring (
roles/monitoring.viewer) - בעל הרשאת צפייה (
roles/viewer) (או תפקיד אחר שמעניק את ההרשאהbilling.resourceCosts.get)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
מידע נוסף על ההרשאות והתפקידים שנדרשים ל-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
כדי לשלוח את הבקשה, משתמשים בפקודה
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, מה שמציין שהפקת הדוח מתבצעת.-
כדי לבדוק אם הדוח מוכן, שולחים בקשת 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, עם פרטים על הכשל.
- אם הדוח עדיין נוצר, התשובה תיראה כמו התשובה הראשונית של LRO, עם
אחרי שהפעולה תסתיים בהצלחה, תוכלו לקרוא את נתוני הדוח.
מגבלות על מספר הפעולות שמתבצעות בו-זמנית
כשיוצרים דוח, 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 מבקשות הנתונים ייכשלו.
כדי למנוע את הבעיה הזו, הצוות יכול להריץ דוחות לגרסאות הרגילות של האפליקציות קודם, ואז להריץ דוחות לגרסת הפרימיום.
המאמרים הבאים
- כדי להבין מהם מאפיינים, מדדים ומסננים, אפשר לעיין במאמר מידע על דוחות.
- אפשר לעיין בדרכים אחרות לניהול דוחות: