למכונה של Compute Engine יש ארבע יציאות טוריות וירטואליות. מערכת ההפעלה, ה-BIOS וישויות אחרות ברמת המערכת של המופע כותבות לעיתים קרובות פלט ליציאות הטוריות, ולכן הפלט של היציאה הטורית שימושי לפתרון בעיות שקשורות לקריסות, לאתחול שנכשל, לבעיות בהפעלה או לבעיות בסגירה.
בדף הזה מתוארות שיטות לצפייה בפלט של יציאה טורית, כולל שימוש ב-Cloud Logging כדי לשמור את הפלט של יציאה טורית גם אחרי שעוצרים את המופע. אם אתם צריכים לשלוח פקודות ליציאה טורית בזמן שהמופע פועל, כדאי לעיין במאמר אינטראקציה עם המסוף הטורי.
כדי לראות את הפלט של היציאה הטורית של מופע Compute שפועל, משתמשים במסוף Google Cloud , ב-CLI של gcloud או ב-REST. ה-methods האלה מספקות רק את הפלט העדכני ביותר של 1 MB לכל יציאה. כדי לראות פלט שגודלו עולה על 1 MB לכל יציאה, או כדי לראות פלט ממופעים שהופסקו, צריך להשתמש ב-Cloud Logging.
לפני שמתחילים
- אם רוצים לרשום ביומן את הפלט של היציאה הטורית ב-Cloud Logging, כדאי לעיין במידע על Cloud Logging.
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים ולממשקי ה-API, לא צריך להגדיר אימות. Google Cloud
gcloud
-
התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud initאם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
- הגדרת אזור ותחום כברירת מחדל
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud.
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .
דרישות ומגבלות בנוגע לרשת
כדי להציג את הפלט של היציאה הטורית באמצעות מסוף Google Cloud או כדי ליצור אינטראקציה עם המסוף, הרשת והסביבה בצד הלקוח צריכות לעמוד בדרישות הבאות:
- יציאת TCP 9600: אם משתמשים בקישור Serial port 1 (console) במסוףGoogle Cloud , הרשת צריכה לאפשר תעבורת נתונים יוצאת ביציאת TCP 9600 כדי להתחבר לשער של המסוף הטורי.
- VPC Service Controls: המסוף הסדרתי האינטראקטיבי לא נתמך בהיקפי האבטחה של VPC Service Controls.
- גישה פרטית ל-Google: כתובות ה-IP הווירטואליות של הגישה הפרטית ל-Google (
private.googleapis.comאוrestricted.googleapis.com) לא תומכות בתעבורת SSH שנדרשת למסוף הטורי. כתובות ה-IP הווירטואליות האלה תומכות רק בפרוטוקולים מבוססי HTTP.
אם הרשת שלכם מגבילה את היציאות או הפרוטוקולים האלה, תוכלו להשתמש ב-Cloud Logging כדי להציג את היומנים של היציאה הטורית, כי הוא משתמש ב-HTTPS רגיל (יציאה 443).
פתרון בעיות שקשורות לכשלים ב-SSH
אם אתם צופים ביומנים של יציאה טורית כי אתם לא מצליחים להתחבר למכונה הווירטואלית באמצעות SSH, כדאי לעיין במדריך לפתרון בעיות ב-SSH כדי לראות רשימה של שגיאות נפוצות ושלבים לתיקון שלהן.
הפעלה והשבתה של רישום ביומן של פלט יציאה טורית
כדי לקבוע אם המופעים ישלחו את הפלט של היציאה הטורית אל Cloud Logging, צריך להגדיר מטא-נתונים ברמת הפרויקט או ברמת המופע. אפשר גם להשבית את התכונה לכל המשתמשים בארגון על ידי הגדרת מדיניות ארגונית.
כברירת מחדל, רישום ביומן של פלט מיציאה טורית ב-Cloud Logging מושבת. אם מפעילים את הכתיבה ליומן של פלט יציאה טורית, Cloud Logging מספק את 50 הגיביבייט (GiB) הראשונים של כתיבה ליומן בחינם בכל חודש ושומר את היומנים למשך 30 ימים.
הגדרת מטא-נתונים של פרויקט ושל מכונה
אם הרישום ב-Cloud Logging של הפלט של היציאה הטורית לא מוגבל בארגון, אפשר להפעיל או להשבית אותו בפרויקטים ובמופעי מחשוב בודדים על ידי הגדרת רשומת המטא-נתונים serial-port-logging-enable לערך true או false.
אם מגדירים רשומה של מטא-נתונים ברמת הפרויקט, כל מופעי החישוב בפרויקט מקבלים את ההגדרה הזו בירושה באופן מרומז. אם מגדירים רשומה של מטא-נתונים של מכונה, הרשומה הזו מופעלת רק למכונת ה-Compute הזו, ללא קשר להגדרות הפרויקט.
אפשר להגדיר רשומה של מטא-נתונים באמצעות מסוף Google Cloud , ה-CLI של gcloud או Compute Engine API. מידע נוסף מופיע במאמר בנושא הגדרת מטא-נתונים מותאמים אישית.
לדוגמה, הפקודה הבאה ב-CLI של gcloud מאפשרת רישום ביומן של פלט יציאה טורית ב-Cloud Logging עבור הפרויקט:
gcloud compute project-info add-metadata \
--metadata serial-port-logging-enable=trueבאופן דומה, הפקודה הבאה ב-CLI של gcloud מאפשרת רישום ביומן של פלט יציאה טורית ב-Cloud Logging עבור מופע ספציפי:
gcloud compute instances add-metadata INSTANCE_NAME \
--metadata serial-port-logging-enable=trueכדי להשבית את הרישום ביומן של פלט היציאה הטורית ב-Cloud Logging, מגדירים את serial-port-logging-enable לערך false:
gcloud compute instances add-metadata INSTANCE_NAME \
--metadata serial-port-logging-enable=falseמסנני החרגה
מתוך Cloud Logging, אפשר ליצור מסנן החרגה כדי להסיר רשומות ספציפיות של יציאות טוריות מ-Logs Explorer. לדוגמה, אם יש לכם רשומה של מטא-נתונים ברמת הפרויקט שהערך שלה הוא serial-port-logging-enable=true, אתם יכולים להשבית את רישום הפלט ביומן של היציאה הטורית במכונות וירטואליות ספציפיות באמצעות מסנן מתקדם:
logName = "projects/PROJECT_ID/logs/serialconsole.googleapis.com%2Fserial_port_1_output" resource.type = "gce_instance" resource.labels.instance_id != "INSTANCE_1_ID" resource.labels.instance_id != "INSTANCE_2_ID"
הגדרה של מדיניות הארגון
אתם יכולים להשבית את הרישום של פלט יציאה טורית ב-Cloud Logging לכל הארגון שלכם על ידי הגדרה של מדיניות ארגונית, שמגבילה הגדרות מסוימות של משאבי Google Cloud . ספציפית, צריך להגדיר את האילוץ הבוליאני הבא:
constraints/compute.disableSerialPortLogging. מידע נוסף מופיע במאמר בנושא יצירה וניהול של מדיניות הארגון.
השבתת הרישום ביומן של יציאות טוריות על ידי הגדרת constraints/compute.disableSerialPortLogging ל-true לא חלה רטרואקטיבית. מכונות וירטואליות קיימות עם רשומה במטא-נתונים שמפעילה רישום ביומן של יציאה טורית ב-Cloud Logging ימשיכו לרשום ביומן ב-Cloud Logging, אלא אם תאפסו את המטא-נתונים של המכונות האלה.
אחרי שמגדירים את האילוץ הזה בארגון לערך true, אי אפשר להגדיר מטא-נתונים של מכונה או של פרויקט כדי להפעיל רישום ביומן של פלט היציאה הטורית ב-Cloud Logging עבור מכונות בארגון.
צפייה בפלט של יציאה טורית
אפשר להשתמש במסוף, ב-CLI של gcloud או ב-REST כדי לראות את הפלט האחרון של 1MB לכל יציאה טורית ממופעים פעילים. Google Cloud כדי לראות פלט שגודלו עולה על 1 MB לכל יציאה, או כדי לראות פלט ממופעים שהופסקו, צריך להשתמש ב-Cloud Logging.
המסוף
נכנסים לדף VM instances במסוף Google Cloud .
בוחרים את מופע המחשוב שרוצים לראות את הפלט של היציאה הטורית שלו.
בקטע Logs, לוחצים על יציאה טורית 1 (console), יציאה טורית 2 (console), יציאה טורית 3 או יציאה טורית 4.
בדרך כלל, ישויות ברמת המערכת משתמשות בSerial port 1, שנקרא גם serial console.
gcloud
כדי לראות את הפלט של היציאה הטורית ממכונת Compute פעילה, משתמשים בפקודה gcloud compute instances get-serial-port-output.
gcloud compute instances get-serial-port-output INSTANCE_NAME \ --port PORT \ --start START \ --zone ZONE
מחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_NAME: השם של המכונה. -
PORT: מספר היציאה (1,2,3או4) שרוצים להציג את הפלט שלה. בדרך כלל, ישויות ברמת המערכת משתמשות ביציאה הטורית הראשונה (יציאה 1), שנקראת גם מסוף טור. כברירת מחדל, הפלט של יציאת הטורים הראשונה מוחזר. -
START: אינדקס הבייט (מבוסס-אפס) של הבייט הראשון שרוצים להחזיר. אפשר להשתמש בדגל הזה אם רוצים להמשיך לקבל את הפלט מבקשה קודמת שהייתה ארוכה מדי ולא ניתן היה להחזיר אותה בניסיון אחד. -
ZONE: האזור של המכונה.
REST
ב-API, יוצרים בקשת get אל ה-method instances.getSerialPortOutput.
GET https://compute.googleapis.com/compute/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/serialPort
Cloud Logging
כדי לראות את היומנים האלה, צריך לשלוח את הפלט של היציאה הטורית אל Cloud Logging.
- נכנסים לדף Logs Explorer במסוף Google Cloud .
בחלונית Query, מזינים את השאילתה הבאה ולוחצים על Run query:
resource.type="gce_instance" logName="projects/PROJECT_ID/logs/serialconsole.googleapis.com%2Fserial_port_1_output" resource.labels.instance_id="INSTANCE_ID"
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שהמכונה נמצאת בו. -
INSTANCE_ID: המזהה של מכונת ה-Compute.
-
מידע נוסף על סינון ב-Logs Explorer זמין במאמר הצגת יומנים באמצעות Logs Explorer.
טיפול בתווים שאינם UTF8
הפלט של היציאה הטורית עובר escape באמצעות השיטה CHexEscape() של ספריית C++ Abseil בקוד פתוח, כך שתווים שאינם UTF8 מקודדים כמחרוזות הקסדצימליות. אפשר להשתמש ב-method CUnescape() המתאים כדי לקבל את הפלט המדויק שנשלח ליציאה הטורית.