במסמך הזה מתוארים הרכיבים של שאילתת App Topology והתחביר של השאילתה.
רכיבי שאילתה
שאילתות של App Topology מורכבות מכמה רכיבים:
צמתים – משאבים שזוהו Google Cloud או משאבים שנרשמו ב-מרכז האפליקציות או ב-Agent Registry. דוגמאות לצמתים:
- מכונה וירטואלית ב-Compute Engine
- קובץ אימג' של קונטיינר ב-Artifact Registry
- נציג
- התראה ב-Cloud Monitoring
- אפליקציה, שירות או עומס עבודה במרכז האפליקציות
- נקודת חולשה
המשאבים שאפשר לשלוח להם שאילתות תלויים בדומיין שתבחרו. הדומיין
SREכולל את כל המשאבים הנתמכים.מאפיינים: מאפיינים של צומת שאפשר להשתמש בהם כדי לדייק שאילתה. לדוגמה, אפשר לשלוח שאילתה לגבי פגיעות עם מזהה CVE ספציפי.
קצה: קשר מכוון בין שני צמתים.
מבנה השאילתה
בקטע הזה מופיעה סקירה כללית של מבנה השאילתה. פרטים נוספים זמינים במאמרי העזרה של הכלי generate_discovered_resources_topology.
השאילתות משתמשות בתחביר הסינון AIP-160.
האלמנטים העיקריים בשאילתה כוללים את הפרטים הבאים:
- שאילתות מתחילות ב-
startingNodeשמציין צומת שורש. - אתם מגדירים קשרים עם שורש
startingNodeבאמצעותneighbor. הרכיבneighborמגדיר צמתים וקצוות מחוברים. -
LabelPropertiesPatternמציין ביטויי התאמה.-
label_matcher_expr– ביטוי התאמה לתוויות של צמתים או קשתות. -
property_matcher_expr– ביטוי התאמה לסינון מאפיינים ספציפיים של צומת או קשת.
-
- אתם מגדירים קשר עם כיוון באמצעות השדה
direction.
בדוגמה הבאה מוצגת שאילתה להתראות שמשויכות לעומס העבודה של מרכז האפליקציות foo בפרויקט web-project. הוא גם מראה את השימוש ב-alias כדי לתייג צמתים, וכך קל יותר להתייחס אליהם בביטויים הבאים.
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "generate_discovered_resource_topology",
"arguments": {
"name": "projects/web-project/locations/global/discoveredResourcesTopology",
"topologyDomains": ["projects/web-project/locations/global/domains/SRE"],
"filter": {
"startingNode": {
"alias": "source",
"labelPropertiesPattern": {
"labelMatcherExpr": "Base/apphub.googleapis.com/Workload",
"propertyMatcherExpr": "source.Base/app/workloadReferenceUri = 'foo'"
}
},
"neighbors": [
{
"edge": {
"labelPropertiesPattern": {
"labelMatcherExpr": "Observability/HAS_ALERT"
},
"direction": "TO"
},
"graph": {
"startingNode": {
"alias": "alert",
"labelPropertiesPattern": {
"labelMatcherExpr": "Observability/Alert"
}
}
}
}
]
}
}
},
}
צמתים תואמים
מציינים את סוגי המשאבים (צמתים) באמצעות ביטוי ההתאמה label_matcher_expr.
אפשר להתאים סוג צומת אחד או כמה סוגים.
אפשר להשתמש באופרטורים OR או AND בlabel_matcher_expr, אבל אי אפשר לשלב בין שני סוגי האופרטורים בביטוי התאמה אחד.
דוגמאות:
- התאמה לעומסי עבודה של מרכז האפליקציות:
"Base/apphub.googleapis.com/Workload" - התאמה של עומסי עבודה או שירותים:
"Base/DiscoveredWorkload OR Base/DiscoveredService"
מאפייני התאמה
מסננים מאפיינים של צומת באמצעות ביטוי ההתאמה property_matcher_expr.
יש שני סוגים של נכסים:
- מאפייני מערכת מובנים – מאפיינים שחלים על כל הצמתים והקשתות:
- לצמתים:
NodeName(לצמתים) - לשוליים:
EdgeName(לשוליים)
- לצמתים:
תוויות – רשימת התוויות בצומת או בקצה שאפשר להשתמש בהן עם ביטויי סינון של מאפיינים. לדוגמה:
(CONTAINS_ANY(alias.Labels, "Base/MCPServer") AND alias.Base/agentregistry/urn = "foo") OR (CONTAINS_ANY(alias.Labels, "Base/Agent") AND alias.Base/agent/framework = "bar")מאפייני סכימה של דומיין – מאפיינים שספציפיים לסוג משאב, כמו
Base/location,Observability/errorRateו-Base/app/state. השיטהGetSchemaמחזירה את המאפיינים האלה.לדוגמה, כדי לסנן משאב עם התווית
nבאזורus-central1, משתמשים בביטויn.Base/location = "us-central1".
רשימת האופרטורים הנתמכים בביטויי התאמה של מאפיינים מופיעה במאמר בנושא LabelPropertiesPattern.
הוראות ניווט בקצה
במקרה של קצוות, edge.direction מציין את הכיוון, וערך ברירת המחדל הוא DIRECTION_UNSPECIFIED. אפשר להגדיר אחד מהערכים הבאים כדי לציין את הקשר בין צומת המקור לצומת היעד.
-
TO– מהמקור ליעד. -
FROM– מהיעד אל המקור. -
ANY– הקשר בין הצמתים הוא דו-כיווני.
אם הכיוון ידוע, משתמשים ב-TO או ב-FROM. שאילתות דו-כיווניות
"ANY" מרחיבות את מצב המעבר באופן קומבינטורי ומגדילות את זמן האחזור של ה-API.
מגבלות
גודל השאילתה והטופולוגיה:
- יכול להיות שייקח יותר זמן לקבל תוצאות לשאילתות מורכבות יותר.
התנאים האלה כוללים:
propertyMatcherExprכולל יותר מ-4 השוואות.- המעבר בטופולוגיה כולל יותר מחמש קפיצות בהרצת השאילתה.
- חלוקה לדפים לא אפשרית עבור נתוני טופולוגיה שמוחזרים.
- ה-API מחזיר עד 1,000 נתיבים ייחודיים.
- לנתוני יכולת התבוננות:
- צמתים מסוג
Observability/Alertתומכים רק באופרטור השוויון (=). - ב-
Observability/SENDS_TRAFFICedges אין תמיכה במסנני נכסים.
- צמתים מסוג
זמינות הנתונים:
- Google Cloud Observability לא תומך בטלמטריה לכל השירותים ועומסי העבודה של מרכז האפליקציות. רשימה של משאבי התשתית הנתמכים זמינה במאמר תשתית נתמכת של ניטור אפליקציות.
- כשמציגים טופולוגיה של אפליקציה ב-מרכז האפליקציות, המשאבים שאפשר לשתף בין אפליקציות לא נכללים בהדמיה.
- כשמוחקים אירוע של תובנות מ-Developer Connect, יכול להיות שהאירוע עדיין יופיע בתוצאות של שאילתות לגבי App Topology למשך כמה ימים.
- לגבי נתוני אבטחה ותאימות שסופקו על ידי Security Command Center:
- הנתונים שסיפקת נמצאים במצב תצוגה מקדימה
- הנתונים זמינים רק לפרויקטים ולאפליקציות בארגון Google Cloud.