אימות התגובה מאפשר לכם לוודא שמשאב במעקב מחזיר גם קוד סטטוס של HTTP צפוי וגם תוכן ספציפי של מטען ייעודי (payload) במהלך בדיקת זמני פעילות.
כברירת מחדל, בדיקות זמני פעילות של HTTP ו-HTTPS מאמתות רק שקוד הסטטוס נמצא בטווח 2xx ולא בודקות את גוף הבקשה. אתם יכולים להתאים אישית את ההגדרות האלה כדי לקבל קודי סטטוס נוספים, כמו 3xx, או כדי לבדוק אם המטען הייעודי (payload) תואם למחרוזות ספציפיות, לביטויים רגולריים או לנתיבי JSON.
איך מאמתים את נתוני התשובה
אפשר להגדיר את Cloud Monitoring כך שיאמת את נתוני התגובה ממשאב שנבדק כשיוצרים או עורכים בדיקת זמינות.
המסוף
כדי ליצור בדיקת זמינות שמאמתת את נתוני התגובה:
-
במסוף Google Cloud , עוברים לדף
בדיקת זמני פעילות:
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Monitoring.
- בסרגל הכלים של מסוף Google Cloud , בוחרים את Google Cloud הפרויקט. בהגדרות של מרכז האפליקציות, בוחרים את הפרויקט המארח או את פרויקט הניהול של מרכז האפליקציות.
- לוחצים על יצירת בדיקה של זמני פעילות.
- מזינים שם ולוחצים על הבא.
- מזינים את היעד ולוחצים על הבא.
מגדירים את אימות התשובה:
- כדי לאמת את נתוני התשובה, מוודאים שהאפשרות התאמת תוכן מופעלת מוצגת, ואז ממלאים את השדות שקשורים לאימות התשובה. מידע על האפשרויות האלה מופיע בקטע הבא של המסמך הזה.
- בבדיקות זמני הפעילות של HTTP, צריך להגדיר את קודי התגובה הקבילים.
כברירת מחדל, בדיקות זמני פעילות של HTTP מסמנות כל תגובה של
2xxכתגובה מוצלחת.
לוחצים על הבא ומשלימים את ההגדרה של בדיקת זמן הפעולה.
REST
כדי להגדיר בדיקת זמינות לאימות נתוני התגובה, מאכלסים את המערך contentMatchers של האובייקט UptimeCheckConfig.
אובייקטים של ContentMatcher מכילים את השדות הבאים:
matcher: תיאור של אופן ההשוואה. רשימת הערכים זמינה במאמרContentMatcherOption.אל תשתמשו בערך
CONTENT_MATCHER_OPTION_UNSPECIFIED.
content: מאחסן את הערך לחיפוש בנתוני התגובה. הערך הוא מחרוזת מילולית או ביטוי רגולרי.
jsonPathMatcher: מאחסן אובייקטJsonPathMatcherשמתאר את נתיב ה-JSON שצריך לחפש ואיך לבצע את ההשוואה.אל תציינו את השדה הזה אלא אם בדיקת הזמינות מאמתת נתיב JSON ספציפי.
בהמשך המסמך מוסבר איך להשתמש באפשרויות של התאמת תוכן.
אפשרויות לאימות נתוני התגובה
בקטע הזה מתוארות אסטרטגיות להשוואת מחרוזות שאפשר להשתמש בהן כדי לאמת את התשובה שנשלחה על ידי משאב שנבדק. לכל אסטרטגיה, מציינים ערך ואם מציאת הערך הזה בנתוני התגובה גורמת לבדיקת הזמינות לעבור או להיכשל.
יכול להיות שלא יתבצע חיפוש בכל התשובה ממקור שנבדק:
- בדיקות זמני פעילות (uptime) של HTTP ו-HTTPS: מתבצע חיפוש ב-4MB הראשונים.
- בדיקות זמני פעילות של TCP: המערכת מחפשת ב-1MB הראשון.
חיפוש מחרוזת משנה מילולית
המסוף
כדי להגדיר את בדיקת הזמינות כך שהיא תעבור אם נתוני התגובה מכילים מחרוזת משנה מילולית, משתמשים בהגדרות הבאות:
- בתפריט סוג ההתאמה של תוכן התגובה, בוחרים באפשרות מכיל.
- מזינים את מחרוזת המשנה המילולית בשדה תוכן התגובה.
- כדי לאמת את ההגדרה, לוחצים על בדיקה.
כדי להגדיר את בדיקת הזמינות כך שהיא תיכשל אם נתוני התגובה מכילים מחרוזת משנה מילולית, משתמשים בהגדרות הבאות:
- בתפריט סוג ההתאמה של תוכן התגובה, בוחרים באפשרות לא מכיל.
- מזינים את מחרוזת המשנה המילולית בשדה תוכן התגובה.
- כדי לאמת את ההגדרה, לוחצים על בדיקה.
REST
כדי להגדיר את בדיקת הזמינות כך שהיא תעבור אם נתוני התגובה מכילים מחרוזת משנה מילולית, משתמשים בערכים הבאים:
...
"contentMatchers": [
{
"content": "Set to the string to be matched.",
"matcher": "CONTAINS_STRING"
}
],
...
כדי להגדיר את בדיקת הזמינות כך שהיא תיכשל אם נתוני התגובה מכילים מחרוזת משנה מילולית, משתמשים בערכים הבאים:
...
"contentMatchers": [
{
"content": "Set to the string to be matched.",
"matcher": "NOT_CONTAINS_STRING"
}
],
...
בטבלה הבאה מוצג הסטטוס של בדיקת הזמינות לזמני פעולה עבור נתוני תגובה שונים, מחרוזות בדיקה וסוגי בדיקה:
| סטטוס בדיקת זמני הפעילות | |||
|---|---|---|---|
| נתוני התגובה | מחרוזת בדיקה | מכיל | לא מכיל |
abcd |
abcd |
לקבוע ערך (pass) | fail |
abc |
abcd |
נכשל | לקבוע ערך (pass) |
abc |
a |
לקבוע ערך (pass) | fail |
Uptime Checks |
Uptime |
לקבוע ערך (pass) | fail |
Uptime Checks |
uptime |
נכשל | לקבוע ערך (pass) |
בטבלה הקודמת, בעמודה נתוני התגובה מתוארים הנתונים שמוחזרים על ידי מקור המידע שנבדק, ובעמודה מחרוזת הבדיקה מפורטת המחרוזת המילולית. בשתי העמודות הבאות מצוינים סוג הבדיקה והתוצאה של בדיקת זמינות.
חיפוש באמצעות ביטוי רגולרי
המסוף
כדי להגדיר את בדיקת הזמינות כך שהיא תעבור אם נתוני התגובה תואמים לביטוי רגולרי, משתמשים בהגדרות הבאות:
- בתפריט סוג התאמה של תוכן התגובה, בוחרים באפשרות תואם לביטוי רגולרי (regex).
- בשדה תוכן התגובה מזינים ביטוי רגולרי.
- כדי לאמת את ההגדרה, לוחצים על בדיקה.
כדי להגדיר את בדיקת הזמינות כך שהיא תיכשל אם נתוני התגובה תואמים לביטוי רגולרי, משתמשים בהגדרות הבאות:
- בתפריט סוג התאמה של תוכן התגובה, בוחרים באפשרות לא תואם לביטוי רגולרי (regex).
- בשדה תוכן התגובה מזינים ביטוי רגולרי.
- כדי לאמת את ההגדרה, לוחצים על בדיקה.
REST
כדי להגדיר את בדיקת הזמינות כך שהיא תעבור אם נתוני התגובה תואמים לביטוי רגולרי, משתמשים בערכים הבאים:
...
"contentMatchers": [
{
"content": "Set to the regular expression to be matched.",
"matcher": "MATCHES_REGEX"
}
],
...
כדי להגדיר את בדיקת הזמינות כך שהיא תיכשל אם נתוני התגובה תואמים לביטוי רגולרי, משתמשים בערכים הבאים:
...
"contentMatchers": [
{
"content": "Set to the regular expression to be matched.",
"matcher": "NOT_MATCHES_REGEX"
}
],
...
בטבלה הבאה מוצג הסטטוס של בדיקת הזמינות עבור נתוני תגובה שונים, ביטויים רגולריים וסוגי בדיקות:
| סטטוס בדיקת זמני הפעילות | |||
|---|---|---|---|
| נתוני התגובה | ביטוי רגולרי | התאמה לביטוי רגולרי (regex) | לא תואם לביטוי רגולרי (regex) |
abcd |
abcd |
לקבוע ערך (pass) | fail |
Uptime Checks |
[uU]ptime |
לקבוע ערך (pass) | fail |
Uptime Checks |
[a-z]{6} |
נכשל | לקבוע ערך (pass) |
Uptime Checks |
[a-zA-Z]{6} |
לקבוע ערך (pass) | fail |
בטבלה הקודמת, בעמודה Response data (נתוני התגובה) מתואר הנתון שמוחזר על ידי המשאב המסומן, ובעמודה Regex (ביטוי רגולרי) מפורט הביטוי הרגולרי. בשתי העמודות הבאות מצוינים סוג הבדיקה והתוצאה של בדיקת זמינות.
חיפוש שדה ספציפי בתגובת JSON
אפשר להגדיר בדיקת זמני פעילות כדי לאמת JSONpath. כשבוחרים בדיקת JSONpath, הבדיקה משווה ערך של נתיב למספר, למחרוזת מילולית או לביטוי רגולרי:
כשמציינים JSONpath, צריך לציין את אובייקט הבסיס עם $. ואז לציין מזהה שדה ספציפי. אם תגובת ה-JSON מכילה מערך של אלמנטים, צריך להשתמש בסוגריים, [], כדי לזהות את אלמנט המערך הספציפי שרוצים להתאים. הדוגמאות הבאות ממחישות את תחביר הנתיב:
-
$.typeתואם לשדהtypeשל אובייקט בסיס. -
$.[0].address.cityתואם לשדהcityבאובייקטaddressשמאוחסן ברכיב המערך הראשון של תגובת ה-JSON. - הערך
$.content[0].phoneתואם לשדהphoneשל רכיב המערך הראשון בשדהcontent. השדהcontentהוא צאצא של אובייקט הבסיס.
אפשר להגדיר בדיקת זמינות שתתאים לכמה שדות. כדאי לעיין בקובץ ה-JSON הבא:
[
{
...
"address": {
...
"city": "Gwenborough",
"geo": {
"lat": "-37.3159",
"lng": "81.1496"
}
},
},
...
]
כדי להתאים את הנתיב כולו של השדה geo ברכיב המערך הראשון, מגדירים את JSONpath ל-$.[0].address.geo ומזינים את הערך המלא בשדה התוכן:
{
"lat": "-37.3159",
"lng": "81.1496"
}
אם אתם רוצים להתנסות באפשרויות האלה, אתם יכולים לחפש אתר ציבורי שמחזיר תגובת JSON.
השוואה בין JSONpath לבין מספר או מחרוזת מילולית
המסוף
כדי להגדיר את בדיקת הזמינות כך שהיא תעבור כשנתיב JSON ספציפי בנתוני התגובה תואם למחרוזת מילולית, משתמשים בהגדרות הבאות:
- בתפריט סוג ההתאמה של תוכן התגובה, בוחרים באפשרות התאמות ב-JSONPath.
- מזינים את הנתיב בשדה JSONPath.
- מזינים את המספר או את המחרוזת המילולית בשדה תוכן התשובה.
- כדי לאמת את ההגדרה, לוחצים על בדיקה.
כדי להגדיר את בדיקת הזמינות כך שהיא תיכשל כשנתיב JSON ספציפי בנתוני התגובה תואם למחרוזת מילולית, משתמשים בהגדרות הבאות:
- בתפריט סוג התאמה של תוכן התגובה, בוחרים באפשרות לא תואם ב-JSONPath.
- מזינים את הנתיב בשדה JSONPath.
- מזינים את המספר או את המחרוזת המילולית בשדה תוכן התשובה.
- כדי לאמת את ההגדרה, לוחצים על בדיקה.
REST
כדי להגדיר את בדיקת הזמינות כך שתעבור אם שדה ספציפי בתגובה בפורמט JSON תואם למספר או למחרוזת מילולית, משתמשים בערכים הבאים לאובייקט ContentMatcher:
...
"contentMatchers": [
{
"content" : "Set to a number, a boolean, or the string to be matched.",
"matcher" : "MATCHES_JSON_PATH",
"jsonPathMatcher" : {
"jsonPath" : "Set to the JSONpath.",
"jsonMatcher" : "EXACT_MATCH"
}
}
],
...
כדי להגדיר את בדיקת הזמינות כך שהיא תיכשל אם שדה ספציפי בתגובה בפורמט JSON תואם למספר או למחרוזת מילולית, צריך להשתמש בערכים הבאים לאובייקט ContentMatcher:
...
"contentMatchers": [
{
"content" : "Set to a number, a boolean, or the string to be matched.",
"matcher" : "NOT_MATCHES_JSON_PATH",
"jsonPathMatcher" : {
"jsonPath" : "Set to the JSONpath.",
"jsonMatcher" : "EXACT_MATCH"
}
}
],
...
כדי להמחיש את אופן הפעולה של בדיקות ההתאמה למחרוזת JSONpath, נתייחס לנתוני תגובת ה-JSON הבאים:
{
"name": "Sample Uptime Check",
"type": "JSONpath",
"content": [
{
"id": 1,
"phone": "1234567890",
"alias": "Exact",
"enabled": true,
},
{
"id": 2,
"phone": "1234512345",
"alias": "Regex",
"enabled": false,
}
]
}
בטבלה הבאה מוצג הסטטוס של בדיקת הזמינות של התגובה הקודמת, אבל עבור נתיבים שונים, ערכי בדיקה שונים וסוגי בדיקה שונים:
| סטטוס בדיקת זמני הפעילות | |||
|---|---|---|---|
| JSONpath | ערך הבדיקה | התאמות של JSONpath | ה-JSONpath לא תואם |
$. |
"JSONpath" |
לקבוע ערך (pass) | fail |
$. |
"Sample" |
נכשל | לקבוע ערך (pass) |
$. |
"Sample Uptime Check" |
לקבוע ערך (pass) | fail |
$. |
1 |
לקבוע ערך (pass) | fail |
$. |
"Exact" |
לקבוע ערך (pass) | fail |
$. |
true |
לקבוע ערך (pass) | fail |
בטבלה הקודמת, העמודה JSONpath מציינת איזה רכיב לבדוק, והעמודה Test value מפרטת את הערך. בשתי העמודות הבאות מצוינים סוג הבדיקה והתוצאה של בדיקת זמינות.
השוואה בין JSONpath לבין ביטוי רגולרי
התאמות של ביטויים רגולריים תומכות בהתאמה של מחרוזת, מספר, ערך בוליאני וערכי JSON מסוג null.
המסוף
כדי להגדיר את בדיקת הזמינות כך שהיא תעבור כשנתיב JSON ספציפי בנתוני התגובה תואם לביטוי רגולרי, משתמשים בהגדרות הבאות:
- בתפריט סוג ההתאמה של תוכן התגובה, בוחרים באפשרות התאמות ב-JSONPath.
- מזינים את הנתיב בשדה JSONPath.
- מזינים את הביטוי הרגולרי בשדה תוכן התגובה.
- כדי לאמת את ההגדרה, לוחצים על בדיקה.
כדי להגדיר את בדיקת הזמינות כך שהיא תיכשל כשנתיב JSON ספציפי בנתוני התגובה תואם לביטוי רגולרי, משתמשים בהגדרות הבאות:
- בתפריט סוג התאמה של תוכן התגובה, בוחרים באפשרות לא תואם ב-JSONPath.
- מזינים את הנתיב בשדה JSONPath.
- מזינים את הביטוי הרגולרי בשדה תוכן התגובה.
- כדי לאמת את ההגדרה, לוחצים על בדיקה.
REST
כדי להגדיר את בדיקת הזמינות כך שהיא תעבור אם שדה ספציפי בתגובה בפורמט JSON תואם לביטוי רגולרי, משתמשים בערכים הבאים לאובייקט ContentMatcher:
...
"contentMatchers": [
{
"content" : "Set to the regular expression to be matched.",
"matcher" : "MATCHES_JSON_PATH",
"jsonPathMatcher" : {
"jsonPath" : "Set to the JSONpath.",
"jsonMatcher" : "REGEX_MATCH"
}
}
],
...
כדי להגדיר את בדיקת הזמינות כך שהיא תיכשל אם שדה ספציפי בתגובה בפורמט JSON תואם לביטוי רגולרי, משתמשים בערכים הבאים לאובייקט ContentMatcher:
...
"contentMatchers": [
{
"content" : "Set to the regular expression to be matched.",
"matcher" : "NOT_MATCHES_JSON_PATH",
"jsonPathMatcher" : {
"jsonPath" : "Set to the JSONpath.",
"jsonMatcher" : "REGEX_MATCH"
}
}
],
...
כדי להמחיש את אופן הפעולה של בדיקות הביטוי הרגולרי של JSONpath, נתייחס לנתוני תגובת ה-JSON הבאים:
{
"name": "Sample Uptime Check",
"type": "JSONpath",
"content": [
{
"id": 1,
"phone": "1234567890",
"alias": "Exact",
"enabled": true,
},
{
"id": 2,
"phone": "1234512345",
"alias": "Regex",
"enabled": false,
}
]
}
בטבלה הבאה מוצג הסטטוס של בדיקת הזמינות בתגובה הקודמת, אבל עבור נתיבים שונים, ביטויים רגולריים וסוגי בדיקות:
| סטטוס בדיקת זמני הפעילות | |||
|---|---|---|---|
| JSONpath | ביטוי רגולרי | התאמה לביטוי רגולרי (regex) ב-JSONpath | הנתיב ב-JSON לא תואם לביטוי הרגולרי |
$. |
[A-Z]{4}Path |
לקבוע ערך (pass) | fail |
$. |
Sample |
נכשל | לקבוע ערך (pass) |
$. |
. |
לקבוע ערך (pass) | fail |
$. |
2 |
לקבוע ערך (pass) | fail |
$. |
"[12345]{2}" |
לקבוע ערך (pass) | fail |
$. |
f. |
לקבוע ערך (pass) | fail |
בטבלה הקודמת, בעמודה JSONpath מצוין איזה רכיב צריך לבדוק, ובעמודה Regex מפורט הביטוי הרגולרי. בשתי העמודות הבאות מצוינים סוג הבדיקה והתוצאה של בדיקת זמינות.