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
SREmencakup 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
startingNodeyang menentukan node root. - Anda menentukan hubungan dengan
startingNoderoot menggunakanneighbor. Elemenneighbormenentukan node dan tepi yang terhubung. LabelPropertiesPatternmenentukan 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)
- Untuk node:
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, danBase/app/state. MetodeGetSchemamenampilkan properti ini.Misalnya, untuk memfilter resource dengan label
ndi regionus-central1, gunakan ekspresin.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:
propertyMatcherExprmencakup 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/Alerthanya mendukung operator kesetaraan (=). - Tepi
Observability/SENDS_TRAFFICtidak mendukung filter properti.
- Node
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.