בדף הזה מוסבר על טכניקות לחקירה ולניפוי באגים של שאילתות ש-AlloyDB ל-PostgreSQL שולח למכונה של מאגר לקריאה:
- הצגת רשימה מפורטת של הצמתים שמרכיבים את מאגר הקריאה, כולל כתובות ה-IP שלהם.
- חיבור ישירות לצומת, למטרות ניפוי באגים.
- בדיקת יומנים של AlloyDB כדי לקבוע איזה צומת ספציפי מטפל בשאילתה שנשלחת למאגר קריאה.
- שאילתה ביומנים לגבי כל הפעילות האחרונה מצומת נתון של מאגר לקריאה.
- הצגת Google Cloud מדדים שמשויכים לצומת של מאגר לקריאה.
השימוש המשולב בטכניקות האלה מאפשר לכם גישה לאבחון ולניפוי באגים במאגרי הקריאה. לדוגמה, אם אחד ממאגרי הקריאה באשכול משתמש בכמות חריגה של CPU בזמן עיבוד שאילתה ארוכה, הטכניקות האלה מאפשרות לכם לקבוע איזה צומת מטפל בשאילתה הזו, ואז להתחבר ישירות לצומת הזה כדי לבדוק או לסיים את השאילתה.
הצגת פרטים של צמתים בבריכת קריאה
בשימוש רגיל ב-AlloyDB, לא צריך לדעת את הזהויות או הכתובות של הצמתים שמרכיבים את מאגרי הקריאה. עם זאת, כשצריך, אפשר לראות רשימה של צמתים של מופע של מאגר קריאה. כל צומת שמופיע ברשימה כולל את הפרטים הבאים, שיכולים לעזור באבחון ובניפוי באגים בהמשך:
מחרוזת המזהה של הצומת, שמשמשת לביצוע שאילתות ביומן לגבי הפעילות האחרונה של הצומת. Google Cloud
כתובת ה-IP של הצומת בענן הווירטואלי הפרטי (VPC) של האשכול, שבה אפשר להשתמש כדי להתחבר ישירות לשרת PostgreSQL של הצומת הזה.
כדי לראות את מחרוזות המזהים הפנימיים ואת כתובות ה-IP של הצמתים במאגר לקריאה, צריך לפעול לפי ההוראות הספציפיות ל-gcloud במאמר איך צופים בפרטי מכונה, אבל להוסיף ארגומנט נוסף בשורת הפקודה --view=FULL:
gcloud
gcloud alloydb instances describe READ_POOL_ID \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID \
--view=FULLמחליפים את מה שכתוב בשדות הבאים:
- READ_POOL_ID: המזהה של מאגר הקריאה.
- REGION_ID: מזהה האזור של המכונה.
- CLUSTER_ID: המזהה של האשכול של המכונה.
- PROJECT_ID: המזהה של הפרויקט של המופע.
הפלט כולל קטע שכותרתו nodes, שדומה לזה:
nodes:
- id: READ_POOL_INSTANCE_ID-edd4f6ed-hcfh
ip: 10.90.80.57
state: HEALTHY
zoneId: us-central1-b
- id: READ_POOL_INSTANCE_ID-edd4f6ed-ldbm
ip: 10.90.80.56
state: HEALTHY
zoneId: us-central1-cהשדות id ו-ip של כל רשומה רלוונטיים במיוחד לטכניקות האחרות שמתוארות בדף הזה:
בשדה
ipמוצגת כתובת ה-IP של הצומת ב-VPC של האשכול.השדה
idמכיל את מחרוזת המזהה המלאה של הצומת Google Cloud . רק ארבעת התווים האחרונים של המחרוזת הזו מופיעים ברשומות ביומן של צומת.לדוגמה, כדי למצוא רשומות ביומן שקשורות לצומת הראשון מבין שני הצמתים בפלט לדוגמה הקודם, מריצים שאילתה ביומנים באמצעות מחרוזת המזהה
hcfh.
התחברות ישירות לצומת
אחרי שמבררים מהי כתובת ה-IP של צומת, אפשר להתחבר ישירות לשרת PostgreSQL שלו. לדוגמה, כדי להשתמש ב-psql כדי להתחבר למכונה וירטואלית ב-VPC של האשכול, פועלים לפי ההוראות במאמר הרצת לקוח psql. במקרה כזה, צריך לספק את כתובת ה-IP של הצומת ולא את כתובת ה-IP של מופע מאגר הקריאה:
psql -h NODE_IP_ADDRESS -U USERNAMEחיפוש פעילות של צומת ביומנים
AlloyDB כולל מזהי צמתים ברשומות ביומן לגבי שאילתות שמטופלות על ידי מאגרי קריאה. באופן כללי, אפשר להשתמש במזהים האלה בשתי דרכים:
- קובעים את כתובת ה-IP של הצומת כדי שתוכלו להתחבר אליו.
- אפשר להריץ שאילתות נוספות ביומן כדי לקבל מידע נוסף על הפעילות האחרונה של הצומת.
איך קובעים איזה צומת מטפל בשאילתה ידועה
אם אתם יודעים שמאגר קריאה מסוים מעבד שאילתה שפועלת במשך זמן רב, תוכלו להשתמש ב-Log Explorer כדי לקבוע את המזהה של הצומת הספציפי שמטפל בשאילתה הזו.
הערה: הטכניקה הזו פועלת רק במופעים של מאגר קריאה שבהם התוסף pgAudit מופעל.
עוברים אל Logs Explorer:
בבונה השאילתות, מוסיפים את
resource.labels.instance_id="READ_POOL_ID"לשדה של עורך השאילתות, ומחליפים את READ_POOL_ID בשם של מופע מאגר הקריאה.מוסיפים את הצהרת ה-SQL שאתם בודקים, במלואה או בחלקה, לשדה של עורך השאילתות. לדוגמה:
select id from MyTable. הקלט הזה לא תלוי באותיות רישיות.לוחצים על Run query.
אפשר להשתמש באמצעי הבקרה של Log Explorer כדי לשנות את השאילתה ולהריץ אותה מחדש לפי הצורך, כדי לסנן את התוצאות ולמצוא את הרלוונטיות ביותר.
לוחצים על רשומה ביומן ברשימת התוצאות כדי להרחיב את התצוגה שלה.
לוחצים על השדה
labelsבתצוגה המורחבת של הרשומה.שימו לב לערך
NODE_IDבקטעlabels.
התוצאה היא מזהה בן ארבעה תווים של הצומת שמטפל בשאילתה.
התחברות לצומת שמוזכר ברשומה ביומן
אם רוצים להתחבר ישירות לשרת PostgreSQL של צומת מסוים על סמך הפעילות שנרשמה שלו, צריך לפעול לפי השלבים הבאים:
חשוב לזכור את מחרוזת המזהה של הצומת שנרשם ביומן, שמורכבת מארבעה תווים. המזהה הזה מופיע בשדה
NODE_IDברשומה ביומן.מציגים את הצמתים של מאגר הקריאה.
ברשימה הזו, מוצאים צומת עם מחרוזת המזהה שמסתיימת בארבעת התווים שרשמתם בשלב הראשון. יכול להיות שאף אחד מהצמתים שמופיעים ברשימה לא תואם.
אם נמצא צומת תואם, משתמשים בכתובת ה-IP התואמת שלו כדי להתחבר לשרת PostgreSQL של הצומת הזה.
אחרת, אם לאף אחד מהצמתים במאגר הקריאה שמופיעים בשלב הקודם אין מזהים שתואמים לצומת שנרשם ביומן, מאגר הקריאה הוציא את הצומת הזה משימוש בזמן שחלף מאז רשומת היומן המקורית. זוהי התנהגות רגילה של מאגרי קריאה ב-AlloyDB, כפי שמתואר בהערה לגבי ארעיות של צמתים. במקרה כזה, אי אפשר ליצור חיבור ישיר לצומת הזה.
אחרי שמתחברים לשרת PostgreSQL של צומת, אפשר להשתמש בטכניקות ניטור סטנדרטיות של PostgreSQL, כמו pg_stat_activity, כדי לבדוק את התהליכים הנוכחיים של הצומת ולשנות אותם לפי הצורך.
הצגת עוד רשומות ביומן לגבי צומת
כדי לראות פעילות עדכנית יותר שרשומה ביומן לגבי צומת עם מזהה ספציפי:
עוברים אל Logs Explorer:
מוסיפים את
labels.NODE_ID=NODE_IDאל כלי ליצירת שאילתות ב-Logs Explorer, ומחליפים את NODE_ID במחרוזת המזהה של הצומת, שמורכבת מארבעה תווים.לוחצים על Run Query (הפעלת שאילתה) כדי לראות את כל הפעילות מהצומת הזה בחלון הזמן שנבחר, או משנים את השאילתה כדי לסנן אותה עוד יותר.
חוזרים על השלב הקודם לפי הצורך כדי למקד את החיפוש.
מעקב אחרי מדדים של צומת
אפשר לראות את המדדים שמשויכים לצמתים ספציפיים בלוח הבקרה של תובנות המערכת ב-AlloyDB. מידע נוסף על מדדי הצמתים הזמינים מופיע במאמר הפניה למדדים של תובנות המערכת.
כדי לדעת אילו מזהי צמתים משויכים למופע מסוים של מאגר קריאה, אפשר לעיין במאמר הצגת פרטים של צמתים במאגר קריאה.
מאמרי העזרה המלאים בנושא המדדים האלה ומדדים נוספים של AlloyDB זמינים במאמר alloydb בקטע 'מדדים שלGoogle Cloud '.
הערה לגבי ארעיות צמתים
אפשר להתחבר בבטחה לצומת לצורך בדיקה זמנית או ניפוי באגים, אבל אפליקציות שמשתמשות במאגרי קריאה צריכות תמיד להתחבר למאגרים האלה ברמת המופע, באמצעות כתובת ה-IP שהאשכול מציג ברשימת המופעים שלו.
AlloyDB מתייחס לצמתים של מאגרי הקריאה שלו כאל משאבים זמניים שניתנים להחלפה. השירות משנה את רשימת הצמתים של מאגר קריאה בתדירות הנדרשת כדי לשמור על איזון העומסים של מופע מאגר הקריאה הזה ועל היענות שלו. אם אפליקציה מתחברת ישירות לצומת של מאגר לקריאה, ולא למופע של מאגר לקריאה, קיים סיכון לניתוק פתאומי מהמסד נתונים בכל פעם ש-AlloyDB מעדכן את רשימת הצמתים של המופע.
תמיד כדאי לאפשר לאפליקציות להתחבר למאגרי הקריאה ברמת המופע, ולאפשר ל-AlloyDB לבצע את העבודה של ניתוב יעיל של השאילתות לצמתים המתאימים.