בדף הזה מוסבר איך ליצור לוחות בקרה באמצעות Cloud Monitoring API. לכל דוגמה מוצגת הגדרת לוח הבקרה ב-JSON ולוח הבקרה המתאים. אפשר לספק JSON גם ל-Google Cloud CLI וגם לנקודות הקצה של Cloud Monitoring API.
בנוסף, ב-GitHub יש אוסף של הגדרות ללוחות בקרה ב-Cloud Monitoring. אפשר להתקין את ההגדרות האלה ב 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
}
]
}
}
התרשים בלוח הבקרה ייראה בערך כך:
בקטע הבא מוסבר איך ליצור ווידג'ט של תרשים ב-Log Analytics, איך להציג סף בתרשים ואיך להגדיר אם התרשים ישתמש בציר ה-Y השמאלי, בציר ה-Y הימני או בשניהם.
מרכז בקרה עם תרשים של Log Analytics
בלוח הבקרה הזה מוצג תרשים של Log 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": {}
}
התרשים בלוח הבקרה ייראה בערך כך:

מרכז בקרה עם 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 הימני.
התרשים בלוח הבקרה הזה נראה דומה לדוגמה הבאה:
אתם יכולים ליצור תרשימים שמציגים כמה סוגים של מדדים ומשתמשים בציר השמאלי והימני. בדוגמה הקודמת ראינו תרשים עם סוג מדד יחיד, כלומר יש רכיב אחד במערך 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 עם 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
}
]
}
}
לוח הבקרה אמור להיראות כך:
לוח בקרה עם 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_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 עם SparkChartView
במקום מדד כמו בדוגמה הקודמת, מרכז הבקרה הזה מציג תרשים קו קטן.
אובייקט SparkChartView יכול ליצור תרשימי קו או תרשימי עמודות בלוח תוצאות.
בדוגמה הזו נעשה שימוש בקו. כל עוד הערך לא חורג מסף מסוים, הוא ירוק. כדי להוסיף את התרשים הקווי הקטן, מחליפים את אובייקט ה-JSON gaugeView בתרשים הקודם באובייקט הבא:
"sparkChartView": {
"sparkChartType": "SPARK_LINE"
},
כרטיס הניקוד אמור להיראות כך:
לוח בקרה עם ווידג'ט של 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
},
]
}
}
כפי שמוצג בצילום המסך הבא, שני הווידג'טים מציגים את הנתונים כתרשים עוגה, אבל בווידג'ט אחד מוצג סכום הערכים האחרונים:
לוח בקרה עם ווידג'ט של Treemap
כדי לראות את הנתונים העדכניים ביותר כסדרה של מלבנים מוכלים, שכל אחד מהם מייצג אוסף ייחודי של ערכי תוויות, מוסיפים תרשים עץ.
נניח שצברתם את הנתונים שאתם מציגים בתרשים לפי התווית zone.
אם מגדירים את סוג הווידג'ט לתרשים Treemap, כל מלבן בתרשים Treemap מייצג אזור אחד. רוויית הצבע של מלבן פרופורציונלית לערך שהוא מייצג.
כשחוקרים תרשים 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. לדוגמה, כדי להציג רק את שני סדרות הזמן עם הערך הממוצע הכי גבוה ב-10 הדקות האחרונות, צריך לכלול את הפונקציה הבאה:"pickTimeSeriesFilter": { "direction": "TOP", "numTimeSeries": 2, "rankingMethod": "METHOD_MEAN" },אם לא מציינים את השדה
pickTimeSeriesFilter, בטבלה מוצגות עד 300 שורות.כדי להגדיר איך הנתונים יוצגו בטבלה, משתמשים בשדה
metricVisualization:- כדי להציג רק ערך כמו '25%', צריך להשמיט את השדה הזה או להגדיר את הערך ל-
"NUMBER". כשמשתמשים בהגדרה הזו, הווידג'ט מוצג במסוףGoogle Cloud כווידג'ט Table. - כדי להציג את הערך ואינדיקטור חזותי של הערך בהשוואה לטווח הערכים האפשריים, מגדירים את הערך של השדה הזה ל-
"BAR". כשמשתמשים בהגדרה הזו, הווידג'ט מוצג במסוףGoogle Cloud כווידג'ט רשימה מובילה.
- כדי להציג רק ערך כמו '25%', צריך להשמיט את השדה הזה או להגדיר את הערך ל-
כדי להגדיר אילו עמודות יוצגו ואת המאפיינים של העמודה, משתמשים במערך
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. כל מסנן מכיל תפריט שמאפשר לשנות את ערך המשתנה.
יכול להיות שניהול הערך של משתנה באמצעות מסנן בסרגל הכלים לא יהיה אופטימלי. לדוגמה, נניח שיש לכם לוח בקרה עם הרבה תרשימים, ושיש לכם משתנה שרלוונטי רק לשני תרשימים. בתרחיש הזה, אפשר לבצע את הפעולות הבאות:
- מוסיפים ווידג'ט של
CollapsibleGroupלמרכז הבקרה וממקמים את שני התרשימים האלה בקבוצה. מוסיפים ווידג'ט של
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. האובייקט SingleViewGroup מכיל אובייקטים שהערכים שלהם בשדות width ו-yPos תואמים לערכים של האובייקט 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:
לוח בקרה עם ווידג'ט ריק
בדוגמה הזו מוצג לוח בקרה עם ווידג'ט ריק של 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": {}
}
הגבלות שקשורות להגדרת החשיפה של ווידג'ט מפורטות במאמר בנושא הגדרת החשיפה של ווידג'ט.