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

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

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

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

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

כמה מיקומים

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

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

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

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

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

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

ארכיטקטורה

יצירת פרויקט

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

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance 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

  2. Verify that billing is enabled for your Cloud de Confiance project.

  3. Enable the BigQuery, Cloud Logging, Resource Manager, Cloud Build, Cloud Scheduler, and Cloud Run APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

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

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

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

    כניסה ל Cloud de Confiance מסוף

  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.s3ns-system.iam.gserviceaccount.com" \
      --role "roles/iam.serviceAccountUser"
    
    gcloud projects add-iam-policy-binding $(gcloud config get-value core/project) \
      --member "serviceAccount:$PROJECT_NUMBER@cloudbuild.s3ns-system.iam.gserviceaccount.com" \
      --role "roles/run.developer"
    
    gcloud projects add-iam-policy-binding $(gcloud config get-value core/project) \
      --member "serviceAccount:$PROJECT_NUMBER@cloudbuild.s3ns-system.iam.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. שולחים build ל-Cloud Build:

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

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

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

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

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

  • ‫Compute Engine API מופעל.
  • הפרויקט מעניק גישה לחשבון השירות של הכלי עם התפקידים Compute Viewer (roles/compute.viewer) ו-Logs 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 במזהה של הפרויקט שרוצים שכלי למעקב אחרי רישיונות ינתח. Cloud de Confiance

תיקייה

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. במסוף Cloud de Confiance , עוברים אל 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, לוחצים על אישור.
    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 אם הפקודה מופעלת בשרת לדייר יחיד, F אחרת
node_type מחרוזת סוג הצומת של שרתים לדייר יחיד (sole-tenant)
node_project_id מחרוזת מזהה הפרויקט של הצומת. הערך הזה עשוי להיות שונה מ-instance_project_id במקרה של צמתים משותפים של דיירים יחידים
server_id מחרוזת מזהה ייחודי של שרת פיזי
operating_system_family מחרוזת WIN,‏ LINUX או null אם לא מזוהה
לקבל רישיון מחרוזת מחרוזת הרישיון שבה נעשה שימוש בתמונה
license_type מחרוזת BYOL,‏ SPLA או null אם לא מזוהה
machine_type מחרוזת סוג המכונה של המופע
memory_mb מספר שלם כמות ה-RAM (ב-MB) שהוקצתה למופע
vcpu_count מספר שלם מספר המעבדים הווירטואליים שהוקצו למופע
maintenance_policy מחרוזת מדיניות תחזוקה של מופע
start_date TIMESTAMP תחילת מיקום המודעה
end_date TIMESTAMP סוף מיקום המודעה

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

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

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

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

    כניסה ל Cloud de Confiance מסוף

  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. שולחים build ל-Cloud Build:

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

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