אימות נתוני התשובות

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

התכונה הזו נתמכת רק בפרויקטים של Google Cloud . בהגדרות של מרכז האפליקציות, בוחרים את פרויקט המארח או את פרויקט הניהול של מרכז האפליקציות.

איך מאמתים את נתוני התשובה

אפשר להגדיר את Cloud Monitoring כך שיאמת את נתוני התגובה ממשאב שנבדק כשיוצרים או עורכים בדיקת זמינות.

מסוף Google Cloud

כדי ליצור בדיקת זמני פעילות שמאמתת את נתוני התגובה:

  1. במסוף Google Cloud , עוברים לדף  בדיקת זמני פעילות:

    לדף בדיקת זמני פעילות

    אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Monitoring.

  2. בסרגל הכלים של מסוף Google Cloud , בוחרים את הפרויקט הרלוונטי ב- Google Cloud . בהגדרות של מרכז האפליקציות, בוחרים את פרויקט המארח או את פרויקט הניהול של מרכז האפליקציות.
  3. לוחצים על יצירת בדיקת זמינות.
  4. מזינים שם ולוחצים על הבא.
  5. מזינים את היעד ולוחצים על הבא.
  6. מגדירים את אימות התשובה:

    • כדי לאמת את נתוני התשובה, מוודאים שהאפשרות התאמת תוכן מופעלת מוצגת, ואז ממלאים את השדות שקשורים לאימות התשובה. מידע על האפשרויות האלה מופיע בקטע הבא של המסמך הזה.
    • בבדיקות זמני הפעילות של HTTP, צריך להגדיר את קודי התגובה המקובלים. כברירת מחדל, בדיקות זמני פעילות של HTTP מסמנות כל תגובה 2xx כתגובה מוצלחת.
  7. לוחצים על הבא ומשלימים את ההגדרה של בדיקת זמן הפעולה.

Cloud Monitoring API

כדי להגדיר בדיקת זמינות לאימות נתוני התגובה, מאכלסים את המערך contentMatchers של האובייקט UptimeCheckConfig.

אובייקטים של ContentMatcher מכילים את השדות הבאים:

  • matcher: תיאור של אופן ההשוואה. רשימת הערכים זמינה במאמר ContentMatcherOption.

    לא להשתמש בערך CONTENT_MATCHER_OPTION_UNSPECIFIED.

  • content: מאחסן את הערך לחיפוש בנתוני התגובה. הערך הוא מחרוזת מילולית או ביטוי רגולרי.

  • jsonPathMatcher: מאחסן אובייקט JsonPathMatcher שמתאר את נתיב ה-JSON שצריך לחפש בו ואיך לבצע את ההשוואה.

    אין להשתמש בשדה הזה אלא אם בדיקת הזמינות מאמתת JSONpath ספציפי.

בהמשך המסמך מוסבר איך להשתמש באפשרויות של התאמת תוכן.

אפשרויות לאימות נתוני התשובות

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

יכול להיות שהחיפוש לא יכלול את כל התשובה ממקור שנבדק:

  • בדיקות זמני פעילות של HTTP ו-HTTPS: המערכת מחפשת ב-4MB הראשונים.
  • בדיקות זמני פעילות של TCP: מתבצע חיפוש ב-1MB הראשון.

חיפוש מחרוזת משנה מילולית

מסוף Google Cloud

כדי להגדיר את בדיקת הזמינות כך שהיא תעבור אם נתוני התגובה מכילים מחרוזת משנה מילולית, משתמשים בהגדרות הבאות:

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

כדי להגדיר את בדיקת הזמינות כך שהיא תיכשל אם נתוני התגובה מכילים מחרוזת משנה מילולית, משתמשים בהגדרות הבאות:

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

Cloud Monitoring API

כדי להגדיר את בדיקת הזמינות כך שהיא תעבור אם נתוני התגובה מכילים מחרוזת משנה מילולית, משתמשים בערכים הבאים:

...
"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) נכשל
abc abcd נכשל לקבוע ערך (pass)
abc a לקבוע ערך (pass) נכשל
Uptime Checks Uptime לקבוע ערך (pass) נכשל
Uptime Checks uptime נכשל לקבוע ערך (pass)

בטבלה הקודמת, בעמודה Response data מתואר הנתון שמוחזר על ידי המשאב שנבדק, ובעמודה Test string מפורט המחרוזת המילולית. בשתי העמודות הבאות מצוינים סוג הבדיקה והתוצאה של בדיקת זמני הפעילות.

חיפוש באמצעות ביטוי רגולרי

מסוף Google Cloud

כדי להגדיר את בדיקת הזמינות כך שהיא תעבור אם נתוני התגובה תואמים לביטוי רגולרי, משתמשים בהגדרות הבאות:

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

כדי להגדיר את בדיקת הזמינות כך שהיא תיכשל אם נתוני התגובה תואמים לביטוי רגולרי, משתמשים בהגדרות הבאות:

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

Cloud Monitoring API

כדי להגדיר את בדיקת הזמינות כך שהיא תעבור כשנתוני התגובה תואמים לביטוי רגולרי, משתמשים בערכים הבאים:

...
"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) נכשל
Uptime Checks [uU]ptime לקבוע ערך (pass) נכשל
Uptime Checks [a-z]{6} נכשל לקבוע ערך (pass)
Uptime Checks [a-zA-Z]{6} לקבוע ערך (pass) נכשל

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

חיפוש שדה ספציפי בתגובת JSON

אפשר להגדיר בדיקת זמני פעילות כדי לאמת נתיב JSON. כשבוחרים בדיקת 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 לבין מספר או ליטרל של מחרוזת

מסוף Google Cloud

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

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

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

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

Cloud Monitoring API

כדי להגדיר את בדיקת הזמינות כך שתעבור אם שדה ספציפי בתגובה בפורמט 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 הנתיב JSON לא תואם
$.type "JSONpath" לקבוע ערך (pass) נכשל
$.name "Sample" נכשל לקבוע ערך (pass)
$.name "Sample Uptime Check" לקבוע ערך (pass) נכשל
$.content[0].id 1 לקבוע ערך (pass) נכשל
$.content[0].alias "Exact" לקבוע ערך (pass) נכשל
$.content[0].enabled true לקבוע ערך (pass) נכשל

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

השוואה בין JSONpath לבין ביטוי רגולרי

התאמות של ביטויים רגולריים תומכות בהתאמה של מחרוזת, מספר, ערך בוליאני וערכי JSON מסוג null.

מסוף Google Cloud

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

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

כדי להגדיר את בדיקת הזמינות כך שהיא תיכשל אם נתיב JSON ספציפי בנתוני התגובה תואם לביטוי רגולרי, משתמשים בהגדרות הבאות:

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

Cloud Monitoring API

כדי להגדיר את בדיקת הזמינות כך שהיא תעבור אם שדה ספציפי בתגובה בפורמט 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 ביטוי רגולרי הנתיב JSON תואם לביטוי רגולרי נתיב JSON לא תואם לביטוי רגולרי
$.type [A-Z]{4}Path לקבוע ערך (pass) נכשל
$.name Sample נכשל לקבוע ערך (pass)
$.name .*Sample.* לקבוע ערך (pass) נכשל
$.content[1].id 2 לקבוע ערך (pass) נכשל
$.content[1].phone "[12345]{2}" לקבוע ערך (pass) נכשל
$.content[1].enabled f.* לקבוע ערך (pass) נכשל

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

המאמרים הבאים