מסננים ב-Cloud Monitoring API מאפשרים לבחור סדרות זמן ספציפיות, סוגי מדדים ומשאבים במעקב בבקשות API.
לפני שמתחילים
אם אתם לא מכירים את המושגים מדדים, סדרות זמנים ומשאבים במעקב, קראו את המאמר מדדים, סדרות זמנים ומשאבים.
אם אתם לא מכירים את נושא התוויות, תוכלו לקרוא את המבוא במאמר תוויות.
שימוש במסננים
אתם יכולים להשתמש במסננים ב-Monitoring API כדי:
- בוחרים את נתוני סדרת הזמנים הספציפיים שמוחזרים מבקשת API של
list. המסנן יכול לבחור סדרות זמנים לפי מאפייני המשאב במעקב ומאפייני המדדים של הנתונים. למידע נוסף ולדוגמאות, ראו אחזור נתונים של סדרת זמנים.
להציג רשימה של סוגי מדדים מסוימים. מידע נוסף ודוגמאות מופיעים במאמר הצגת רשימה של תיאורי מדדים.
להציג רשימה של סוגי משאבים במעקב ספציפיים. למידע נוסף ולדוגמאות, ראו הצגת תיאורים של משאבים במעקב.
בוררי סינון
מסנן מורכב מבורר אחד לפחות, שהוא מילת מפתח לסינון. הדוגמאות הבאות ממחישות את הסלקטורים השונים:
-
resource: התאמה ל משאבים במעקב מסוג מסוים או עם ערכי תוויות מסוימים.-
המסנן הבא תואם לכל המשאבים במעקב שהם מכונות וירטואליות (VM) של Compute Engine:
resource.type = "gce_instance"
-
-
metric: התאמה ל סוג מדד או לסדרת זמן מסוימים עם תווית מסוימת שתואמת לערך ספציפי.-
המסנן הבא תואם לסוג מדד ספציפי:
metric.type = "compute.googleapis.com/instance/cpu/usage_time"
-
המסנן הבא תואם לסדרות זמנים עם תווית בשם
instance_name, שהערך שלה מתחיל ב-gke-hipsterאו ב-gke-nginx:metric.labels.instance_name = monitoring.regex.full_match("gke-(hipster|nginx).*")
-
בטבלה הבאה מוצגים הסלקטורים שמותרים במסננים, על סמך הקריאה ל-Monitoring API:
| מטרת הסינון | דף resource של הבורר |
דף metric של הבורר |
|---|---|---|
| הצגת רשימה של סדרות זמנים | כן | כן * |
| הצגת רשימה של תיאורי מדדים | כן | |
| הצגת רשימה של מתארי משאבים במעקב | כן |
בקטעים הבאים מוצגות דוגמאות לשימושים אופייניים במסנני מעקב. במאמר תחביר של מסננים מפורטים כל האובייקטים והאופרטורים של המסננים.
אחזור נתונים של פעולות על ציר הזמן
Method:
projects.timeSeries.list
Filter objects:
project, resource.type, resource.labels.[KEY], metric.type,
metric.labels.[KEY]
סדרת זמן היא רשימה של נקודות על הגרף עם חותמות זמן של סוג מדד ממשאב ספציפי במעקב. לפרטים נוספים, קראו את המאמר מודל המדדים. סוג המדד מצוין באמצעות תיאור מדד, והמשאב במעקב מצוין באמצעות תיאור משאב במעקב.
המסנן שצוין ב-method timeSeries.list חייב לכלול בורר metric, והבורר הזה חייב לציין בדיוק סוג אחד של מדד:
- כדי להחזיר את כל סדרות הזמנים לסוג מדד מסוים, משתמשים במסנן הבא:
metric.type = "compute.googleapis.com/instance/cpu/usage_time"
כדי להחזיר את כל סדרות הזמנים ממכונה ספציפית של Compute Engine, משתמשים במסנן הבא:
metric.type = "compute.googleapis.com/instance/cpu/usage_time" AND metric.labels.instance_name = "my-instance-name"
כדי להחזיר את כל סדרות הזמנים ממכונות Compute Engine שהשמות שלהן מתחילים ב-
frontend-, משתמשים במסנן הבא:metric.type = "compute.googleapis.com/instance/cpu/usage_time" AND metric.labels.instance_name = starts_with("frontend-")כדי להחזיר את כל סדרות הזמנים ממכונות Compute Engine שהשמות שלהן מתחילים ב-
gke-hipsterאו ב-gke-nginx, משתמשים במסנן הבא:metric.type = "compute.googleapis.com/instance/cpu/usage_time" AND metric.labels.instance_name = monitoring.regex.full_match("^gke-(hipster|nginx).*")
הצגת רשימה של תיאורי מדדים
Method:
projects.metricDescriptors.list
Filter objects: project, metric.type
אפשר להשתמש במסנן כדי להגביל את תיאורי המדדים שמאחזרים.
לדוגמה, כדי להחזיר רק את תיאורי המדדים של Compute Engine, משתמשים במסנן הבא:
metric.type = starts_with("compute.googleapis.com")
ברשימת המדדים מפורטים כל סוגי המדדים הזמינים. במאמר מוסכמות למתן שמות למדדים מוסבר איך נותנים שמות למדדים.
הצגת רשימה של מתארי משאבים במעקב
Method:
projects.monitoredResourceDescriptors.list
סינון אובייקטים: resource.type
אפשר להשתמש במסנן כדי להגביל את התיאורים של המשאבים במעקב שאתם מאחזרים.
לדוגמה, כדי לאחזר רק את התיאורים של המשאבים במעקב של Pub/Sub, משתמשים במסנן הבא:
resource.type = starts_with("pubsub")
ברשימת המשאבים במעקב מופיעה רשימה מלאה של סוגי המשאבים במעקב שמוגדרים על ידי Monitoring.
דוגמאות
בדוגמאות לסינון אנחנו משתמשים בתיאור המדד, בתיאור המשאב במעקב ובמכונה הווירטואלית הבאים, שפושטו לצורך המחשה:
# Metric descriptor:
{ "name": "projects/my-project-id/metricDescriptors/compute.googleapis.com%2Finstance%2Fdisk%2Fread_bytes_count",
"type": "compute.googleapis.com/instance/disk/read_bytes_count",
"labels": [ { "key": "device_name",
"description": "The name of the disk device." } ] }
# Monitored resource descriptor:
{ "name": "monitoredResourceDescriptors/gce_instance",
"type": "gce_instance",
"labels": [
{ "key": "instance_id",
"description": "The instance ID provided by Google Compute Engine." },
{ "key": "zone",
"description": "The Google Cloud Platform zone hosting the instance."
} ] }
# Resource descriptor for a virtual machine instance.
{ "type": "gce_instance",
"instance_id": "1472038649266883453",
"zone": "us-east-1b",
"disks": [ "log_partition" ],
"machine_type": "n1-standard-2",
"tags": { "environment": "bleeding-edge",
"role": "frobulator" },
"project_id": "my-project-id" }
דוגמאות לאחזור מדדים
כדי לבקש את השימוש ברוחב הפס לקריאה מהדיסק בכל המכונות ובכל המכשירים, מגדירים מסנן באופן הבא. המסנן הזה מחזיר לכל מכונה סדרת זמנים נפרדת שמדווחת על רוחב הפס לקריאה בכל מכשיר:
metric.type = "compute.googleapis.com/instance/disk/read_bytes_count"
כדי לצמצם את הבקשה לשאילתה על רוחב הפס לקריאה רק של מכשיר הדיסק שנקרא log_partition בכל מכונה, מגדירים את המסנן באופן הבא. המסנן הזה מחזיר לכל מכונה לכל היותר סדרת נתונים אחת, בהתאם לשאלה אם קיים מכשיר עם השם הזה במכונה:
metric.type = "compute.googleapis.com/instance/disk/read_bytes_count" AND metric.labels.device_name = "log_partition"
כדי להגביל את הבקשה למכונה אחת, מציינים את המכונה הזו:
resource.type = "gce_instance" AND resource.labels.instance_id = "1472038649266883453" AND metric.type = "compute.googleapis.com/instance/disk/read_bytes_count" AND metric.labels.device_name = "log_partition"
חומר עזר: תחביר של מסננים
במאמר שימוש במסננים תוכלו לקרוא סקירה כללית על מסננים, כולל דוגמאות.
מסנן מעקב הוא מחרוזת שמורכבת מעד שני סוגים של בוררים:
<monitoring_filter> ::= <resource_selector> AND
<metric_selector>
המסנן תואם לפריט אם כל הבוררים הכלולים תואמים לפריט.
כמו שמתואר בקטעים הבאים, בבוררים מסוימים יכולות להיות כמה השוואות שמחוברות באמצעות AND או OR. אין חשיבות לסדר של הבוררים במסנן, אבל אסור לערבב בין השוואות של בוררים שונים.
בהתאם למטרת המסנן, יכול להיות שבוררים מסוימים יהיו חובה, אופציונליים או אסורים. לדוגמה, המסנן שמשמש להצגת רשימה של סדרות זמן חייב להכיל בורר מדדים.
השוואות
מסננים והבוררים שלהם בנויים מהשוואות. כל השוואה היא בפורמט הבא:
-
[OBJECT]: בוחר ערך לבדיקה. אחת מהאפשרויות הבאות:
metric.type metric.labels.[KEY] resource.type resource.labels.[KEY][KEY] הוא שם, כמו
zoneאוinstance_id.[KEYSTRING] יכול להיות שם, אבל אם הוא מכיל תווים מיוחדים, צריך להקיף אותו במירכאות (
"). -
[OPERATOR]: אופרטור השוואה, אחד מהבאים:
= # equality (case-sensitive) > < >= <= # numeric ordering != # not equal : # "has" substring match and test for key (case-sensitive) -
[VALUE]: ליטרל או בקשה להפעלת פונקציה מובנית; אחת מהאפשרויות הבאות:
<string> # "a Unicode string". Don't use apostrophes (`'`) to quote strings. <bool> # true or false <number> # 0, -2, 123456, 3.14156 <function> # operators on the right side of '=' or '!=': # starts_with(<string>) # ends_with(<string>) # has_substring(<string> [, ignore_case=false]) # one_of(<string>,...,<string>) for up to 100 strings # monitoring.regex.full_match(<RE2-string>)חוץ מהשימוש בשיטה
timeSeries.list, המסנןhas_substringמקבל ארגומנט שני אופציונלי, שמציין אם ההתאמה מתעלמת מאותיות רישיות או לא. ערך ברירת המחדל הואfalse, כך שההתאמה שמוגדרת כברירת מחדל תלוית אותיות רישיות:- תלוי אותיות רישיות:
display_name=has_substring("Demo") - תלוי אותיות רישיות:
display_name=has_substring("Demo", false) - לא תלוי-רישיות:
display_name=has_substring("Demo", true)
כשמשתמשים בשיטה
timeSeries.list, רק הפורמטhas_substring(<string>)נתמך.המסנן
monitoring.regex.full_matchמקבל מחרוזת של ביטוי רגולרי בתחביר RE2. - תלוי אותיות רישיות:
אתם יכולים להשתמש באופרטורים הבאים כדי לקבץ או לשנות השוואות. ל-OR יש קדימות גבוהה יותר מאשר ל-AND. צריך לכתוב את האופרטורים באותיות רישיות:
(...) # grouping comparisons AND # conjunction (optional but recommended) OR # disjunction
אפשר להשמיט את האופרטור AND בין אופרטורים, אבל עדיף לכלול אותו כדי שהשאילתה תהיה ברורה יותר ופחות מועדת לשגיאות.
ההשוואה x = one_of("a", "b", "c") שוות ערך לביטוי הבא:
(x = "a" OR x = "b" OR x = "c")
בוררי סינון
אפשר להשתמש בבוררים כדי להגביל את אפשרויות הסינון לפריטים מסוימים.
בקטעים הבאים, סוגריים מסולסלים משמשים לציון חזרה. לדוגמה, הסימון <x> {OR <y>} אומר שאפשר לכתוב כל אחת מהאפשרויות הבאות:
<x> <x> OR <y> <x> OR <y> OR <y> <x> OR <y> OR <y> OR <y> ...
בורר המשאבים
בורר המשאבים מגביל את בחירת המסנן למשאבים – או לפריטים שמשויכים למשאבים – שיש להם סוג משאב או ערכי תוויות ספציפיים:
<resource_selector> ::= <resource_type_expression>
| <resource_label_expression>
| <resource_type_expression> AND <resource_label_expression>
<resource_type_expression> ::= resource.type '=' <string>
| resource.type ':' <string>
| resource.type '=' starts_with '(' <string> ')'
| resource.type '=' ends_with '(' <string> ')'
<r_label_comparison> ::= resource.labels.[KEY] '=' (<string> | <bool>)
| resource.labels.[KEY] ':' <string>
| resource.labels.[KEY] '=' (starts_with | ends_with) '(' <string> ')'
| resource.labels.[KEY] ('=' | '>' | '<' | '>=' | '<=') <number>
<resource_label_expression> ::= <r_label_comparison> {AND <r_label_comparison>}
| <r_label_comparison> {OR <r_label_comparison>}
אם משתמשים ביותר מ-<r_label_comparison> אחד בבורר, צריך להקיף את כולם בסוגריים כדי לשפר את הקריאוּת.
בורר המדדים
בורר מדדים מציין מדדים מסוימים או תיאורי מדדים, על ידי הגבלת סוג המדד ותוויות המדד. כשמשתמשים בבורר המדדים עם השיטה projects.timeSeries.list, צריך לציין בו סוג מדד אחד:
<metric_selector> ::= <metric_name_expression> [AND <metric_label_expression>]
<metric_name_expression> ::= metric.type '=' <string>
| metric.type ':' <string>
| metric.type '=' starts_with '(' <string> ')'
| metric.type '=' ends_with '(' <string> ')'
<metric_label_comparison> ::= metric.labels.[KEY] '=' <string> | <bool>
| metric.labels.[KEY] ':' <string>
| metric.labels.[KEY] '=' starts_with '(' <string> ')'
| metric.labels.[KEY] '=' ends_with '(' <string> ')'
| metric.labels.[KEY] ('=' | '>' | '<' | '>=' | '<=') <number>
<metric_label_expression> ::= <metric_label_comparison> {[AND] <metric_label_comparison>}
| <metric_label_comparison> {OR <metric_label_comparison>}
לדוגמה, אפשר להשתמש במסנן הבא כדי לאחזר סדרת זמן של מכונה ספציפית של מסד נתונים:
metric.type = "cloudsql.googleapis.com/database/state" AND (metric.labels.resource_type = "instance" AND metric.labels.resource_id = "abc-123456")