יצירת פרופיל לאפליקציות שפועלות מחוץ ל- Google Cloud

בדף הזה מוסבר איך ליצור פרופיל של אפליקציות שפועלות מחוץ ל- Google Cloud.

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

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

  1. יוצרים Google Cloud פרויקט ומפעילים את ה-API.
  2. צריך לקבל פרטי כניסה לסוכן ליצירת פרופילים כדי להשתמש בהם כשמעלים פרופילים.
  3. מגדירים את הסוכן לשימוש בפרטי הכניסה ובמזהה של הפרויקטGoogle Cloud .

יצירת Google Cloud פרויקט

במסוף Google Cloud , בדף לבחירת הפרויקט לוחצים על יצירת פרויקט כדי ליצור פרויקט חדש ב- Google Cloud .

אילו תפקידים צריך כדי ליצור פרויקט

כדי ליצור פרויקט, צריך את התפקיד Project Creator (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים

כניסה לדף לבחירת הפרויקט

הפעלת Profiler API

  1. מפעילים את Cloud Profiler API.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    להפעלת ה-API

  2. אם מוצג הכיתוב API enabled, סימן שממשק ה-API כבר מופעל. אם לא, לוחצים על הכפתור הפעלה.

קבלת פרטי כניסה לסוכן

יש שתי דרכים להשיג פרטי כניסה לשימוש הסוכן:

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

שימוש בחשבונות שירות

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

  1. יוצרים חשבון שירות. לדוגמה, באמצעות Google Cloud CLI:

    gcloud iam service-accounts create MY_SVC_ACCT_ID --display-name "my service account"
    

    מידע נוסף זמין במאמר יצירת חשבון שירות.

  2. מקצים לחשבון השירות את התפקיד roles/cloudprofiler.agent, כדי שיוכל לכתוב נתוני פרופילים. לדוגמה, באמצעות Google Cloud CLI:

     gcloud projects add-iam-policy-binding GCP_PROJECT_ID \
         --member serviceAccount:MY_SVC_ACCT_ID@GCP_PROJECT_ID.iam.gserviceaccount.com \
         --role roles/cloudprofiler.agent
    

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

  3. יוצרים מפתח JSON לחשבון השירות. לדוגמה, באמצעות Google Cloud CLI:

     gcloud iam service-accounts keys create \
         ~/key.json \
         --iam-account MY_SVC_ACCT_ID@GCP_PROJECT_ID.iam.gserviceaccount.com
    

    מידע נוסף זמין במאמר יצירת מפתחות של חשבונות שירות.

  4. במכונה שבה יפעל סוכן הפרופילים:

    1. מניחים עותק של הקובץ שמכיל את מפתח ה-JSON שיצרתם.
    2. מגדירים את משתנה הסביבה GOOGLE_APPLICATION_CREDENTIALS לשם המלא של הקובץ שמכיל את מפתח ה-JSON. משתנה הסביבה הזה צריך להיות גלוי לתהליך שמריץ את סוכן הפרופילים, לכן אם משתמשים בסקריפט או ב-Dockerfile כדי להריץ את התהליך, צריך לכלול שם את משתנה הסביבה.

שימוש ב-Application Default Credentials

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

כדי להשתמש ב-Application Default Credentials, מריצים את הפקודה הבאה ב-Google Cloud CLI:

 gcloud auth application-default login

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

קישור הסוכן ל Google Cloud פרויקט

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

המשך

מציינים פרמטר נוסף, ProjectID, באובייקט profiler.Config שמתואר במאמר Profiling Go applications:

 profiler.Config{ProjectID: "GCP_PROJECT_ID", ...}

Java

מציינים דגל נוסף של הגדרת סוכן Java,‏ cprof_project_id, בהפעלת Java:

 -cprof_project_id=GCP_PROJECT_ID

אם לאפליקציה אין גישה לשרת המטא-נתונים של Compute Engine, מוצגות הודעות שדומות להודעות הבאות:

     Error making HTTP request for 169.254.169.254:80/computeMetadata/v1/instance/zone
כדי להפסיק את ההודעות האלה, מוסיפים את -cprof_zone_name=VALUE לדגלי ההגדרה של הנציג ומפעילים מחדש את האפליקציה. בתרחיש הזה, מחליפים את VALUE במחרוזת תיאורית כמו test.

Node.js

מציינים פרמטר נוסף, projectID, באובייקט serviceContext שמתואר במאמר יצירת פרופילים של אפליקציות Node.js:

projectId: 'GCP_PROJECT_ID',
serviceContext: {
  ...
}

Python

מציינים פרמטר נוסף, project_id, בקריאה לשיטת start שמתוארת במאמר יצירת פרופילים של אפליקציות Python:

googlecloudprofiler.start(..., project_id='GCP_PROJECT_ID')

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