關於查詢

本文說明 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