Tentang kueri

Dokumen ini menjelaskan komponen kueri App Topology dan sintaksis kueri.

Komponen kueri

Kueri App Topology terdiri dari beberapa komponen:

  • Node - Resource yang ditemukan Google Cloud atau resource yang terdaftar di Pusat Aplikasi atau Agent Registry. Contoh node mencakup

    • VM Compute Engine
    • Image container di Artifact Registry
    • Agen
    • Pemberitahuan Cloud Monitoring
    • Aplikasi, layanan, atau workload Pusat Aplikasi
    • Kerentanan

    Resource yang dapat Anda kueri bergantung pada domain yang Anda pilih. Domain SRE mencakup semua resource yang didukung.

  • Properti: Properti node yang dapat Anda gunakan untuk mempertajam kueri. Misalnya, Anda dapat membuat kueri untuk kerentanan dengan ID CVE tertentu.

  • Edge: Hubungan terarah antara dua node.

Struktur kueri

Bagian ini memberikan ringkasan struktur kueri. Untuk mengetahui detail selengkapnya, lihat dokumentasi referensi untuk alat generate_discovered_resources_topology.

Kueri menggunakan sintaksis pemfilteran AIP-160.

Elemen utama kueri meliputi hal berikut:

  • Kueri dimulai dengan startingNode yang menentukan node root.
  • Anda menentukan hubungan dengan startingNode root menggunakan neighbor. Elemen neighbor menentukan node dan tepi yang terhubung.
  • LabelPropertiesPattern menentukan ekspresi kecocokan.
    • label_matcher_expr - Ekspresi kecocokan untuk label node atau tepi.
    • property_matcher_expr - Ekspresi kecocokan untuk memfilter properti tertentu dari node atau tepi.
  • Anda menentukan hubungan terarah menggunakan kolom direction.

Contoh berikut menunjukkan kueri untuk pemberitahuan yang terkait dengan workload Pusat Aplikasi foo dalam project web-project. Contoh ini juga menunjukkan penggunaan alias untuk memberi label pada node sehingga lebih mudah dirujuk dalam ekspresi berikutnya.

{
"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"
              }
            }
          }
        }
      ]
    }
  }
},
}

Mencocokkan node

Tentukan jenis resource (node) menggunakan ekspresi pencocokan label_matcher_expr. Anda dapat mencocokkan satu atau beberapa jenis node.

label_matcher_expr dapat menggunakan operator OR atau AND, tetapi Anda tidak dapat menggabungkan kedua jenis operator dalam satu ekspresi pencocokan.

Contoh:

  • Mencocokkan beban kerja Pusat Aplikasi: "Base/apphub.googleapis.com/Workload"
  • Mencocokkan workload atau layanan yang ditemukan: "Base/DiscoveredWorkload OR Base/DiscoveredService"

Mencocokkan properti

Memfilter atribut node menggunakan ekspresi kecocokan property_matcher_expr.

Ada dua jenis properti:

  • Properti sistem bawaan - Properti yang berlaku untuk semua node dan tepi:
    • Untuk node: NodeName (untuk node)
    • Untuk tepi: EdgeName (untuk tepi)
  • Label - Daftar label pada node atau tepi yang dapat digunakan dengan ekspresi filter properti. Contoh:

    (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")
    
  • Properti skema domain - Properti khusus untuk jenis resource, seperti Base/location, Observability/errorRate, dan Base/app/state. Metode GetSchema menampilkan properti ini.

    Misalnya, untuk memfilter resource dengan label n di region us-central1, gunakan ekspresi n.Base/location = "us-central1".

Untuk mengetahui daftar operator yang didukung dalam ekspresi kecocokan properti, lihat LabelPropertiesPattern.

Arah tepi

Untuk tepi, edge.direction menentukan arah, dan defaultnya adalah DIRECTION_UNSPECIFIED. Anda dapat menetapkan salah satu nilai berikut untuk menunjukkan hubungan antara node sumber dan node tujuan.

  • TO - Dari sumber ke tujuan.
  • FROM - Dari tujuan ke sumber.
  • ANY - Hubungan antar-node bersifat dua arah.

Jika arah diketahui, gunakan TO atau FROM. Kueri dua arah "ANY" memperluas kombinasi status traversal dan meningkatkan latensi API.

Batasan

Ukuran kueri dan topologi:

  • Respons kueri mungkin memerlukan waktu lebih lama untuk menampilkan hasil jika lebih rumit. Hal ini mencakup kondisi berikut:
    • propertyMatcherExpr mencakup lebih dari 4 perbandingan.
    • Traversal topologi mencakup lebih dari lima lompatan dalam eksekusi kueri.
  • Penomoran halaman tidak didukung untuk data topologi yang ditampilkan.
  • API menampilkan maksimum 1.000 jalur unik.
  • Untuk data kemampuan observasi:
    • Node Observability/Alert hanya mendukung operator kesetaraan (=).
    • Tepi Observability/SENDS_TRAFFIC tidak mendukung filter properti.

Ketersediaan data:

  • Google Cloud Observability tidak mendukung telemetri untuk semua layanan dan beban kerja Pusat Aplikasi. Untuk mengetahui daftar resource infrastruktur yang didukung, lihat Infrastruktur yang didukung Pemantauan Aplikasi.
  • Saat melihat topologi untuk aplikasi App Hub, resource yang dapat dibagikan di seluruh aplikasi tidak disertakan dalam visualisasi.
  • Saat Anda menghapus peristiwa insight Developer Connect, peristiwa tersebut mungkin masih muncul di hasil kueri App Topology selama beberapa hari.
  • Untuk data keamanan dan kepatuhan yang disediakan oleh Security Command Center:
    • Data yang diberikan berada di Pratinjau
    • Data hanya tersedia untuk project dan aplikasi di organisasi Google Cloud.