쿼리 정보

이 문서에서는 앱 토폴로지 쿼리의 구성요소와 쿼리 구문을 설명합니다.

쿼리 구성요소

앱 토폴로지 쿼리는 여러 구성요소로 구성됩니다.

  • 노드 - 검색된 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개 이상의 비교가 포함됩니다.
    • 토폴로지 순회에 쿼리 실행 시 5개 이상의 홉이 포함됩니다.
  • 반환된 토폴로지 데이터에는 페이지로 나누기가 지원되지 않습니다.
  • API는 최대 1,000개의 고유 경로를 반환합니다.
  • 관측 가능성 데이터의 경우 다음을 충족해야 합니다.
    • Observability/Alert 노드는 같음 (=) 연산자만 지원합니다.
    • Observability/SENDS_TRAFFIC 가장자리는 속성 필터를 지원하지 않습니다.

데이터 가용성:

  • Google Cloud Observability는 일부 App Hub 서비스 및 워크로드의 원격 분석을 지원하지 않습니다. 지원되는 인프라 리소스 목록은 애플리케이션 모니터링 지원 인프라를 참고하세요.
  • App Hub 애플리케이션의 토폴로지를 볼 때 애플리케이션 간에 공유할 수 있는 리소스는 시각화에 포함되지 않습니다.
  • Developer Connect 통계 이벤트를 삭제해도 며칠 동안은 앱 토폴로지 쿼리 결과에 이벤트가 표시될 수 있습니다.
  • Security Command Center에서 제공하는 보안 및 규정 준수 데이터의 경우 다음을 충족해야 합니다.
    • 제공된 데이터는 미리보기 버전입니다.
    • 데이터는 조직의 프로젝트 및 애플리케이션에서만 사용할 수 있습니다. Google Cloud