במאמר הזה מוסבר איך לפתור בעיות ב-VM Manager.
לפני שמתחילים
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא התהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Cloud de Confiance by S3NS . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים האלה:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Cloud de Confiance כדי לגשת לשירותים ולממשקי ה-API של Cloud de Confiance by S3NS , לא צריך להגדיר אימות.
gcloud
-
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם. אחרי שנכנסתם לחשבון, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud init
-
- הגדרת אזור ותחום כברירת מחדל.
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Cloud de Confiance .
סקירה כללית
כדי לפתור בעיות, קודם צריך לוודא ש-VM Manager מוגדר כמו שצריך. אם ההגדרה נכונה ועדיין יש בעיות, אפשר לבדוק את היומנים. כשבודקים את היומנים, אפשר לזהות בעיות במכונה הווירטואלית או בתהליך העבודה של VM Manager, כמו שגיאות בפקודות או בסקריפטים, שאפשר לבודד ולפתור.
אפשר לאסוף את המידע הבא מהיומנים:
כל הודעת שגיאה או אזהרה שנרשמה על ידי ה-VM. היומנים האלה עוזרים לזהות שגיאות ברמת ה-VM, או שגיאות משירותים אחרים שפועלים ב-VM. כדי לבדוק את היומנים האלה, קראו את המאמר בדיקת Cloud Logging.
מידע מפורט על תוצאות ניפוי הבאגים שנרשם על ידי סוכן OS Config. היומנים האלה עוזרים לכם לזהות בעיות בכל אחת מהפעולות שמריץ VM Manager. כדי לבדוק את יומני ניפוי הבאגים של סוכן OS Config, קראו את המאמר בדיקת יומני ניפוי באגים.
אחרי שמזהים את הבעיות או השגיאות, אפשר גם לעיין בקטע שגיאות נפוצות כדי לראות תיקונים אפשריים, או לעיין בפתרון העקיף לניהול פריסות של תיקונים בארגון.
בדיקה של Cloud Logging
אתם יכולים להשתמש ב Cloud de Confiance קישורים המהירים במסוף לכל תכונה כדי להציג את היומנים.
תיקון למערכת ההפעלה
- במסוף Cloud de Confiance , נכנסים לכרטיסייה Jobs run בדף Patch.
- לוחצים על השם של משימת התיקון שרוצים לנפות בה באגים.
- עוברים לקטע Updated VM instances.
- במכונה וירטואלית ספציפית, בקטע Logs לוחצים על View.
כללי מדיניות של מערכת ההפעלה
התהליך הזה נתמך במדיניות של מערכת ההפעלה. במדיניות אורח (בטא), משתמשים באפשרות של יומני ניפוי באגים, בקטע הבא.
- במסוף Cloud de Confiance , נכנסים לכרטיסייה VM instances בדף OS policies.
- לוחצים על שם המכונה הווירטואלית שרוצים לנפות בה באגים.
- עוברים לקטע כללי מדיניות.
- בקטע יומנים, לוחצים על הצגה.
כלים לניהול מדיניות של מערכת ההפעלה
- במסוף Cloud de Confiance , נכנסים לכרטיסייה OS policy orchestrators בדף OS policies.
- לוחצים על השם של מתזמן מדיניות מערכת ההפעלה שרוצים לנפות בו באגים.
- עוברים לקטע Logs ובודקים את הרשומה ביומן.
בדיקת יומני ניפוי באגים
כדי לזהות בעיות בכל תכונה של VM Manager, אפשר להפעיל ניפוי באגים לסוכן OS Config ולצפות ביומן ניפוי הבאגים.
הפעלת רישום ביומן של ניפוי באגים לסוכן OS Config
כדי להפעיל את יומן ניפוי הבאגים, צריך להגדיר את המטא-נתונים של osconfig-log-level=debug במכונה הווירטואלית או בפרויקט.
כדי להפעיל יומן ניפוי באגים במכונה הווירטואלית:
המסוף
נכנסים לדף VM instances במסוף Cloud de Confiance .
לוחצים על שם המכונה הווירטואלית שרוצים להגדיר לה את ערך המטא-נתונים.
בדף Instance details, לוחצים על Edit כדי לערוך את ההגדרות.
בקטע Custom metadata, מוסיפים את רשומות המטא-נתונים הבאות:
מפתח:
osconfig-log-level
ערך:debugלוחצים על Save כדי להחיל את השינויים על ה-VM.
gcloud
משתמשים בפקודה instances add-metadata עם הדגל --metadata=osconfig-log-level=debug.
gcloud compute instances add-metadata VM_NAME \
--metadata=osconfig-log-level=debug
מחליפים את VM_NAME בשם של המכונה הווירטואלית.
REST
כדי להגדיר מטא-נתונים של מכונה, פועלים לפי ההוראות ל-API בנושא הגדרת מטא-נתונים של מכונה.
צמד המפתח/ערך הבא נדרש כחלק מהמאפיין metadata:
מפתח: osconfig-log-level
ערך: debug
צפייה ביומני ניפוי באגים
כשמפעילים את יומן ניפוי הבאגים, סוכן OS Config כותב רשומות ביומן ב-Cloud Logging ובמסוף של היציאה הטורית.
אחרי שמפעילים את יומן ניפוי הבאגים ב-VM, סוכן OS Config מתחיל לכתוב הודעות ניפוי באגים ב-Cloud Logging תוך כ-10 דקות. כדי לקצר את זמן ההמתנה, אפשר להפעיל מחדש את הסוכן או את ה-VM. מידע נוסף על Cloud Logging זמין במאמר צפייה ביומנים של Cloud Logging.
כדי לראות את יומני ניפוי הבאגים, אתם יכולים להשתמש באפשרויות הבאות:
- Cloud Logging: באמצעות מסוף Cloud de Confiance או Google Cloud CLI
מסוף של יציאה טורית
המסוף
נכנסים לדף Logging > Logs Explorer במסוףCloud de Confiance :
אם צריך, בוחרים פרויקט קיים ב- Cloud de Confiance בחלק העליון של הדף, או יוצרים פרויקט חדש.
ברשימה הנפתחת Resource, בוחרים באפשרות VM Instance. מוצגת רשימה של המכונות הווירטואליות הזמינות (
instance_id).לוחצים על המכונה הווירטואלית שרוצים לראות.
לוחצים על הוספה.
ברשימה הנפתחת Log name, בוחרים באפשרות OSConfigAgent.
לוחצים על הוספה.
השאילתה אמורה להיראות כך:
resource.type="gce_instance" resource.labels.instance_id="INSTANCE_ID" logName="projects/PROJECT_ID/logs/OSConfigAgent"
לוחצים על Run query.
gcloud
מריצים את הפקודה gcloud logging read.
gcloud logging read "resource.type=gce_instance AND logName=projects/PROJECT_ID/logs/OSConfigAgent"
מחליפים את PROJECT_ID במזהה הפרויקט.
יציאה טורית
כדי להציג את המידע של יומן ניפוי הבאגים ממסוף היציאה הטורית, קראו את המאמר הצגת הפלט של היציאה הטורית.
שגיאות נפוצות
בעיות באימות
כדי ש-VM Manager יפעל, צריך:
- חשבון שירות מצורף. VM Manager משתמש בחשבון השירות הזה כדי לחתום על בקשות לשירות ה-API.
- מוודאים שלחשבון השירות המצורף יש את התפקיד
roles/logging.logWriterכדי לכתוב יומנים ב-Logging API. - סוכן שירות של Google Cloud OS Config. VM Manager יוצר את סוכן השירות הזה כשמתחילים משימות תיקון, ונותן לו את התפקיד "סוכן שירות של Cloud OS Config". כדי ליצור מדיניות של מערכת ההפעלה, לא צריך להגדיר את סוכן השירות הזה.
אם אתם משתמשים ב-VM Manager ואין לכם חשבון שירות מצורף או סוכן שירות של Google Cloud OS Config, יכול להיות שתראו את השגיאות הבאות בזמן העבודה עם משימות תיקון:
Service account permissions are missing. Verify that the service account has the correct permissions and try again.
OSConfigAgent Error main.go:88: error getting token from metadata: metadata: GCE metadata "instance/service-accounts/default/identity?audience=osconfig.googleapis.com&format=full" not defined
message: "Error running OPERATION_NAME: error calling OPERATION_NAME: code: "PermissionDenied", message: "The caller does not have permission", details: []"
בעיות באימות יכולות גם למנוע ממכונות וירטואליות להופיע בלוח הבקרה של התיקונים.
כדי לפתור את הבעיות האלה, אתם יכולים לנסות את הפתרונות הבאים:
- מוודאים שלכל המכונות הווירטואליות יש חשבון שירות מצורף.
מוודאים שהתפקיד "סוכן שירות של Cloud OS Config" (
roles/osconfig.serviceAgent) מוגדר לסוכן השירות של Google Cloud OS Config.gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-osconfig.s3ns-system.iam.gserviceaccount.com' \ --role='roles/osconfig.serviceAgent'
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט -
PROJECT_NUMBER: מספר הפרויקט
-
שגיאה בהחרגת חבילות מעדכוני תיקונים
אם תציינו תווים כלליים לחיפוש או תווים מיוחדים בשם של חבילות כשאתם מחריגים חבילות במשימת תיקון, יכול להיות שהכלי לניהול תיקונים של מערכת ההפעלה יתעלם מהרשימה ויעדכן את כל החבילות.
כדי לפתור את הבעיה, מעדכנים את סוכן OS Config לגרסה 20220829.00 ומשתמשים בלוכסנים (/) כדי לעטוף את שם החבילה.
בדוגמה הבאה, ניהול התיקונים של מערכת ההפעלה מחריג חבילות yum עם הקידומת google- בשם החבילה.
gcloud compute os-config patch-jobs execute --instance-filter-all
--yum-excludes=/google-.*/
פתרון עקיף לניהול פריסות של תיקונים בארגון
פריסות של תיקונים והטמעות של תיקונים מוגדרות לפרויקטים ספציפיים ב- Cloud de Confiance , בניגוד למדיניות של מערכת ההפעלה, שאותה אפשר לתזמר בארגון או בתיקייה באמצעות כלי תזמור של מדיניות.
כדי לנהל פריסות של תיקונים בקנה מידה נרחב, אתם יכולים להשתמש ב-מאגר משאבי ענן וב-Google Cloud CLI בסקריפט Bash כדי לעבור על כל הפרויקטים בארגון. הסקריפט הזה מאפשר לכם לבצע את הפעולות הבאות:
ההרשאות הנדרשות ומזהה הארגון
לפני שמריצים את הסקריפטים שבקטע הזה, צריך לוודא שיש לכם את ההרשאות הנדרשות לניהול זהויות והרשאות גישה (IAM) ואת מזהה הארגון:
ברמת הארגון: כדי להציג את כל הפרויקטים בארגון באמצעות מאגר משאבי ענן, לחשבון המשתמש או לחשבון השירות צריכה להיות ההרשאה
cloudasset.assets.searchAllResources(שכלולה בתפקיד 'צפייה בנכסים ב-Cloud',roles/cloudasset.viewer) בארגון.רמת פרויקט היעד: בהתאם למשימות שאתם מריצים בארגון, לחשבון המשתמש או לחשבון השירות שלכם צריכות להיות ההרשאות הבאות בכל פרויקט יעד (לדוגמה, הרשאות שעוברות בירושה מקישור תפקידים ברמת הארגון):
כדי להפעיל את OS Config API ולהגדיר את המטא-נתונים של הפרויקט:
serviceusage.services.enable(אדמין של Service Usage,roles/serviceusage.serviceUsageAdmin) ו-compute.projects.setCommonInstanceMetadata(אדמין מכונות של Compute (v1),roles/compute.instanceAdmin.v1).כדי ליצור פריסות של תיקונים:
osconfig.patchDeployments.create(אדמין של פריסת תיקונים ב-OS Config,roles/osconfig.patchDeploymentAdmin).כדי להציג רשימה של משימות תיקון ופרטים של מכונות וירטואליות:
osconfig.patchJobs.listו-osconfig.patchJobs.get(צפייה במשימות תיקון של OS Config,roles/osconfig.patchJobViewer).
כדי למצוא את מזהה הארגון, מריצים את הפקודה gcloud projects get-ancestors לכל פרויקט בארגון:
gcloud projects get-ancestors PROJECT_ID
מחליפים את PROJECT_ID במזהה של פרויקט בארגון. בפלט מופיעות תיקיות ההורה של הפרויקט ומזהה ה-organization.
הפעלת VM Manager בפרויקטים שונים
כדי להפעיל את VM Manager בכל הפרויקטים הקיימים והעתידיים בארגון או בתיקייה, Google ממליצה להשתמש בהפעלה היררכית של שירותים ובכללי מדיניות של הארגון או ב-Terraform.
לחלופין, כדי להפעיל את OS Config API (osconfig.googleapis.com) ולהגדיר את המטא-נתונים של הפרויקט enable-osconfig=TRUE בכל הפרויקטים הקיימים בארגון באמצעות סקריפט Bash, מריצים את הפקודה הבאה:
for project in $(gcloud asset search-all-resources \
--scope=organizations/ORGANIZATION_ID \
--asset-types=cloudresourcemanager.googleapis.com/Project \
--format="csv(additionalAttributes.projectId)" | sed 1d | sort); do
gcloud services enable osconfig.googleapis.com --project="$project"
gcloud compute project-info add-metadata --project="$project" \
--metadata=enable-osconfig=TRUE
done
מחליפים את ORGANIZATION_ID במזהה הארגון.
יצירת פריסת תיקונים בכמה פרויקטים
כדי להחיל לוח זמנים סטנדרטי לפריסת תיקונים בכל הפרויקטים בארגון, יוצרים קובץ תצורה לפריסת תיקונים ומחילים אותו על כל פרויקט:
יוצרים קובץ תבנית בפורמט JSON או YAML בשם
patch_deployment_template.json, שמגדיר את המסנן של מכונת היעד, את הגדרת התיקון ואת לוח הזמנים. למידע נוסף על שדות התצורה הנתמכים, קראו את המאמר יצירת פריסת תיקונים ואת ההפניה למשאבPatchDeployment.לדוגמה, קובץ ה-
patch_deployment_template.jsonהבא מתזמן משימת תיקון שבועית חוזרת בכל יום שלישי בשעה 19:30 באזור הזמןAmerica/Los_Angelesלכל המכונות הווירטואליות בפרויקט:{ "instanceFilter": { "all": true }, "patchConfig": { "rebootConfig": "DEFAULT" }, "recurringSchedule": { "frequency": "WEEKLY", "weekly": { "dayOfWeek": "TUESDAY" }, "timeOfDay": { "hours": 19, "minutes": 30 }, "timeZone": { "id": "America/Los_Angeles" } } }מריצים את הלולאה הבאה כדי ליצור את פריסת התיקון בכל פרויקט בארגון, באמצעות הפקודה
gcloud compute os-config patch-deployments create:for project in $(gcloud asset search-all-resources \ --scope=organizations/ORGANIZATION_ID \ --asset-types=cloudresourcemanager.googleapis.com/Project \ --format="csv(additionalAttributes.projectId)" | sed 1d | sort); do gcloud compute os-config patch-deployments create patch-"$project" \ --project="$project" \ --file=patch_deployment_template.json doneמחליפים את
ORGANIZATION_IDבמזהה הארגון.
ייצוא תוצאות של משימות תיקון בפרויקטים לקובץ CSV
כדי לבדוק את התוצאות של משימות התיקון, אתם יכולים להשתמש בפקודה gcloud compute os-config patch-jobs list-instance-details כדי לייצא לקובץ CSV את הפרטים של מכונות וירטואליות שבהן משימות התיקון נכשלו או הצליחו.
משימת תיקון אחת: כדי לייצא את המכונות הווירטואליות שנכשלו או הצליחו במשימת תיקון ספציפית, מריצים את הפקודות הבאות:
מכונות וירטואליות שהייצוא שלהן נכשל:
gcloud compute os-config patch-jobs list-instance-details PATCH_JOB_ID \ --project=PROJECT_ID \ --filter="state:(FAILED OR TIMED_OUT OR NO_AGENT_DETECTED)" \ --format="csv(name.basename():label=INSTANCE_NAME,zone:label=ZONE,state:label=STATE,failureReason:label=FAILURE_REASON)" > failed_patches.csvמכונות וירטואליות שהייצוא שלהן הצליח:
gcloud compute os-config patch-jobs list-instance-details PATCH_JOB_ID \ --project=PROJECT_ID \ --filter="state=SUCCEEDED" \ --format="csv(name.basename():label=INSTANCE_NAME,zone:label=ZONE,state:label=STATE,attemptCount:label=ATTEMPT_COUNT)" > succeeded_patches.csv
מחליפים את מה שכתוב בשדות הבאים:
PATCH_JOB_ID: המזהה של משימת התיקון
PROJECT_ID: מזהה הפרויקט
כל הפרויקטים בארגון: כדי לעבור על כל הפרויקטים בארגון ולייצא לקובצי CSV את המכונות הווירטואליות שנכשלו ואת אלה שהצליחו בכל משימות התיקון, מריצים את הסקריפט הבא:
echo "PROJECT_ID,PATCH_JOB_ID,INSTANCE_NAME,ZONE,STATE,FAILURE_REASON" > failed_patches.csv echo "PROJECT_ID,PATCH_JOB_ID,INSTANCE_NAME,ZONE,STATE,ATTEMPT_COUNT" > succeeded_patches.csv for project in $(gcloud asset search-all-resources \ --scope=organizations/ORGANIZATION_ID \ --asset-types=cloudresourcemanager.googleapis.com/Project \ --format="csv(additionalAttributes.projectId)" | sed 1d | sort); do for job in $(gcloud compute os-config patch-jobs list \ --project="$project" \ --format="value(name.basename())"); do gcloud compute os-config patch-jobs list-instance-details "$job" \ --project="$project" \ --filter="state:(FAILED OR TIMED_OUT OR NO_AGENT_DETECTED)" \ --format="csv[no-heading](name.basename(),zone,state,failureReason)" | \ sed "s/^/${project},${job},/" >> failed_patches.csv gcloud compute os-config patch-jobs list-instance-details "$job" \ --project="$project" \ --filter="state=SUCCEEDED" \ --format="csv[no-heading](name.basename(),zone,state,attemptCount)" | \ sed "s/^/${project},${job},/" >> succeeded_patches.csv done doneמחליפים את
ORGANIZATION_IDבמזהה הארגון.כברירת מחדל, הפקודה
gcloud compute os-config patch-jobs listמחזירה עד 10 משימות תיקון לכל פרויקט. כדי לייצא תוצאות רק מהטמעת התיקון האחרונה בכל פרויקט, מוסיפים את--sort-by="~update_time" --limit=1לפקודהgcloud compute os-config patch-jobs list.
כדי לראות דוחות על תאימות תיקונים ונקודות חולשה ברמת הארגון במסוףCloud de Confiance או ב-BigQuery, קראו את המאמרים הצגת סיכום תיקונים למכונות וירטואליות בארגון או בתיקייה והצגת דוחות על נקודות חולשה בארגון.