במדריך הזה מוסבר איך להגדיר מסננים כשמשתמשים ב-Monitoring 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 selector |
metric selector |
|---|---|---|
| רשימת פעולות על ציר הזמן | כן | yes * |
| רשימת תיאורי מדדים | כן | |
| רשימת תיאורי משאבים במעקב | כן |
בקטעים הבאים מוצגות דוגמאות לשימושים אופייניים במסנני מעקב. במאמר תחביר של מסננים מוסבר באופן מלא על אובייקטים ואופרטורים של מסננים שזמינים לשימוש.
אחזור נתונים של פעולות על ציר הזמן
Method:
projects.timeSeries.list
Filter objects:
project, resource.type, resource.labels.[KEY], metric.type,
metric.labels.[KEY]
סדרת זמן היא רשימה של נקודות נתונים עם חותמת זמן מסוג מדד ממשאב במעקב ספציפי. פרטים נוספים מופיעים במאמר בנושא מודל המדדים. סוג המדד מצוין על ידי מתאר מדד, והמשאב במעקב מצוין על ידי מתאר משאב במעקב.
המסנן שצוין לשיטה 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
Filter objects: 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 provide 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")