本文說明 App Topology 查詢的元件和查詢語法。
查詢元件
App Topology 查詢包含下列元件:
節點:已探索到的 Google Cloud 資源,或在 App Hub 或 Agent Registry 中註冊的資源。節點範例包括
- Compute Engine VM
- Artifact Registry 中的容器映像檔
- 代理
- Cloud Monitoring 快訊
- App Hub 應用程式、服務或工作負載
- 安全漏洞
可查詢的資源取決於您選擇的網域。「
SRE」網域包含所有支援的資源。屬性:節點的屬性,可用於調整查詢。舉例來說,您可以查詢具有特定 CVE ID 的安全漏洞。
邊緣:兩個節點之間的單向關係。
查詢結構
本節將概略介紹查詢結構。詳情請參閱 generate_discovered_resources_topology 工具的參考文件。
查詢會使用 AIP-160 篩選語法。
查詢的主要元素包括:
- 查詢開頭為
startingNode,指定根節點。 - 您可以使用
neighbor定義與根startingNode的關係。neighbor元素會定義相連的節點和邊緣。 LabelPropertiesPattern指定比對運算式。label_matcher_expr- 節點或邊緣標籤的比對運算式。property_matcher_expr- 用於篩選節點或邊緣特定屬性的比對運算式。
- 您可以使用
direction欄位定義單向關係。
以下範例顯示與專案 web-project 中 App Hub 工作負載 foo 相關聯的快訊查詢。此外,也會顯示如何使用 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 比對運算式指定資源類型 (節點)。您可以比對單一或多個節點類型。
label_matcher_expr 可以使用 OR 或 AND 運算子,但您無法在單一比對運算式中混用這兩種運算子。
範例:
- 比對 App Hub 工作負載:
"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方法會傳回這些屬性。舉例來說,如要篩選出位於
us-central1區域且標籤為n的資源,請使用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_TRAFFIC邊緣不支援屬性篩選器。
資料可用性:
- Google Cloud Observability 不支援所有 App Hub 服務和工作負載的遙測功能。如需支援的基礎架構資源清單,請參閱「應用程式監控支援的基礎架構」。
- 查看 App Hub 應用程式的拓撲時,可跨應用程式共用的資源不會顯示在視覺化內容中。
- 刪除 Developer Connect 洞察資料事件後,該事件可能仍會在 App Topology 查詢結果中顯示幾天。
- 如要瞭解 Security Command Center 提供的安全性與法規遵循資料:
- 提供的資料為預先發布版
- 資料僅適用於機構中的專案和應用程式。 Google Cloud