יצירה וקריאה של דוח
במאמר הזה מוסבר איך ליצור דוח של App Optimize API על ההוצאות שלכם, לעקוב אחרי יצירת הדוח ולקרוא את הנתונים שמתקבלים כשהם מוכנים. Google Cloudבמדריך הזה לתחילת העבודה, אפשר להשתמש ב-API בארכיטקטורת REST או בספריית הלקוח של Python.
לפני שמתחילים
כדי לנתח את הדוגמאות במדריך הזה, צריך 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) - בעל הרשאת צפייה (
roles/viewer) (או תפקיד אחר שמעניק את ההרשאהbilling.resourceCosts.get)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
מידע נוסף על ההרשאות והתפקידים שנדרשים ל-App Optimize API זמין במאמר בקרת גישה באמצעות IAM.
יצירת דוח
בדוגמה הזו נוצר דוח של ההוצאה הכוללת בPROJECT_ID שנבחר. בדוח מפורטות העלויות לפי כלGoogle Cloud מוצר שבו נעשה שימוש, כמו Compute Engine ו-Cloud Storage, ולפי המק"ט והמיקום הספציפיים. הדוח כולל נתונים משלושת הימים האחרונים.
כדי ליצור את משאב הדוח, פועלים לפי ההוראות לשיטה המועדפת:
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,sku \
--metrics=cost \
--report-filter='hour >= now - duration("72h")' \
--scopes=project=projects/PROJECT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
REPORT_ID: מזהה ייחודי לדוח החדש, לדוגמהmy-first-report
הפקודה ממתינה לסיום פעולת יצירת הדוח ואז מחזירה את משאב הדוח שנוצר.
Python
קוד ה-Python הבא משתמש ב-AppOptimizeClient.create_report() כדי ליצור דוח.
from google.cloud import appoptimize_v1beta
project_id = "PROJECT_ID"
report_id = "REPORT_ID"
# Create the App Optimize client and prepare a request for a new report
client = appoptimize_v1beta.AppOptimizeClient()
report = appoptimize_v1beta.Report(
dimensions=['location', 'product_display_name', 'project', 'sku'],
metrics=['cost'],
filter='hour >= now - duration("72h")',
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,
)
# Request the creation of the report and wait until the process is done
operation = client.create_report(request=request)
print("Waiting for report creation 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", "sku" ], "metrics": [ "cost" ], "filter": "hour >= now - duration(\"72h\")" }' \ "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports?report_id=REPORT_ID"מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
REPORT_ID: מזהה ייחודי לדוח החדש, לדוגמהmy-first-report
ה-API מחזיר אובייקט של פעולה ממושכת (LRO), שמייצג את תהליך יצירת הדוח. זוהי דוגמה לתשובה:
{ "name": "projects/PROJECT_ID/locations/global/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.OperationMetadata" }, "done": false }הסטטוס
"done": falseמציין שהדוח עדיין בתהליך יצירה. חשוב לשים לב ל-OPERATION_IDכי תצטרכו להשתמש בו בשלב הבא.-
יצירת הדוח יכולה לקחת זמן, ולכן צריך לבצע שאילתות חוזרות ל-LRO עד שהוא מציין שתהליך היצירה הושלם ונתוני הדוח מוכנים להורדה.
כדי לבדוק את הסטטוס של תהליך היצירה, שולחים בקשת HTTP
GETלשם המשאב של הפעולה:curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/operations/OPERATION_ID"בודקים את התשובה. אם
"done"הואfalse, מחכים 5 עד 15 שניות וחוזרים על השלב הזה. אם"done"הואtrue, הדוח מוכן.הדוגמה הבאה היא של תשובה שמתקבלת כשהפעולה מסתיימת:
{ "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", "scopes": [ { "project": "projects/PROJECT_ID" } ], "dimensions": [ "location", "product_display_name", "project", "sku" ], "metrics": [ "cost" ], "filter": "hour >= now - duration(\"72h\")", "expireTime": "2026-02-04T22:05:05Z" } }
קריאת נתוני הדוח
כדי לאחזר את נתוני הדוח, פועלים לפי ההוראות לשיטה המועדפת:
gcloud
כדי לאחזר את נתוני הדוח, משתמשים בפקודה gcloud beta app-optimize reports read הבאה.
gcloud beta app-optimize reports read REPORT_ID \
--project=PROJECT_ID \
--location=global
Python
קוד Python הבא משתמש ב-AppOptimizeClient.read_report() כדי לאחזר את נתוני הדוח.
from google.cloud import appoptimize_v1beta
project_id = "PROJECT_ID"
report_id = "REPORT_ID"
name = f"projects/{project_id}/locations/global/reports/{report_id}"
# Create the App Optimize client and read your report's data
client = appoptimize_v1beta.AppOptimizeClient()
request = appoptimize_v1beta.ReadReportRequest(
name=name,
)
result = client.read_report(request=request)
# Display the report's data
print(result)
REST
אחרי שה-LRO מסתיים, משתמשים בשיטה המותאמת אישית :read של ה-API ל-REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{}' \
"https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports/REPORT_ID:read"
התשובה מה-API מכילה את שורות הנתונים של הדוח ואת הגדרות העמודות. דוגמה לתשובה מוצלחת:
{
"rows": [
[
"us-central1",
"Compute Engine",
"projects/PROJECT_ID",
"6EC2-384A-47D9",
{
"currency_code": "USD",
"units": "25",
"nanos": 750000000
}
],
[
"us-central1",
"Cloud Storage",
"projects/PROJECT_ID",
"9ADA-9ADC-2FBE",
{
"currency_code": "USD",
"units": "5",
"nanos": 100000000
}
],
[
"europe-west1",
"Compute Engine",
"projects/PROJECT_ID",
"6EC2-384A-47D9",
{
"currency_code": "USD",
"units": "18",
"nanos": 500000000
}
],
[
"us-central1",
"Compute Engine",
"projects/PROJECT_ID",
"F61D-4D51-AAFC",
{
"currency_code": "USD",
"units": "12",
"nanos": 200000000
}
]
],
"columns": [
{
"name": "location",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "product_display_name",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "project",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "sku",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "cost",
"type": "RECORD",
"mode": "NULLABLE",
"columns": [
{
"name": "currency_code",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "units",
"type": "INT64",
"mode": "NULLABLE"
},
{
"name": "nanos",
"type": "INT64",
"mode": "NULLABLE"
}
]
}
],
"next_page_token": ""
}
דוחות עם הרבה שורות מחולקים לדפים. במאמר קריאת נתונים מדוח מוסבר איך לעבד כמה דפים.
כדי להבין את הערכים בשדה cost, אפשר לעיין במאמר בנושא הסבר על מדדי עלות.
מידע נוסף על הנתונים והסבר על המגבלות שלהם זמינים במאמר הסבר על הנתונים.
הסרת המשאבים
App Optimize API מוחק אוטומטית את הדוח 24 שעות אחרי שהוא נוצר. כדי למחוק את הדוח לפני כן, פועלים לפי ההוראות לשיטה המועדפת:
gcloud
משתמשים בפקודה gcloud beta app-optimize reports delete כדי להסיר את הדוח.
gcloud beta app-optimize reports delete REPORT_ID \
--project=PROJECT_ID \
--location=global
Python
הקוד הבא משתמש בפקודה AppOptimizeClient.delete_report() כדי להסיר את הדוח.
from google.cloud import appoptimize_v1beta
project_id = "PROJECT_ID"
report_id = "REPORT_ID"
name = f"projects/{project_id}/locations/global/reports/{report_id}"
client = appoptimize_v1beta.AppOptimizeClient()
request = appoptimize_v1beta.DeleteReportRequest(name=name)
client.delete_report(request=request)
print(f"Deleted report: {name}")
REST
שליחת בקשת HTTP DELETE לנקודת הקצה של המשאב בדוח:
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports/REPORT_ID"
המאמרים הבאים
- מידע נוסף על דוחות
- אפשר לעיין בדרכים אחרות לניהול דוחות:
- מידע נוסף זמין במאמר סקירה כללית על App Optimize API.