דוגמאות למרכזי בקרה ולפריסות

בדף הזה מוסבר איך ליצור לוחות בקרה באמצעות Cloud Monitoring API. לכל דוגמה מוצגת הגדרת לוח הבקרה ב-JSON ולוח הבקרה המתאים. אפשר לספק JSON גם ל-Google Cloud CLI וגם לנקודות קצה של Cloud Monitoring API.

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

מתי כדאי להשתמש ב-API או ב-Google Cloud CLI

ה-Cloud Monitoring API ו-Google Cloud CLI מאפשרים לכם לנהל הרבה לוחות בקרה בבת אחת. אפשר להשתמש במסוף Google Cloud כדי לנהל את לוחות הבקרה, אבל יכול להיות שיהיה לכם קל יותר להשתמש בסקריפטים כדי לנהל את לוחות הבקרה המותאמים אישית בכמות גדולה.

צריך להשתמש ב-API גם כשרוצים להוסיף את הווידג'ט של placeholder ריק ללוח הבקרה.

שימוש ב-MQL או ב-PromQL עם ה-API

יוצרים לוחות בקרה באמצעות ה-method‏ dashboards.create. מעבירים ל-API method אובייקט Dashboard שמכיל רשומה אחת לכל ווידג'ט שמוצג בלוח הבקרה.

כשפריט ווידג'ט מציג נתונים של פעולות על ציר הזמן, כמו ווידג'ט של תרשים, הרשומה שלו באובייקט Dashboard מכילה אובייקט TimeSeriesQuery. האובייקט הזה מתאר את נתוני הסדרות העיתיות שיוצגו בתרשים. כדי לציין את הנתונים האלה, משתמשים במסנן Monitoring, בשאילתת MQL או בשאילתת PromQL:

  • כדי להשתמש במסנני מעקב, צריך למלא את השדה timeSeriesField. בדוגמאות שבדף הזה נעשה שימוש במסננים של Cloud Monitoring.

  • כדי להשתמש בשאילתת MQL, מאכלסים את השדה timeSeriesQueryLanguage. מידע נוסף זמין במאמר בנושא יצירת תרשימים.

  • כדי להשתמש בשאילתת PromQL, מאכלסים את השדה prometheusQuery. מידע כללי זמין במאמר PromQL ב-Cloud Monitoring.

פריסות של מרכז הבקרה

בקטע הזה מפורטים הפריסות השונות של מרכזי הבקרה שזמינות.

מרכז הבקרה בGridLayout

בלוח הבקרה הזה מוצג GridLayout עם שלושה ווידג'טים.

{
  "displayName": "Grid Layout Example",
  "gridLayout": {
    "columns": "2",
    "widgets": [
      {
        "title": "Widget 1",
        "xyChart": {
          "dataSets": {
            "timeSeriesQuery": {
              "timeSeriesFilter": {
                "filter": "metric.type=\"agent.googleapis.com/nginx/connections/accepted_count\"",
                "aggregation": {
                  "perSeriesAligner": "ALIGN_RATE"
                }
              },
              "unitOverride": "1"
            },
            "plotType": "LINE"
          },
          "timeshiftDuration": "0s",
          "yAxis": {
            "label": "y1Axis",
            "scale": "LINEAR"
          }
        }
      },
      {
        "text": {
          "content": "Widget 2"
        }
      },
      {
        "title": "Widget 3",
        "xyChart": {
          "dataSets": {
            "timeSeriesQuery": {
              "timeSeriesFilter": {
                "filter": "metric.type=\"agent.googleapis.com/nginx/connections/accepted_count\"",
                "aggregation": {
                  "perSeriesAligner": "ALIGN_RATE"
                }
              },
              "unitOverride": "1"
            },
            "plotType": "STACKED_BAR"
          },
          "timeshiftDuration": "0s",
          "yAxis": {
            "label": "y1Axis",
            "scale": "LINEAR"
          }
        }
      }
    ]
  }
}

מרכז הבקרה אמור להיראות כך:

לוח בקרה לדוגמה עם פריסת רשת.

מרכז הבקרה בMosaicLayout

בלוח הבקרה הזה מוצג MosaicLayout עם שני ווידג'טים.

{
  "displayName": "Mosaic Layout Example",
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      {
        "xPos": 2,
        "yPos": 2,
        "width": 7,
        "height": 2,
        "widget": {
          "title": "CPU utilization in us-central1-a",
          "scorecard": {
            "timeSeriesQuery": {
              "timeSeriesFilter": {
                "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\" resource.label.zone=\"us-central1-a\"",
                "aggregation": {
                  "perSeriesAligner": "ALIGN_MEAN",
                  "crossSeriesReducer": "REDUCE_MAX"
                }
              },
              "unitOverride": "1"
            },
            "gaugeView": {
              "upperBound": 1.5
            },
            "thresholds": [
              {
                "value": 0.8,
                "color": "YELLOW",
                "direction": "ABOVE"
              },
              {
                "value": 1,
                "color": "RED",
                "direction": "ABOVE"
              }
            ]
          }
        }
      },
      {
        "xPos": 1,
        "yPos": 5,
        "width": 4,
        "height": 4,
        "widget": {
          "title": "My Chart",
          "xyChart": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\"",
                    "aggregation": {
                      "perSeriesAligner": "ALIGN_MEAN",
                      "crossSeriesReducer": "REDUCE_MAX",
                      "groupByFields": [
                        "resource.label.zone"
                      ]
                    }
                  },
                  "unitOverride": "'1'"
                },
                "plotType": "LINE",
                "minAlignmentPeriod": "60s"
              }
            ],
            "yAxis": {
              "label": "y1Axis",
              "scale": "LINEAR"
            }
          }
        }
      }
    ]
  }
}

מרכז הבקרה אמור להיראות כך:

לוח בקרה לדוגמה עם פריסת פסיפס.

מרכז הבקרה בRowLayout

בלוח הבקרה הזה מוצג RowLayout עם שלושה ווידג'טים.

{
  "displayName": "Row Layout Example",
  "rowLayout": {
    "rows": [
      {
        "weight": "1",
        "widgets": [
          {
            "text": {
              "content": "Widget 1",
              "format": "MARKDOWN"
            }
          },
          {
            "text": {
              "content": "Widget 2",
              "format": "MARKDOWN"
            }
          },
          {
            "text": {
              "content": "Widget 3",
              "format": "MARKDOWN"
            }
          }
        ]
      }
    ]
  }
}

מרכז הבקרה אמור להיראות כך:

דוגמה ללוח בקרה עם פריסת שורות.

מרכז הבקרה בColumnLayout

בלוח הבקרה הזה מוצג ColumnLayout עם שלושה ווידג'טים.

{
  "displayName": "Column Layout Example",
  "columnLayout": {
    "columns": [
      {
        "weight": "1",
        "widgets": [
          {
            "text": {
              "content": "Widget 1",
              "format": "MARKDOWN"
            }
          },
          {
            "text": {
              "content": "Widget 2",
              "format": "MARKDOWN"
            }
          },
          {
            "text": {
              "content": "Widget 3",
              "format": "MARKDOWN"
            }
          }
        ]
      }
    ]
  }
}

מרכז הבקרה אמור להיראות כך:

לוח בקרה לדוגמה עם פריסת עמודות

הפעלת אירועים בלוח הבקרה והוספת מסננים ותוויות

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

הפעלת אירועים בלוחות בקרה

אתם יכולים להגדיר לוח בקרה כדי להציג אירועים, כמו אירוע עדכון של Google Kubernetes Engine או אירוע כשל של מכונה וירטואלית, על ידי הכללת שדה annotations באובייקט Dashboard. השדה annotations מכיל מופע של אובייקט DashboardAnnotations, שמכיל שני שדות:

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

  • מערך של אובייקטים מסוג EventAnnotation. כל אובייקט מכיל את הפרטים הבאים:

    • שדה displayName, שמאפשר להגדיר את התווית של המתג הספציפי לאירוע. אם לא מציינים ערך בשדה הזה או אם הערך בשדה הזה הוא מחרוזת ריקה, מוצג שם ברירת המחדל של האירוע.
    • שדה enabled שקובע את הערך של המתג של האירוע. כשמצב המתג הוא true, הוא נמצא במצב on והאירועים מוצגים בלוח הבקרה. כשהערך בשדה false, המתג נמצא במצב off.
    • שדה eventType, שמכיל ערך מהספירה EventType.
    • שדה filter, שמאפשר לציין שאילתה להוספה לשאילתה הספציפית לאירוע. אם הערך בשדה הזה הוא מחרוזת ריקה, המערכת תשתמש בשאילתה שספציפית לאירוע.
    • שדה resourceNames, שמאפשר להגדיר רשימה שלGoogle Cloud פרויקטים לחיפוש אירועים. אם השדה הזה הוא מערך ריק, החיפוש יתבצע בפרויקט שבחרתם.

בדוגמה הבאה מוצג שדה annotations שמציין אירוע של Google Kubernetes Engine:

{
  "displayName": "Annotation example",
  "annotations": {
    "defaultResourceNames": [],
    "eventAnnotations": [
      {
        "displayName": "",
        "enabled": true,
        "eventType": "GKE_CLUSTER_UPDATE",
        "filter": "resource.labels.cluster_name=my-cluster",
        "resourceNames": []
      }
    ]
  },
  "dashboardFilters": [],
  "mosaicLayout": {
  ...
  },
  "labels": {}
}

בדוגמה הקודמת, השדה filter משמש להגבלת השאילתה לאשכול my-name. השדה displayName מוגדר כמחרוזת ריקה, ולכן השם שמוצג במתג של האירוע הוא השם שמוגדר כברירת מחדל לסוג האירוע. לבסוף, מכיוון שהשדה resourceNames מוגדר כמערך ריק, מתבצעת שאילתה על רשומות היומן בפרויקט הנוכחי Google Cloud .

הוספת מסננים ומשתנים ללוח הבקרה

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

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

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

הוספת תוויות למרכז הבקרה

בדוגמה הזו מוצג אובייקט Dashboard שמציין את התווית בשם playbook.

{
  "displayName": "Example",
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      ...
    ]
  },
  "dashboardFilters": [],
  "labels": {
    "playbook": ""
  }
}

כפי שמודגם בדוגמה הקודמת, השדה labels מיושם כ-map, כאשר השדות key ו-value הם מחרוזות. כשמוסיפים תווית ללוח בקרה, מגדירים את key לשם התווית ואת השדה value למחרוזת ריקה.

הוספת תוויות למרכז הבקרה היא אופציונלית.

מרכזי בקרה עם Widgets

בקטע הזה יש דוגמאות ללוחות בקרה שמכילים סוגים שונים של ווידג'טים.

מרכז בקרה עם XyChart

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

בדומה לפונקציונליות שמופיעה ב Google Cloud מסוף, ה-API מספק אפשרויות לשינוי PlotType התרשים או להגדרת מצבי התצוגה של התרשים.

{
  "dashboardFilters": [],
  "displayName": "Example line chart",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "title": "VM Instance - CPU utilization [MEAN]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_MEAN",
                      "groupByFields": [
                        "resource.label.\"zone\""
                      ],
                      "perSeriesAligner": "ALIGN_MEAN"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        },
        "width": 24
      }
    ]
  }
}

התרשים במרכז הבקרה אמור להיראות כך:

דוגמה ל-XyChart.

בקטע הבא מוסבר איך ליצור ווידג'ט של תרשים ב-Observability Analytics, איך להציג סף בתרשים ואיך להגדיר אם התרשים ישתמש בציר ה-Y השמאלי, בציר ה-Y הימני או בשניהם.

לוח בקרה עם תרשים של Observability Analytics

בלוח הבקרה הזה מוצג תרשים של Observability Analytics. קובץ ה-JSON לדוגמה מכיל שאילתת SQL.

{
  "displayName": "Example",
  "dashboardFilters": [],
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "width": 24,
        "height": 16,
        "widget": {
          "title": "Sample analytics chart",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "breakdowns": [],
                "dimensions": [
                  {
                    "column": "location",
                    "columnType": "STRING",
                    "maxBinCount": 5,
                    "sortColumn": "location",
                    "sortOrder": "SORT_ORDER_ASCENDING"
                  }
                ],
                "measures": [
                  {
                    "aggregationFunction": {
                      "parameters": [],
                      "type": "count"
                    },
                    "column": ""
                  }
                ],
                "plotType": "STACKED_BAR",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "opsAnalyticsQuery": {
                    "queryHandle": "",
                    "sql": "SELECT\n  CAST(JSON_VALUE(resource.labels.location) AS STRING) AS location,\n  severity,\nFROM\n  `VIEW`"
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        }
      }
    ]
  },
  "labels": {}
}

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

דוגמה לתרשים Xy עם שאילתת SQL של Observability Analytics.

מרכז בקרה עם XyChart וערך סף

בלוח הבקרה הזה מוצג לוח בקרה עם XyChart בסיסי, סף וציר Y שמאלי מוגדר.

{
  "dashboardFilters": [],
  "displayName": "Example line with threshold",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "title": "VM Instance - CPU utilization [MEAN]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_MEAN",
                      "groupByFields": [
                        "resource.label.\"zone\""
                      ],
                      "perSeriesAligner": "ALIGN_MEAN"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "thresholds": [
              {
                "label": "",
                "targetAxis": "Y1",
                "value": 0.2
              }
            ],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        },
        "width": 24
      }
    ]
  }
}

בדוגמה הקודמת, ה-JSON מציין שימוש בציר ה-Y השמאלי כי הוא מכיל מבנה y2Axis. בשדה targetAxis, משתמשים ב-Y1 לציר ה-Y הימני וב-Y2 לציר ה-Y השמאלי. אם לא מציינים את השדה targetAxis, המערכת משתמשת בציר ה-Y הימני.

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

דוגמה ל-XyChart שמשתמש בציר Y השמאלי וכולל סף.

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

לוח בקרה עם XyChart עם STACKED_AREA PlotType

במרכז הבקרה הזה מוצג XyChart עם STACKED_AREA PlotType.

{
  "dashboardFilters": [],
  "displayName": "Example stacked area",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "title": "VM Instance - CPU utilization [MEAN]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "STACKED_AREA",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_MEAN",
                      "groupByFields": [
                        "resource.label.\"zone\""
                      ],
                      "perSeriesAligner": "ALIGN_MEAN"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        },
        "width": 24
      }
    ]
  }
}

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

דוגמה ל-XyChart עם תרשים שטח משולב.

לוח בקרה עם XyChart עם STACKED_BAR PlotType

במרכז הבקרה הזה מוצג XyChart עם STACKED_BAR PlotType.

{
  "dashboardFilters": [],
  "displayName": "Example stacked bar",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "title": "VM Instance - CPU utilization [MEAN]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "STACKED_BAR",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_MEAN",
                      "groupByFields": [
                        "resource.label.\"zone\""
                      ],
                      "perSeriesAligner": "ALIGN_MEAN"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        },
        "width": 24
      }
    ]
  }
}

מרכז הבקרה אמור להיראות כך:

דוגמה ל-XyChart עם תרשים עמודות מוערם.

מרכז בקרה עם XyChart שמוגדר כהיסטוגרמה

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

כדי להגדיר היסטוגרמה, במבנה XyChart, מבצעים את הפעולות הבאות:

  • מגדירים את השדה DataSet.plotType לערך "STACKED_BAR".
  • מגדירים את השדה DataSet.dimension.column לערך "metric_value".

אם רוצים לשלוט במודל של התאים במקום לאפשר ל-Cloud Monitoring לקבוע את התאים על סמך הנתונים, צריך להוסיף את השדות הבאים למבנה DataSet.dimension:

  • xMin ו-xMax: מוגדרים לערכי המינימום והמקסימום של סוג המדד.

  • maxBinCount או numericBinSize: מגדירים את מספר התאים או את גודל התאים. אם מגדירים את מספר התאים, מומלץ שהערך יהיה לפחות 5 ולא יותר מ-50. המספר המקסימלי של תאים הוא 1,000.

קוד ה-JSON הבא מתאר לוח בקרה שמציג נתונים באמצעות תרשים היסטוגרמה:

{
  "displayName": "Histogram example",
  "dashboardFilters": [],
  "description": "",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "width": 24,
        "widget": {
          "title": "VM Instance - CPU utilization [MEAN]",
          "xyChart": {
            "chartOptions": {
              "displayHorizontal": false,
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "dimensions": [
                  {
                    "column": "metric_value"
                  }
                ],
                "minAlignmentPeriod": "60s",
                "plotType": "STACKED_BAR",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "groupByFields": [],
                      "perSeriesAligner": "ALIGN_MEAN"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "scale": "LINEAR"
            }
          }
        }
      }
    ]
  }
}

השדה dataSets.dimensions גורם להצגת XyChart כהיסטוגרמה. ההיסטוגרמה בלוח הבקרה לדוגמה משתמשת בהגדרות ברירת מחדל, ולכן השדה dimension מכיל שדה משנה אחד, "column": "metric_value".

בצילום המסך הבא מוצג XyChart שהוגדר כהיסטוגרמה:

דוגמה לווידג'ט **היסטוגרמה**.

לוח בקרה עם ווידג'ט XyChart שמגדיר שינוי של טווח הזמן

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

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

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

כדי להגדיר חריגה לטווח זמן, מגדירים את השדה widget.timeRange. בדוגמה הבאה, השדה הזה מוגדר ל-"relativeDuration": "21600s", מה שאומר שהתרשים מציג את הנתונים מ-6 השעות האחרונות:

{
  "displayName": "Test Dashboard",
  "dashboardFilters": [],
  "description": "",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "xPos": 24,
        "height": 16,
        "width": 24,
        "widget": {
          "title": "VM Instance - CPU utilization [MEAN]",
          "timeRange": {
            "relativeDuration": "21600s"
          },
          "xyChart": {
            "chartOptions": {
              "displayHorizontal": false,
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "groupByFields": [],
                      "perSeriesAligner": "ALIGN_MEAN"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "scale": "LINEAR"
            }
          }
        }
      }
    ]
  }
}

לוח בקרה עם Scorecard בסיסי

בלוח הבקרה הזה מוצג Scorecard בלי מד או תרשים קו. בדוגמה מוצג השימוש במעבד של Compute Engine, וכרטיס הניקוד כולל שני ספי שימוש. בסף אחד נעשה שימוש בצבע צהוב כדי לציין שרמת הניצול של המעבד גבוהה מ-70%, ובסף השני נעשה שימוש בצבע אדום כדי לציין שרמת הניצול של המעבד גבוהה מ-90%.

מכיוון ששימוש המעבד הנוכחי נמוך מהסף שצוין, הצבע הוא ירוק.

{
  "dashboardFilters": [],
  "displayName": "Example-basic scorecard",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 8,
        "widget": {
          "scorecard": {
            "thresholds": [
              {
                "color": "YELLOW",
                "direction": "ABOVE",
                "label": "",
                "value": 0.7
              },
              {
                "color": "RED",
                "direction": "ABOVE",
                "label": "",
                "value": 0.9
              }
            ],
            "timeSeriesQuery": {
              "outputFullDuration": true,
              "timeSeriesFilter": {
                "aggregation": {
                  "alignmentPeriod": "60s",
                  "crossSeriesReducer": "REDUCE_MEAN",
                  "groupByFields": [],
                  "perSeriesAligner": "ALIGN_MEAN"
                },
                "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
              }
            }
          },
          "title": "VM Instance - CPU utilization [MEAN]"
        },
        "width": 16
      }
    ]
  }
}

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

מרכז הבקרה אמור להיראות כך:

דוגמה ללוח בקרה עם ווידג'ט של כרטיס מידע.

לוח בקרה עם Scorecard עם GaugeView

בדוגמה הזו, לוח הבקרה כולל מדד בכרטיס המידע הבסיסי. באובייקט GaugeView אפשר לציין גבול עליון ותחתון כדי להגדיר את טווח הערכים שיוצג במד. בכרטיס הניקוד מוצגים ערכים מ-0 עד 1, ולכן הגבולות העליון והתחתון האלה סבירים. כדי להוסיף את מד העוצמה, מוסיפים את השורות הבאות ל-JSON של כרטיס המידע הבסיסי:

  "gaugeView": {
    "lowerBound": 0,
    "upperBound": 1,
  },

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

{
  "dashboardFilters": [],
  "displayName": "Example-Gauge",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 8,
        "widget": {
          "scorecard": {
            "gaugeView": {
              "lowerBound": 0,
              "upperBound": 1
            },
            "thresholds": [
              {
                "color": "YELLOW",
                "direction": "ABOVE",
                "label": "",
                "value": 0.7
              },
              {
                "color": "RED",
                "direction": "ABOVE",
                "label": "",
                "value": 0.9
              }
            ],
            "timeSeriesQuery": {
              "outputFullDuration": true,
              "timeSeriesFilter": {
                "aggregation": {
                  "alignmentPeriod": "60s",
                  "crossSeriesReducer": "REDUCE_SUM",
                  "groupByFields": [
                    "resource.labels.\"zone\""
                  ],
                  "perSeriesAligner": "ALIGN_MEAN"
                },
                "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
              }
            }
          },
          "title": "VM Instance - CPU utilization [MEAN]"
        },
        "width": 16
      }
    ]
  }
}

בווידג'טים האלה אפשר להציג כמה מדדים. לדוגמה, בצילום המסך הבא מוצג ווידג'ט Scorecard שהוגדר עם GaugeView, ובאותו ווידג'ט מוצגים שלושה מדדים:

דוגמה ללוח בקרה עם ווידג'ט של כרטיס מידע עם GaugeView.

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

לוח בקרה עם Scorecard עם SparkChartView

במקום מדד כמו בדוגמה הקודמת, בלוח הבקרה הזה מוצג תרשים קו קטן. אובייקט SparkChartView יכול ליצור תרשימי קו או תרשימי עמודות בלוח תוצאות. בדוגמה הזו נעשה שימוש בקו. כל עוד הערך לא חורג מסף מסוים, הוא ירוק. כדי להוסיף את תרשים הקו הקטן, מחליפים את אובייקט ה-JSON‏ gaugeView בתרשים הקודם באובייקט הבא:

  "sparkChartView": {
    "sparkChartType": "SPARK_LINE"
  },

כרטיס הניקוד אמור להיראות כך:

דוגמה ללוח בקרה עם הווידג'ט 'כרטיס מידע' עם SparkChartView.

לוח בקרה עם ווידג'ט של PieChart

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

כל תרשימי העוגה מוגדרים באמצעות הווידג'ט PieChart. כדי להגדיר את התרשים כך שיוצג בו סכום המדידות האחרונות, מגדירים את השדה chartType לערך DONUT. אחרת, מגדירים את השדה הזה לערך של PIE.

"pieChart": {
  "chartType": "DONUT",
},

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

{
  "dashboardFilters": [],
  "displayName": "Example Pie Donut",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "pieChart": {
            "chartType": "DONUT",
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/read_bytes_count\" resource.type=\"gce_instance\"",
                    "secondaryAggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_MEAN"
                    }
                  }
                }
              }
            ]
          },
          "title": "VM Instance - Disk read bytes [MEAN]"
        },
        "width": 24
      },
      {
        "height": 16,
        "widget": {
          "pieChart": {
            "chartType": "PIE",
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/read_bytes_count\" resource.type=\"gce_instance\"",
                    "secondaryAggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_MEAN"
                    }
                  }
                }
              }
            ]
          },
          "title": "VM Instance - Disk read bytes [MEAN]"
        },
        "width": 24,
        "xPos": 24
      },
    ]
  }
}

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

דוגמה לווידג'טים מסוג **PieChart**.

לוח בקרה עם ווידג'ט של Treemap

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

כשחוקרים מפת עצים, משתמשים במצביע כדי להפעיל את תיאור הכלים של המלבן.

הגדרת ה-JSON הבאה מגדירה ווידג'ט Treemap שמצטבר את סדרות הזמן לפי אזור וסוג אחסון:

{
  "displayName": "Example Treemap",
  "dashboardFilters": [],
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "xPos": 24,
        "height": 16,
        "width": 24,
        "widget": {
          "title": "VM Instance - Write read bytes [SUM]",
          "id": "",
          "treemap": {
            "dataSets": [
              {
                "breakdowns": [],
                "measures": [],
                "timeSeriesQuery": {
                  "outputFullDuration": true,
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": [
                        "resource.label.\"zone\"",
                        "metric.label.\"storage_type\""
                      ],
                      "perSeriesAligner": "ALIGN_RATE"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" resource.type=\"gce_instance\""
                  },
                  "unitOverride": ""
                }
              }
            ],
            "treemapHierarchy": [
              "resource.label.\"zone\"",
              "metric.label.\"storage_type\""
            ]
          }
        }
      }
    ]
  }
}

בצילום המסך הבא מוצג הווידג'ט של מפת העצים עם ההגדרה הקודמת:

דוגמה לווידג'ט **Treemap**.

בצילום המסך, תיאור הכלי מוצג עבור מלבן אחד.

לוח בקרה עם ווידג'ט של TimeSeriesTable

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

כל הטבלאות מוגדרות בווידג'ט TimeSeriesTable:

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

    • השדה TimeSeriesQuery מציין את סוג המדד.
    • אם רוצים שהטבלה תציג את הערך המצטבר, שבו הנתונים מצטברים על פני טווח הזמן שהוגדר בלוח הבקרה, צריך להגדיר את השדה timeSeriesQuery.outputFullDuration לערך true.
  • כדי להגדיר את מספר השורות המקסימלי שיוצגו, מגדירים את השדה pickTimeSeriesFilter. לדוגמה, כדי להציג רק את 2 סדרות הזמן עם הערך הממוצע הגדול ביותר ב-10 הדקות האחרונות, צריך לכלול את הפונקציה הבאה:

    "pickTimeSeriesFilter": {
        "direction": "TOP",
        "numTimeSeries": 2,
        "rankingMethod": "METHOD_MEAN"
    },
    

    אם לא מציינים את השדה pickTimeSeriesFilter, בטבלה מוצגות עד 300 שורות.

  • כדי להגדיר איך הנתונים יוצגו בטבלה, משתמשים בשדה metricVisualization:

    • כדי להציג רק ערך כמו '25%', צריך להשמיט את השדה הזה או להגדיר את הערך ל-"NUMBER". כשמשתמשים בהגדרה הזו, הווידג'ט מוצג במסוףGoogle Cloud כווידג'ט Table.
    • כדי להציג את הערך ואת האינדיקטור החזותי של הערך בהשוואה לטווח הערכים האפשריים, מגדירים את הערך של השדה הזה ל-"BAR". כשמשתמשים בהגדרה הזו, הווידג'ט מוצג במסוףGoogle Cloud כווידג'ט רשימה מובילה.
  • כדי להגדיר אילו עמודות יוצגו ואת המאפיינים של העמודה, משתמשים במערך columnSettings. אם לא מציינים את השדה הזה, בטבלה מוצגת עמודה אחת לכל תווית.

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

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

    בדוגמה הבאה מוצגות שתי עמודות:

    "columnSettings": [
      {
        "column": "device_name",
        "displayName": "Device",
        "visible": true
      },
      {
        "alignment": "CENTER",
        "column": "value",
        "displayName": "Disk Write Bytes",
        "thresholds": [
          {
            "color": "YELLOW",
            "direction": "ABOVE",
            "value": 4000
          },
          {
            "color": "RED",
            "direction": "ABOVE",
            "value": 5000
          }
        ],
        "visible": true
      }
    ],
    

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

{
  "displayName": "Example",
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "width": 44,
        "height": 17,
        "widget": {
          "title": "VM Instance - Disk read bytes [RATE], Disk write bytes [RATE]",
          "timeSeriesTable": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/read_bytes_count\" resource.type=\"gce_instance\"",
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE",
                      "groupByFields": []
                    },
                    "pickTimeSeriesFilter": {
                      "rankingMethod": "METHOD_MEAN",
                      "numTimeSeries": 30,
                      "direction": "TOP"
                    }
                  },
                  "unitOverride": "",
                  "outputFullDuration": true
                },
                "tableTemplate": "",
                "minAlignmentPeriod": "60s"
              },
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" resource.type=\"gce_instance\"",
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE",
                      "groupByFields": []
                    },
                    "pickTimeSeriesFilter": {
                      "rankingMethod": "METHOD_MEAN",
                      "numTimeSeries": 30,
                      "direction": "TOP"
                    }
                  },
                  "unitOverride": "",
                  "outputFullDuration": true
                },
                "tableTemplate": "",
                "minAlignmentPeriod": "60s"
              }
            ],
            "metricVisualization": "BAR",
            "columnSettings": [
              {
                "column": "Name (from instance_id)",
                "visible": true
              },
              {
                "column": "zone",
                "visible": true
              },
              {
                "column": "device_name",
                "visible": true
              },
              {
                "column": "storage_type",
                "visible": true
              },
              {
                "column": "device_type",
                "visible": true
              },
              {
                "column": "value",
                "visible": true,
                "displayName": "Read bytes"
              },
              {
                "column": "value-1",
                "visible": true,
                "displayName": "Written bytes"
              }
            ],
            "opsAnalyticsSettings": {
              "maxRows": "0",
              "showFilterBar": false,
              "pageSize": "0"
            },
            "displayColumnType": false
          },
          "id": ""
        }
      },
      {
        "yPos": 17,
        "width": 44,
        "height": 16,
        "widget": {
          "title": "VM Instance - Disk write bytes [RATE]",
          "timeSeriesTable": {
            "columnSettings": [
              {
                "column": "device_name",
                "displayName": "Device",
                "visible": true
              },
              {
                "alignment": "LEFT",
                "column": "instance_name",
                "displayName": "Instance name",
                "visible": true
              },
              {
                "column": "storage_type",
                "displayName": "Storage type",
                "visible": true
              },
              {
                "column": "device_type",
                "displayName": "Device Type",
                "visible": true
              },
              {
                "alignment": "CENTER",
                "column": "value",
                "displayName": "Disk Write Bytes",
                "thresholds": [
                  {
                    "color": "YELLOW",
                    "direction": "ABOVE",
                    "label": "",
                    "value": 4000
                  },
                  {
                    "color": "RED",
                    "direction": "ABOVE",
                    "label": "",
                    "value": 5000
                  }
                ],
                "visible": true
              },
              {
                "alignment": "LEFT",
                "column": "Name (from instance_id)",
                "displayName": "ID",
                "visible": true
              }
            ],
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "displayColumnType": false,
            "metricVisualization": "NUMBER",
            "opsAnalyticsSettings": {
              "maxRows": "0",
              "pageSize": "0",
              "showFilterBar": false
            }
          }
        }
      }
    ]
  },
  "dashboardFilters": [],
  "labels": {}
}

צילום המסך הבא מדגים את הטבלה שהוגדרה קודם:

לוח בקרה לדוגמה עם ווידג'ט של טבלה.

לוח בקרה עם ווידג'ט של Text

בדוגמה הזו מוצג לוח בקרה עם הווידג'ט Text.

{
  "dashboardFilters": [],
  "displayName": "DB2+TE",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
    ...
      {
        "height": 16,
        "widget": {
          "text": {
            "content": "# Support information\n\n\nContact information: my-support-team@example.com\nOnline help: [Playbooks](https://example.com)\n\n",
            "format": "MARKDOWN",
            "style": {
              "backgroundColor": "",
              "fontSize": "FS_LARGE",
              "horizontalAlignment": "H_LEFT",
              "padding": "P_EXTRA_SMALL",
              "textColor": "",
              "verticalAlignment": "V_TOP"
            }
          }
        },
        "width": 24,
        "yPos": 14
      }
    ]
  }
}

דוגמה לווידג'ט טקסט:

דוגמה לווידג'ט טקסט.

לוח בקרה עם ווידג'ט AlertChart

בלוח הבקרה הזה מוצג לוח בקרה עם ווידג'ט של AlertChart:

{
  "category": "CUSTOM",
  "displayName": "Alerting policy chart example",
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      {
        "height": 4,
        "widget": {
          "alertChart": {
            "name": "projects/my-project/alertPolicies/14205854094151528373"
          }
        },
        "width": 6,
      }
    ]
  }
}

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

התרשים במרכז הבקרה אמור להיראות כך:

דוגמה לתרשים של מדיניות התראות.

בדוגמה הזו, מדיניות ההתראות מנטרת את השימוש ב-CPU של שתי מכונות וירטואליות שונות. הקו המקווקו מראה את סף התנאי, שמוגדר ל-50%. הצ'יפ הירוק עם התווית No incidents מציין שאין אירועים פתוחים במדיניות ההתראות. אם מציבים את מצביע העכבר על הצ'יפ של האירועים, נפתח דו-שיח עם קישור למדיניות ההתראות הבסיסית.

לוח בקרה עם ווידג'ט ErrorReportingPanel

בלוח הבקרה הזה מוצג לוח בקרה עם ווידג'ט של ErrorReportingPanel:

{
  "dashboardFilters": [],
  "displayName": "Error reporting widget",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "errorReportingPanel": {
            "projectNames": [
              "projects/my-project"
            ],
            "services": [],
            "versions": []
          },
          "title": "Error Reporting Panel"
        },
        "width": 24,
      }
    ]
  }
}

מומלץ להגדיר את הגובה של חלונית דיווח השגיאות ל-16 יחידות לפחות, ואת הרוחב ל-24 יחידות לפחות. בדוגמה הקודמת, גובה הווידג'ט הוא 16 יחידות והרוחב הוא 24 יחידות.

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

דוגמה לחלונית ההגדרות של לוח דיווח השגיאות.

לוח בקרה עם ווידג'ט של FilterControl

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

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

  1. מוסיפים ווידג'ט של CollapsibleGroup למרכז הבקרה וממקמים את שני התרשימים האלה בקבוצה.
  2. מוסיפים ווידג'ט של FilterControl למרכז הבקרה. מגדירים את הווידג'ט הזה למשתנה ומוסיפים אותו לקבוצה.

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

לוח הבקרה הבא מכיל ווידג'ט FilterControl:

{
  "displayName": "Dashboard with filter control widget",
  "dashboardFilters": [
    {
      "filterType": "RESOURCE_LABEL",
      "labelKey": "project_id",
      "stringValue": "my-project",
      "templateVariable": "proj",
      "valueType": "STRING"
    }
  ],
  "description": "",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "yPos": 70,
        "height": 5,
        "width": 16,
        "widget": {
          "title": "Project control",
          "filterControl": {
            "templateVariable": "proj"
          }
        }
      }
    ]
  }
}

בדוגמה הקודמת מוגדר משתנה אחד, proj, ומוסף ווידג'ט אחד של FilterControl. בהגדרה הזו, התפריט של המשתנה מועבר מסרגל הכלים של מרכז הבקרה לווידג'ט שנקרא Project control. בווידג'ט הזה יש תפריט שבו אפשר לבחור את הפרויקט.

לוח בקרה עם ווידג'ט IncidentList

בלוח הבקרה הזה מוצג לוח בקרה עם ווידג'ט של IncidentList:

{
  "category": "CUSTOM",
  "dashboardFilters": [],
  "displayName": "Incident widget",
  "labels": {},
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      {
        "height": 5,
        "widget": {
          "incidentList": {
            "monitoredResources": [],
            "policyNames": []
          },
          "title": "Incidents"
        },
        "width": 8,
        "xPos": 0,
        "yPos": 0
      }
    ]
  }
}

בדוגמה הקודמת, השדה title מוגדר ל-Incidents, והווידג'ט מוגדר להצגת כל האירועים למשאבים מסוג gce_instance. כשמגדירים את הווידג'ט הזה, אפשר לבחור כמה מדיניות התראות או כמה סוגי משאבים.

הווידג'ט של האירוע בלוח הבקרה ייראה בערך כמו בדוגמה הבאה:

דוגמה לווידג'ט של אירוע.

לוח בקרה עם ווידג'ט של LogsPanel

במרכז הבקרה הזה מוצג ווידג'ט של LogsPanel:

{
  "category": "CUSTOM",
  "displayName": "Logs Panel",
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      {
        "height": 4,
        "widget": {
          "logsPanel": {
            "filter": "",
            "resourceNames": [
              "projects/012012012012"
            ]
          },
          "title": "Logs Panel"
        },
        "width": 6,
        "xPos": 0,
        "yPos": 0
      }
    ]
  }
}

מומלץ להגדיר את הגובה של חלונית היומנים ל-3 יחידות לפחות, ואת הרוחב ל-4 יחידות לפחות. בדוגמה הקודמת, הגובה של הווידג'ט הוא 4 יחידות והרוחב הוא 6 יחידות.

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

חלונית היומנים אמורה להיראות כך:

דוגמה ללוח בקרה עם ווידג'ט של חלונית יומנים.

מידע על פתרון בעיות זמין במאמר קריאה ל-API ליצירת מרכז בקרה עם חלונית יומנים נכשלת.

לוח בקרה עם ווידג'ט של CollapsibleGroup

במרכז הבקרה הזה מוצג ווידג'ט של CollapsibleGroup:

{
  "category": "CUSTOM",
  "displayName": "Group testing",
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      {
        "height": 4,
        "widget": {
          "collapsibleGroup": {
            "collapsed": false
          },
          "title": "My group"
        },
        "width": 12,
        "xPos": 0,
        "yPos": 0
      },
      {
        "height": 4,
        "widget": {
          "title": "VM Instance - CPU utilization [MEAN]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "apiSource": "DEFAULT_CLOUD",
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_NONE",
                      "perSeriesAligner": "ALIGN_MEAN"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\"",
                    "secondaryAggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_NONE",
                      "perSeriesAligner": "ALIGN_NONE"
                    }
                  }
                }
              }
            ],
            "thresholds": [],
            "timeshiftDuration": "0s",
            "yAxis": {
              "label": "y1Axis",
              "scale": "LINEAR"
            }
          }
        },
        "width": 6,
        "xPos": 0,
        "yPos": 0
      }
    ]
  }
}

בדוגמה הקודמת, בווידג'ט של קבוצה שניתן לכווץ יש תרשים אחד שמציג את ניצול המעבד של מופע של מכונה וירטואלית. ווידג'טים של קבוצות שאפשר לכווץ משתרעים על פני שורה שלמה בטבלה. ווידג'ט נכלל בקבוצה אם המיקום (x,y) והגובה שצוינו לקבוצה כוללים את המיקום (x,y) של הווידג'ט. בדוגמה הקודמת, הקבוצה נמצאת במיקום (0,0) והגובה שלה הוא 4. הנקודה xyChart נמצאת במיקום (0,0), ולכן היא כלולה בקבוצה. עם זאת, אם המיקום של התרשים הזה ישתנה ל-(0,5), התרשים לא ייכלל בקבוצה. לבסוף, אם מיקום הווידג'ט (x,y) גורם לכך שהווידג'ט ייכלל בקבוצה, יכול להיות שהגובה של הווידג'ט של הקבוצה הניתנת לכיווץ יורחב.

כדי לכלול ווידג'ט של קבוצה בלוח בקרה, ללוח הבקרה צריך להיות MosaicLayout.

דוגמה לווידג'ט של קבוצה שניתן לכווץ:

דוגמה ללוח בקרה עם ווידג'ט של קבוצה שאפשר לכווץ.

לוח בקרה עם ווידג'ט של SingleViewGroup

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

בווידג'ט SingleViewGroup יש תמיכה בשני סגנונות תצוגה: DROPDOWN ו-TAB. ההבדל בין שני הסגנונות האלה הוא באופן שבו בוחרים את חבר הקבוצה שיוצג. ווידג'טים עם סגנון DROPDOWN מספקים תפריט. בווידג'טים עם סגנון TAB יש כרטיסיות בסרגל הכלים של הווידג'ט:

{
  "dashboardFilters": [],
  "displayName": "Example",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "singleViewGroup": {
            "displayType": "DROPDOWN"
          },
          "title": "Untitled group"
        },
        "width": 24,
        "yPos": 16
      },
      {
        "height": 16,
        "widget": {
          "title": "VM Instance - Disk read bytes [RATE]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/read_bytes_count\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        },
        "width": 24,
        "yPos": 16
      },
      {
        "height": 16,
        "widget": {
          "title": "VM Instance - Disk write bytes [RATE]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        },
        "width": 24,
        "yPos": 16
      }
    ]
  }
}

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

לוח בקרה עם ווידג'ט של SectionHeader

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

מרכז הבקרה הזה מציג מרכז בקרה עם תרשים אחד ווידג'ט SectionHeader:

{
  "dashboardFilters": [],
  "displayName": "Example",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "title": "VM Instance - Disk write bytes [RATE]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        },
        "width": 24,
        "yPos": 4
      },
      {
        "height": 4,
        "widget": {
          "sectionHeader": {
            "dividerBelow": true,
            "subtitle": "Instance metrics"
          },
          "title": "Metrics"
        },
        "width": 48
      }
    ]
  }
}

באובייקט SectionHeader, הערך של השדה title מוצג גם בווידג'ט וגם בתוכן העניינים. הערך של השדה subtitle מוצג רק בווידג'ט. אם הערך של dividerBelow הוא true, מתווסף קו הפרדה לתוכן העניינים.

לוח בקרה עם ווידג'ט של SLO

בדוגמה הזו מוצג לוח בקרה עם ווידג'ט של SLO:

{
  "dashboardFilters": [],
  "displayName": "Example",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "title": "SLO Error Budget: 99.5% - Distribution Cut - Calendar month",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "breakdowns": [],
                "dimensions": [],
                "legendTemplate": "Remaining error requests before SLO is burned",
                "measures": [],
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "perSeriesAligner": "ALIGN_NEXT_OLDER"
                    },
                    "filter": "select_slo_budget(\"projects/Project_Number/services/SERVICE_ID/serviceLevelObjectives/SLO_ID\")",
                  },
                  "unitOverride": "1"
                }
              }
            ],
            "thresholds": []
          }
        },
        "width": 24
      }
    ]
  }
}

כפי שאפשר לראות בקובץ ה-JSON הקודם, תרשימי SLO מיוצגים כאובייקטים מסוג XyChart. האובייקטים האלה מציינים את כל שדות הצבירה, הספים והערך של השדה filter הוא בורר של סדרת זמן. מידע נוסף על הסלקטורים האלה זמין במאמר אחזור נתוני SLO.

דוגמה לווידג'ט של SLO:

לוח בקרה לדוגמה עם ווידג'ט של יעד רמת שירות (SLO).

לוח בקרה עם נתוני מעקב

כדי להציג נתוני מעקב בלוח בקרה, משתמשים במבנה XyChart או במבנה TimeSeriesTable. כשרוצים ליצור מפת חום או תרשים קו, משתמשים במבנה XyChart. אם רוצים להציג את הנתונים בטבלה, משתמשים במבנה TimeSeriesTable.

בלוח הבקרה הזה מוצגים נתוני מעקב בתור מפת חום ובשתי טבלאות:


{
  "displayName": "Example trace chart",
  "dashboardFilters": [],
  "description": "",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 22,
        "width": 48,
        "widget": {
          "title": "Vizualizer",
          "xyChart": {
            "chartOptions": {
              "displayHorizontal": false,
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "plotType": "HEATMAP",
                "timeSeriesQuery": {
                  "traceQuery": {
                    "resourceContainer": "projects/my-project",
                    "spanDataValue": "SPAN_DURATION",
                    "spanFilters": {
                      "apphubServices": [],
                      "apphubWorkloads": [],
                      "applicationIds": [],
                      "attributes": [],
                      "displayNames": [
                        "/taskqueue.QueryAndOwnTasks"
                      ],
                      "isRootSpan": false,
                      "kinds": [],
                      "services": [],
                      "status": []
                    }
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "scale": "LINEAR"
            }
          }
        }
      },
      {
        "yPos": 22,
        "height": 16,
        "width": 24,
        "widget": {
          "title": "Grouped span table",
          "timeSeriesTable": {
            "columnSettings": [],
            "dataSets": [
              {
                "breakdowns": [
                  {
                    "aggregationFunction": {
                      "type": "none"
                    },
                    "column": "serviceOrWorkload",
                    "limit": 0,
                    "sortOrder": "SORT_ORDER_NONE"
                  }
                ],
                "timeSeriesQuery": {
                  "traceQuery": {
                    "resourceContainer": "projects/my-project",
                    "spanDataValue": "SPAN_DURATION",
                    "spanFilters": {
                      "apphubServices": [],
                      "apphubWorkloads": [],
                      "applicationIds": [],
                      "attributes": [],
                      "displayNames": [],
                      "isRootSpan": false,
                      "kinds": [],
                      "services": [],
                      "status": []
                    }
                  }
                }
              }
            ],
            "metricVisualization": "NUMBER"
          }
        }
      },
      {
        "yPos": 22,
        "xPos": 24,
        "height": 16,
        "width": 24,
        "widget": {
          "title": "Span table",
          "timeSeriesTable": {
            "columnSettings": [],
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "traceQuery": {
                    "resourceContainer": "projects/my-project",
                    "spanDataValue": "SPAN_DURATION",
                    "spanFilters": {
                      "apphubServices": [],
                      "apphubWorkloads": [],
                      "applicationIds": [],
                      "attributes": [],
                      "displayNames": [],
                      "isRootSpan": false,
                      "kinds": [],
                      "services": [],
                      "status": []
                    }
                  }
                }
              }
            ],
            "metricVisualization": "NUMBER"
          }
        }
      }
    ]
  }
}

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

מרכז הבקרה אמור להיראות כך:

מרכז בקרה שבו מוצגים נתוני מעקב.

מרכז בקרה עם ווידג'ט ריק

בדוגמה הזו מוצג לוח בקרה עם ווידג'ט ריק של placeholder. הערך של השדה displayName מופיע בווידג'ט.

{
  "displayName": "Demo Dashboard",
  "gridLayout": {
    "widgets": [
      {
        "blank": {}
      }
    ]
  }
}

מרכז הבקרה אמור להיראות כך:

לוח בקרה לדוגמה עם ווידג'ט ריק.

לוח בקרה עם הגדרת חשיפה של ווידג'טים

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

  • למשתנה שנקרא show יש ערך ברירת מחדל של a. הערכים של המשתנה מוגדרים כ-a, b ו-c. מכיוון שהשדה valueType הוא STRING_ARRAY, אפשר להגדיר את המשתנה גם לערכים כמו a or b.

  • בווידג'ט הטקסט, הרשומה עם התווית visibilityCondition מגדירה את הנראות של הווידג'ט. אם הערך של המשתנה show כולל b, הווידג'ט של הטקסט יוצג. אחרת, ווידג'ט הטקסט לא יוצג.


{
  "displayName": "Conditional Widget Example",
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "yPos": 16,
        "width": 24,
        "height": 16,
        "widget": {
          "title": "A text widget",
          "text": {
            "content": "Example showing how to use a custom variable to control visibility.",
            "format": "MARKDOWN",
            "style": {
              "backgroundColor": "#FFFFFF",
              "fontSize": "FS_LARGE",
              "horizontalAlignment": "H_LEFT",
              "padding": "P_EXTRA_SMALL",
              "pointerLocation": "POINTER_LOCATION_UNSPECIFIED",
              "textColor": "#212121",
              "verticalAlignment": "V_TOP"
            }
          },
          "visibilityCondition": {
            "templateVariableCondition": {
              "templateVariable": "show",
              "templateVariableValue": "b",
              "comparator": "REGEX_FULL_MATCH"
            }
          }
        }
      }
    ]
  },
  "dashboardFilters": [
    {
      "labelKey": "",
      "templateVariable": "show",
      "stringArrayValue": {
        "values": [
          "a"
        ]
      },
      "filterType": "VALUE_ONLY",
      "valueType": "STRING_ARRAY",
      "stringArray": {
        "values": [
          "a",
          "b",
          "c"
        ]
      }
    }
  ],
  "labels": {}
}

הגבלות שקשורות להגדרת החשיפה של ווידג'ט מפורטות במאמר בנושא הגדרת החשיפה של ווידג'ט.