מעקב אחר השימוש ב-VM ובשרתים לדייר יחיד (sole-tenant) לצורך דיווח על רישיונות

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

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

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

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

מספר מיקומים

בפעם הראשונה שמפעילים את הכלי למעקב אחרי רישיונות, הוא מנתח את השימוש ב-Compute Engine ב-90 הימים האחרונים וכותב את התוצאה ב-BigQuery. בהפעלות הבאות, הכלי מנתח את ההפרש בין ההפעלה האחרונה לבין היום הנוכחי, ומעדכן את מערך הנתונים ב-BigQuery בהתאם.

הכלי למעקב אחרי רישיונות מחליף את תכונת דוח השימוש שסופקה על ידי IAP Desktop.

עלויות

במדריך הזה משתמשים ברכיבים של Google Cloud, והשימוש בהם כרוך בתשלום, כולל:

השתמשו במחשבון עלויות כדי ליצור הערכת עלויות בהתאם לשימוש החזוי.

פריסת הכלי למעקב אחרי רישיונות

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

התרשים הבא ממחיש את הפתרון שמתואר במאמר הזה:

  • הכלי למעקב אחרי רישיונות נפרס ב-Cloud Run ומוגדר לנתח את היומנים של פרויקט אחד או יותר.
  • פעם ביום, Cloud Scheduler מפעיל את המשימה ב-Cloud Run, וכתוצאה מכך הכלי למעקב אחרי רישיונות מעדכן מערך נתונים ב-BigQuery.
  • מרכז בקרה ב-Data Studio ממחיש באופן חזותי את הנתונים מ-BigQuery ומאפשר למשתמשים לגשת אליהם.

ארכיטקטורה

יצירת פרויקט

כדי להגדיר את Cloud Run ואת Cloud Scheduler, צריך ליצור פרויקט חדש:

  1. נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the BigQuery, Cloud Logging, Resource Manager, Cloud Build, Cloud Scheduler, and Cloud Run APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the BigQuery, Cloud Logging, Resource Manager, Cloud Build, Cloud Scheduler, and Cloud Run APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

פריסת האפליקציה

עכשיו פורסים את הכלי למעקב אחרי רישיונות ב-Cloud Run:

  1. במסוף Google Cloud , לוחצים על הכפתור Activate Cloud Shell מפעילים את Cloud Shell. כדי לפתוח את Cloud Shell.

    כניסה למסוף Google Cloud

  2. מגדירים משתנה סביבה שיכיל את מזהה הפרויקט:

    gcloud config set project PROJECT_ID
    

    מחליפים את PROJECT_ID במזהה הפרויקט.

  3. מגדירים את האזור של Cloud Run לפריסה:

    gcloud config set run/region REGION
    

    מחליפים את REGION באזור שתומך ב-Cloud Run וב-Cloud Scheduler.

  4. יוצרים חשבון שירות לכלי:

    SERVICE_ACCOUNT=$(gcloud iam service-accounts create license-tracker \
      --display-name "License Tracker" \
      --format "value(email)")
    
  5. מאפשרים לשירות ליצור מערך נתונים ב-BigQuery ולגשת אליו, ולהתחיל משימות של Cloud Run באותו פרויקט:

    gcloud projects add-iam-policy-binding $(gcloud config get-value core/project) \
      --member "serviceAccount:$SERVICE_ACCOUNT" \
      --role "roles/bigquery.admin"
    
    gcloud projects add-iam-policy-binding $(gcloud config get-value core/project) \
      --member "serviceAccount:$SERVICE_ACCOUNT" \
      --role "roles/run.invoker"
    
  6. מאפשרים ל-Cloud Build לבצע פריסות של Cloud Run ולנהל משימות של Cloud Scheduler:

    PROJECT_NUMBER=$(gcloud projects describe $(gcloud config get-value core/project) --format='value(projectNumber)')
    
    gcloud iam service-accounts add-iam-policy-binding $SERVICE_ACCOUNT \
      --member "serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \
      --role "roles/iam.serviceAccountUser"
    
    gcloud projects add-iam-policy-binding $(gcloud config get-value core/project) \
      --member "serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \
      --role "roles/run.developer"
    
    gcloud projects add-iam-policy-binding $(gcloud config get-value core/project) \
      --member "serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \
      --role "roles/cloudscheduler.admin"
    
  7. משכפלים את המאגר ב-GitHub ועוברים להסתעפות latest:

    git clone https://github.com/GoogleCloudPlatform/gce-license-tracker.git
    cd gce-license-tracker
    git checkout latest
    
  8. שולחים גרסה ל-Cloud Build:

    gcloud builds submit . --substitutions=_REGION=$(gcloud config get-value run/region)
    

    ה-build פורס את אפליקציית כלי למעקב אחרי רישיונות ב-Cloud Run ומגדיר את Cloud Scheduler להפעיל את המשימה פעם ביום.

    התהליך נמשך כ-3 דקות.

בחירת פרויקטים לניתוח

הכלי למעקב אחרי רישיונות מנתח את כל הפרויקטים ב- Google Cloud שעומדים בכל התנאים הבאים:

  • ‫Compute Engine API מופעל.
  • הפרויקט מעניק גישה לצפייה ב-Compute (roles/compute.viewer) ולצפייה ביומנים (roles/logging.viewer) לחשבון השירות של הכלי.

כדי לכלול בניתוח פרויקט, תיקייה או ארגון שלם:

פרויקט

SCOPE_ID=RESOURCE_PROJECT_ID
SCOPE_TYPE=projects

gcloud projects add-iam-policy-binding $SCOPE_ID \
  --member "serviceAccount:$SERVICE_ACCOUNT" \
  --role "roles/compute.viewer" \
  --condition None
gcloud projects add-iam-policy-binding $SCOPE_ID \
  --member "serviceAccount:$SERVICE_ACCOUNT" \
  --role "roles/logging.viewer" \
  --condition None

מחליפים את RESOURCE_PROJECT_ID במזהה הפרויקט ב- Google Cloudשרוצים לנתח באמצעות הכלי למעקב אחרי רישיונות.

תיקייה

SCOPE_ID=RESOURCE_FOLDER_ID
SCOPE_TYPE=folders

gcloud resource-manager folders add-iam-policy-binding $SCOPE_ID \
  --member "serviceAccount:$SERVICE_ACCOUNT" \
  --role "roles/compute.viewer" \
  --condition None
gcloud resource-manager folders add-iam-policy-binding $SCOPE_ID \
  --member "serviceAccount:$SERVICE_ACCOUNT" \
  --role "roles/logging.viewer" \
  --condition None

מחליפים את RESOURCE_FOLDER_ID במזהה התיקייה שמכילה את הפרויקטים שרוצים לנתח באמצעות הכלי למעקב אחרי רישיונות.

ארגון

SCOPE_ID=ORGANIZATION_ID
SCOPE_TYPE=organizations

gcloud organizations add-iam-policy-binding $SCOPE_ID \
  --member "serviceAccount:$SERVICE_ACCOUNT" \
  --role "roles/compute.viewer" \
  --condition None
gcloud organizations add-iam-policy-binding $SCOPE_ID \
  --member "serviceAccount:$SERVICE_ACCOUNT" \
  --role "roles/logging.viewer" \
  --condition None

מחליפים את ORGANIZATION_ID במזהה הארגון.

התחלת הניתוח הראשוני

עכשיו אפשר להתחיל בניתוח ראשוני:

  1. במסוף Google Cloud , נכנסים לדף Cloud Run > Jobs.

    כניסה לדף Cloud Run jobs

  2. בוחרים את המשימה license-tracker כדי לפתוח את פרטי המשימה.

  3. לוחצים על Execute.

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

    בסיום המשימה, הפרויקט יכיל מערך נתונים ב-BigQuery בשם license_usage.

  4. אופציונלי: צפייה ביומנים ב-Cloud Logging:

    כניסה ל-Logging

יצירת מרכז בקרה

עכשיו יוצרים לוח בקרה ב-Data Studio על ידי יצירת עותק של לוח בקרה לדוגמה:

  1. מעתיקים את מקורות הנתונים של מרכז הבקרה:

    1. צמתים
    2. צמתים עם רישיון
    3. היסטוגרמה של צמתים
    4. היסטוגרמה של מופעים

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

    1. כדי לפתוח את מקור הנתונים, לוחצים על הקישור שלמעלה.
    2. לוחצים על יצירת עותק של מקור הנתונים הזה.
    3. לוחצים על העתקת מקור הנתונים.
    4. אם מופיעה בקשה לחבר את מרכז הבקרה ל-BigQuery, לוחצים על Authorize.
    5. אם רוצים, לוחצים על הכותרת ומשנים את השם של מקור הנתונים.
    6. ברשימת הפרויקטים לחיוב, בוחרים את הפרויקט שבו השתמשתם כדי לפרוס את הכלי למעקב אחרי רישיונות.
    7. לוחצים על קישור מחדש.
    8. בתיבת הדו-שיח החלת השינויים בחיבור, לוחצים על אישור.
  2. מעתיקים את מרכז הבקרה:

    1. פותחים את מרכז הבקרה לדוגמה.

      מרכז הבקרה לא מחובר למקור נתונים, ולכן לא מוצגים בו נתונים.

    2. לוחצים על … > יצירת עותק

    3. בתיבת הדו-שיח העתקת הדוח הזה, בוחרים את העותקים של מקורות הנתונים:

      תיבת דו-שיח להעתקה

    4. לוחצים על העתקת הדוח.

      עכשיו במרכז הבקרה מוצגים הנתונים ממערך הנתונים שלכם ב-BigQuery.

לתת למשתמשים אחרים גישה למרכז הבקרה

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

  1. משתפים את מרכז הבקרה ומעניקים למשתמש הרשאת משתמש לצפות בדוח.
  2. מקצים למשתמש את התפקידים BigQuery Data Viewer‏ (roles/bigquery.dataViewer) ו-BigQuery Job User‏ (roles/bigquery.jobUser). אפשר להקצות את התפקידים האלה ברמת מערך הנתונים או ברמת הפרויקט.

התאמה אישית של מרכז הבקרה

אתם יכולים להתאים אישית את מרכז הבקרה באמצעות כלי הדוחות של Data Studio כדי לשנות תרשימים קיימים או להוסיף תרשימים.

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

עמודה סוג נתונים תיאור
instance_id מספר שלם מזהה מופע
instance_name מחרוזת שם המכונה
instance_zone מחרוזת מזהה האזור של המכונה
instance_project_id מחרוזת מזהה הפרויקט של המכונה
דיירים מחרוזת ‫S אם פועל בשרת לדייר יחיד (sole-tenant), אחרת F
node_type מחרוזת סוג הצומת של השרת לדייר יחיד (sole-tenant)
node_project_id מחרוזת מזהה הפרויקט של הצומת. הערך הזה יכול להיות שונה מ-instance_project_id במקרה של צמתים משותפים של דייר יחיד (sole-tenant)
server_id מחרוזת מזהה ייחודי של שרת פיזי
operating_system_family מחרוזת ‫WIN,‏ LINUX או null אם לא מזוהה
לקבל רישיון מחרוזת מחרוזת הרישיון שמשמשת את התמונה
license_type מחרוזת ‫BYOL,‏ SPLA או null אם לא מזוהה
machine_type מחרוזת סוג המכונה של המכונה הווירטואלית
memory_mb מספר שלם נפח ה-RAM (ב-MB) שהוקצה למכונה
vcpu_count מספר שלם מספר המעבדים הווירטואליים שהוקצו למכונה
vcpu_min_allocated מספר שלם המספר המינימלי של מעבדי vCPU שהוקצו למכונה. הערך הזה עשוי להיות שונה מ-vcpu_count כשמקצים יותר מדי מעבדים (CPU) במכונות וירטואליות של דייר יחיד
maintenance_policy מחרוזת מדיניות התחזוקה של המכונה
start_date TIMESTAMP תחילת מיקום המודעה
end_date TIMESTAMP סוף מיקום המודעה

אתם יכולים להשתמש בתצוגה placement כשאתם מתאימים אישית תרשימים קיימים או מוסיפים תרשימים משלכם למרכז הבקרה.

שדרוג הכלי למעקב אחרי רישיונות

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

  1. במסוף Google Cloud , לוחצים על הכפתור Activate Cloud Shell מפעילים את Cloud Shell. כדי לפתוח את Cloud Shell.

    כניסה למסוף Google Cloud

  2. מגדירים משתנה סביבה שיכיל את מזהה הפרויקט:

    gcloud config set project PROJECT_ID
    

    מחליפים את PROJECT_ID במזהה הפרויקט שמכיל את הפריסה הקיימת.

  3. בוחרים את האזור ב-Cloud Run של הפריסה הקיימת:

    gcloud config set run/region REGION
    
  4. משכפלים את המאגר ב-GitHub ועוברים להסתעפות latest:

    git clone https://github.com/GoogleCloudPlatform/gce-license-tracker.git
    cd gce-license-tracker
    git checkout latest
    
  5. שולחים גרסה ל-Cloud Build:

    gcloud builds submit . --substitutions=_REGION=$(gcloud config get-value run/region)
    

    ה-build מעדכן את הפריסה הקיימת, והתהליך נמשך כ-3 דקות.