Sie können programmatisch Abfragen ausführen, um Daten in Google Cloud mithilfe der REST API oder der Google Cloud CLI zu korrelieren.
Übersicht
Wenn Sie eine App Topology API-Abfrage ausführen, gibt die API eine Liste von Knoten (Ressourcen) und Kanten (Beziehungen) zurück, die Ihrer Abfrage entsprechen. Bei der Anwendungstopologie werden Daten aus verschiedenen Google Cloud Diensten kombiniert, z. B.:
- Ressourcenmetadaten aus Cloud Asset Inventory, App Hub und Agent Registry
- Bereitstellungsdaten, z. B. ein Git-Commit oder die Build-Herkunft eines Container-Images
- Sicherheitsdaten aus Security Command Center, z. B. Sicherheitslücken oder Inhaberschaft der Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM)
- Google Cloud Observability-Daten wie Traces und Benachrichtigungen
Zum Ausführen einer Abfrage benötigen Sie die folgenden Informationen:
- Die Domain, die Sie abfragen möchten. Die Domain
SREumfasst alle unterstützten Daten. Informationen zum Auflisten verfügbarer Domains finden Sie unter Domains auflisten. - Die unterstützten Knoten, Kanten und Attribute, die Sie in eine Abfrage einfügen können. Sie können das vollständige oder teilweise Schema für eine Domain abrufen. Weitere Informationen finden Sie unter Schema abrufen.
- Das Abfragemuster mit den Knoten und Kanten, nach denen Sie suchen möchten. Weitere Informationen finden Sie unter Abfragen ausführen.
Hinweis
Wählen Sie den Tab für die geplante Verwendung der Beispiele auf dieser Seite aus:
gcloud
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
REST
Wenn Sie die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, verwenden Sie die Anmeldedaten, die Sie der gcloud CLI bereitstellen.
Installieren Sie die Google Cloud CLI.
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
Weitere Informationen finden Sie in der Dokumentation zur Google Cloud -Authentifizierung unter Für die Verwendung von REST authentifizieren.
Informationen zum Einrichten der Authentifizierung für eine Produktionsumgebung finden Sie in der Dokumentation zur Google Cloud -Authentifizierung unter Standardanmeldedaten für Anwendungen für Code einrichten, der auf Google Cloudausgeführt wird .
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zur Verwendung der App Topology API benötigen:
-
Abfragen ausführen:
App Topology Viewer (
roles/apptopology.viewer) für die Projekte, in denen Sie die Anwendungstopologie verwenden möchten
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierten Rollen enthalten die Berechtigungen, die für die Verwendung der App Topology API erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die notwendigen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um die App Topology API zu verwenden:
-
Domains abrufen:
-
apptopology.domains.get -
apptopology.domains.list
-
-
Schemas abrufen:
apptopology.schemas.get -
Daten der erkannten Ressource abrufen:
apptopology.discoveredResourcesTopologies.generate -
DevOps-Domänendaten abrufen:
apptopology.devOpsDomainTopologies.generate -
Daten zur Sicherheitsdomain abrufen:
apptopology.securityDomainTopologies.generate -
SRE-Domänendaten abrufen (alle unterstützten Daten):
apptopology.sreDomainTopologies.generate
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Domains auflisten
Domains sind Gruppen von Ressourcendaten, die sich auf bestimmte Arten von Anfragen konzentrieren.
- Wenn Sie alle von der Anwendungstopologie unterstützten Daten abfragen möchten, verwenden Sie die Domain
SRE. - Wenn Sie Daten zu agentischen Ressourcen abrufen möchten, müssen Sie die Domain
SREverwenden. - In allen Beispielen für Anforderungsantworten in diesem Dokument wird die Domain
SREverwendet.
Bei Bedarf können Sie Domains auflisten, die in einem Projekt verfügbar sind.
gcloud
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
- PROJECT_ID: Ihre Projekt-ID
Führen Sie den Befehl gcloud app-topology domains list aus:
Linux, macOS oder Cloud Shell
gcloud app-topology domains list --project=PROJECT_ID
Windows (PowerShell)
gcloud app-topology domains list --project=PROJECT_ID
Windows (cmd.exe)
gcloud app-topology domains list --project=PROJECT_ID
Sie sollten eine Antwort ähnlich der folgenden erhalten:
NAME DEVOPS SECURITY SRE
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Projekt-ID
HTTP-Methode und URL:
GET https://apptopology.googleapis.com/v1/projects/PROJECT_ID/locations/global/domains
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{
"domains": [
{
"name": "projects/PROJECT_ID/locations/global/domains/DEVOPS"
},
{
"name": "projects/PROJECT_ID/locations/global/domains/SECURITY"
},
{
"name": "projects/PROJECT_ID/locations/global/domains/SRE"
}
]
}
Schema abrufen
Um Ihnen das Erstellen von Abfragen zu erleichtern, können Sie eine Liste aller unterstützten Knoten, Kanten und Eigenschaften für eine Domain abrufen. Mit der REST API können Sie auch einen Teil des Schemas abrufen.
Anfragen für das vollständige Schema können aufgrund der großen Anzahl von Elementen im Schema deutlich länger dauern als Anfragen für ein Teilschema.
Vollständiges Schema abrufen
gcloud
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
- PROJECT_ID: Ihre Projekt-ID
- DOMAIN: Die Domain, die Sie abfragen möchten. Die
SRE-Domain umfasst alle unterstützten Daten.
Führen Sie den Befehl gcloud app-topology domains schema describe aus:
Linux, macOS oder Cloud Shell
gcloud app-topology domains schema describe DOMAIN --project=PROJECT_ID
Windows (PowerShell)
gcloud app-topology domains schema describe DOMAIN --project=PROJECT_ID
Windows (cmd.exe)
gcloud app-topology domains schema describe DOMAIN --project=PROJECT_ID
Das folgende Beispiel aus einer Antwort enthält nur das erste Element im Schema für Knotentypen, Kantentypen, Kantenregeln und Label-Eigenschaften.
{
"nodeTypes": [
{
"type": "Base/compute.googleapis.com/UrlMap",
"labels": [
"Base/Resource",
"Base/compute.googleapis.com/UrlMap"
],
"description": "Represents a Compute UrlMap."
}
],
"edgeTypes": [
{
"type": "Observability/SENDS_TRAFFIC/Base/geminidataanalytics.googleapis.com/DataAgent:Base/apps.k8s.io/DaemonSet",
"labels": [
"Observability/SENDS_TRAFFIC"
]
}
],
"labelProperties": [
{
"label": "Base/compute.googleapis.com/InstanceSettings",
"description": "Classifies a node as a Compute Instance Settings."
}
],
"edgeRules": [
{
"edgeType": "Observability/SENDS_TRAFFIC/Base/geminidataanalytics.googleapis.com/DataAgent:Base/apps.k8s.io/DaemonSet",
"srcNodeType": "Base/geminidataanalytics.googleapis.com/DataAgent",
"destNodeType": "Base/apps.k8s.io/DaemonSet"
}
]
}
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Projekt-ID
- DOMAIN: Die Domain, die Sie abfragen möchten. Die
SRE-Domain umfasst alle unterstützten Daten.
HTTP-Methode und URL:
GET https://apptopology.googleapis.com/v1/projects/PROJECT_ID/locations/global/domains/DOMAIN/schema
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Das folgende Beispiel aus einer Antwort enthält nur das erste Element im Schema für Knotentypen, Kantentypen, Kantenregeln und Label-Eigenschaften.
{
"nodeTypes": [
{
"type": "Base/compute.googleapis.com/UrlMap",
"labels": [
"Base/Resource",
"Base/compute.googleapis.com/UrlMap"
],
"description": "Represents a Compute UrlMap."
}
],
"edgeTypes": [
{
"type": "Observability/SENDS_TRAFFIC/Base/geminidataanalytics.googleapis.com/DataAgent:Base/apps.k8s.io/DaemonSet",
"labels": [
"Observability/SENDS_TRAFFIC"
]
}
],
"labelProperties": [
{
"label": "Base/compute.googleapis.com/InstanceSettings",
"description": "Classifies a node as a Compute Instance Settings."
}
],
"edgeRules": [
{
"edgeType": "Observability/SENDS_TRAFFIC/Base/geminidataanalytics.googleapis.com/DataAgent:Base/apps.k8s.io/DaemonSet",
"srcNodeType": "Base/geminidataanalytics.googleapis.com/DataAgent",
"destNodeType": "Base/apps.k8s.io/DaemonSet"
}
]
}
Teilschema abrufen
Sie können einen Teil eines Domainschemas innerhalb einer bestimmten Anzahl von Schritten eines angegebenen Startlabels abrufen.
Mit dem Beispielbefehl in dieser Anleitung wird ein Teil des Schemas ab dem Knoten Base/Agent mit einer Tiefe von 1 und einer Seitengröße von 5 abgerufen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Projekt-ID
- DOMAIN: Die Domain, die Sie abfragen möchten. Die
SRE-Domain umfasst alle unterstützten Daten.
HTTP-Methode und URL:
POST https://apptopology.googleapis.com/v1/projects/PROJECT_ID/locations/global/domains/DOMAIN/schema:explore
JSON-Text anfordern:
{
"startLabels": [
"Base/Agent"
],
"depth": 1,
"pageSize": 5
}Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
In einer Antwort ist die Reihenfolge von nodeTypes und edgeTypes konsistent, die Reihenfolge von labelProperties kann jedoch von Anfrage zu Anfrage variieren.
Maximieren Sie die Überschrift Antwort, um eine Beispielantwort zu sehen.
Abfragen ausführen
Wenn Sie eine Abfrage ausführen, geben Sie ein Abfragemuster an, das die Knoten, Kanten und Eigenschaften enthält, nach denen Sie suchen möchten.
Abfragemuster basieren auf der AIP-160-Filtersyntax. Eine Übersicht über Abfragemuster und ‑beschränkungen finden Sie unter Abfragen. Bei dieser Anleitung wird davon ausgegangen, dass Sie die Informationen zur Abfragestruktur und zu Einschränkungen gelesen haben.
In der folgenden Anleitung wird eine Beispielabfrage für alle App Hub-Dienste und ‑Arbeitslasten im angegebenen Projekt verwendet, einschließlich der registrierten (Base/apphub.googleapis.com/Service, Base/apphub.googleapis.com/Workload) und der erkannten (Base/DiscoveredService, Base/DiscoveredWorkload).
Mit den Befehlen wird das Abfragemuster in einer JSON-Datei angegeben. Die Datei unterscheidet sich in dieser Anleitung geringfügig für gcloud CLI- und REST-Anfragen.
- Geben Sie für die gcloud CLI die abzufragende Domain als Parameter des Befehls an. Die Domain ist nicht in der Datei mit Abfragemustern enthalten.
- Geben Sie für REST-Anfragen sowohl die Domain als auch das Abfragemuster im JSON-Text der Anfrage an. Legen Sie die Domain im Feld
topologyDomainsfest und geben Sie das Abfragemuster unter demfilter-Objekt an.
gcloud
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
- PROJECT_ID: Ihre Projekt-ID
- DOMAIN: Die Domain, die Sie abfragen möchten. Die
SRE-Domain umfasst alle unterstützten Daten.
Speichern Sie den folgenden Inhalt in einer Datei mit dem Namen request.json:
{ "startingNode": { "alias": "sw", "labelPropertiesPattern": { "labelMatcherExpr": "Base/apphub.googleapis.com/Service OR Base/apphub.googleapis.com/Workload OR Base/DiscoveredService OR Base/DiscoveredWorkload" } } }
Führen Sie den Befehl gcloud app-topology resources-graph generate aus:
Linux, macOS oder Cloud Shell
gcloud app-topology resources-graph generate --domains=DOMAIN --project=PROJECT_ID --pattern-file=request.json --format=json
Windows (PowerShell)
gcloud app-topology resources-graph generate --domains=DOMAIN --project=PROJECT_ID --pattern-file=request.json --format=json
Windows (cmd.exe)
gcloud app-topology resources-graph generate --domains=DOMAIN --project=PROJECT_ID --pattern-file=request.json --format=json
Der folgende Auszug aus einer Beispielantwort zeigt die ersten beiden Knoten. Diese Knoten sind MCP-Server. Google-MCP-Server haben das Label Base/DiscoveredService, das eines der Labels im Abfragemuster ist.
In der Ausgabe stehen die folgenden Variablen für Werte, die dem Projekt zugeordnet sind, das Sie mit PROJECT_ID angegeben haben:
PROJECT_NUMBER: Die Projektnummer für das angegebene Projekt.ORGANIZATION_NUMBER: Die Organisationsnummer für die Google Cloud Organisation, die das angegebene Projekt enthält.
{
"graph": {
"nodes": [
{
"properties": {
"project": "projects/PROJECT_NUMBER",
"Base/location": "global",
"createTime": "2026-08-13T15:14:53.477680Z",
"Base/agentregistry/urn": "urn:mcp:googleapis.com:projects:PROJECT_NUMBER:locations:global:storage",
"Base/resourceType": "agentregistry.googleapis.com/GoogleMcpServer",
"organization": "organizations/ORGANIZATION_NUMBER"
},
"name": "urn:mcp:googleapis.com:projects:PROJECT_NUMBER:locations:global:storage",
"labels": [
"Base/MCPServer",
"Base/DiscoveredService",
"Base/Resource",
"Base/agentregistry.googleapis.com/GoogleMcpServer"
],
"context": {
"type": "Base/agentregistry.googleapis.com/GoogleMcpServer"
}
},
{
"properties": {
"createTime": "2026-08-13T16:22:24.732600Z",
"Base/resourceType": "agentregistry.googleapis.com/GoogleMcpServer",
"Base/agentregistry/urn": "urn:mcp:googleapis.com:projects:PROJECT_NUMBER:locations:global:pubsub",
"Base/location": "global",
"organization": "organizations/ORGANIZATION_NUMBER",
"project": "projects/PROJECT_NUMBER"
},
"name": "urn:mcp:googleapis.com:projects:PROJECT_NUMBER:locations:global:pubsub",
"labels": [
"Base/agentregistry.googleapis.com/GoogleMcpServer",
"Base/Resource",
"Base/DiscoveredService",
"Base/MCPServer"
],
"context": {
"type": "Base/agentregistry.googleapis.com/GoogleMcpServer"
}
}
]
}
}
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Projekt-ID
- DOMAIN: Die Domain, die Sie abfragen möchten. Die
SRE-Domain umfasst alle unterstützten Daten.
HTTP-Methode und URL:
POST https://apptopology.googleapis.com/v1/projects/PROJECT_ID/locations/global/discoveredResourcesTopology:generate
JSON-Text anfordern:
{
"topologyDomains": [
"projects/PROJECT_ID/locations/global/domains/DOMAIN"
],
"filter": {
"startingNode": {
"alias": "sw",
"labelPropertiesPattern": {
"labelMatcherExpr": "Base/apphub.googleapis.com/Service OR Base/apphub.googleapis.com/Workload OR Base/DiscoveredService OR Base/DiscoveredWorkload"
}
}
}
}
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Der folgende Auszug aus einer Beispielantwort zeigt die ersten beiden Knoten. Diese Knoten sind MCP-Server. Google-MCP-Server haben das Label Base/DiscoveredService, das eines der Labels im Abfragemuster ist.
In der Ausgabe stehen die folgenden Variablen für Werte, die dem Projekt zugeordnet sind, das Sie mit PROJECT_ID angegeben haben:
PROJECT_NUMBER: Die Projektnummer für das angegebene Projekt.ORGANIZATION_NUMBER: Die Organisationsnummer für die Google Cloud Organisation, die das angegebene Projekt enthält.
{
"graph": {
"nodes": [
{
"properties": {
"project": "projects/PROJECT_NUMBER",
"Base/location": "global",
"createTime": "2026-08-13T15:14:53.477680Z",
"Base/agentregistry/urn": "urn:mcp:googleapis.com:projects:PROJECT_NUMBER:locations:global:storage",
"Base/resourceType": "agentregistry.googleapis.com/GoogleMcpServer",
"organization": "organizations/ORGANIZATION_NUMBER"
},
"name": "urn:mcp:googleapis.com:projects:PROJECT_NUMBER:locations:global:storage",
"labels": [
"Base/MCPServer",
"Base/DiscoveredService",
"Base/Resource",
"Base/agentregistry.googleapis.com/GoogleMcpServer"
],
"context": {
"type": "Base/agentregistry.googleapis.com/GoogleMcpServer"
}
},
{
"properties": {
"createTime": "2026-08-13T16:22:24.732600Z",
"Base/resourceType": "agentregistry.googleapis.com/GoogleMcpServer",
"Base/agentregistry/urn": "urn:mcp:googleapis.com:projects:PROJECT_NUMBER:locations:global:pubsub",
"Base/location": "global",
"organization": "organizations/ORGANIZATION_NUMBER",
"project": "projects/PROJECT_NUMBER"
},
"name": "urn:mcp:googleapis.com:projects:PROJECT_NUMBER:locations:global:pubsub",
"labels": [
"Base/agentregistry.googleapis.com/GoogleMcpServer",
"Base/Resource",
"Base/DiscoveredService",
"Base/MCPServer"
],
"context": {
"type": "Base/agentregistry.googleapis.com/GoogleMcpServer"
}
}
]
}
}
Weitere Beispiele für Abfragemuster finden Sie unter Beispiele für Abfragemuster.
Beispielmuster für Abfragen
Die folgenden Beispiele für Abfragemuster können Ihnen dabei helfen, eigene Abfragemuster zum Ausführen von Abfragen zu erstellen. In allen Beispielen in diesem Abschnitt wird das JSON-Format verwendet.
VMs mit Instanzgruppen, Netzwerken und Laufwerken
Abfrage für Compute Engine-Instanzen in einer Instanzgruppe mit Netzwerk und Laufwerk.
Das Muster beginnt bei Base/compute.googleapis.com/Instance und hat drei primäre edge-Zweige unter dem übergeordneten neighbors-Objekt, die diese Kriterien definieren:
- Instanzen, die zu einer verwalteten Instanzgruppe gehören
- Instanzen mit einem verbundenen Netzwerk
- Instanzen mit Persistent Disk
Da Zweige mit AND kombiniert werden, enthält die Antwort nur Instanzen, die zu einer verwalteten Instanzgruppe gehören und sowohl ein Netzwerk als auch ein Laufwerk haben.
{
"startingNode": {
"alias": "instance",
"labelPropertiesPattern": {
"labelMatcherExpr": "Base/compute.googleapis.com/Instance"
}
},
"neighbors": [
{
"edge": {
"direction": "FROM",
"labelPropertiesPattern": {
"labelMatcherExpr": "CONTAINS"
}
},
"graph": {
"startingNode": {
"alias": "instance_group",
"labelPropertiesPattern": {
"labelMatcherExpr": "Base/compute.googleapis.com/InstanceGroup"
}
},
"neighbors": [
{
"edge": {
"direction": "FROM",
"labelPropertiesPattern": {
"labelMatcherExpr": "DEPENDS_ON"
}
},
"graph": {
"startingNode": {
"alias": "instance_group_manager",
"labelPropertiesPattern": {
"labelMatcherExpr": "Base/compute.googleapis.com/InstanceGroupManager"
}
}
}
}
]
}
},
{
"edge": {
"direction": "TO",
"labelPropertiesPattern": {
"labelMatcherExpr": "DEPENDS_ON"
}
},
"graph": {
"startingNode": {
"alias": "network",
"labelPropertiesPattern": {
"labelMatcherExpr": "Base/compute.googleapis.com/Network"
}
}
}
},
{
"edge": {
"direction": "TO",
"labelPropertiesPattern": {
"labelMatcherExpr": "DEPENDS_ON"
}
},
"graph": {
"startingNode": {
"alias": "disk",
"labelPropertiesPattern": {
"labelMatcherExpr": "Base/compute.googleapis.com/Disk"
}
}
}
}
]
}
Agentische Ressourcen
Agentenressourcen und ihre Beziehungen mit Informationen aus der Agent Registry abfragen, einschließlich Daten für Agenten, MCP-Server, Endpunkte und Skills.
{
"startingNode": {
"alias": "resource",
"labelPropertiesPattern": {
"labelMatcherExpr": "Base/Agent OR Base/MCPServer OR Base/agentregistry.googleapis.com/Skill OR Base/agentregistry.googleapis.com/SkillRevision OR Base/agentregistry.googleapis.com/AiApplication OR Base/agentregistry.googleapis.com/GoogleMcpServer OR Base/agentregistry.googleapis.com/McpEnablement OR Base/agentregistry.googleapis.com/Publisher OR Base/agentregistry.googleapis.com/Binding OR Base/agentregistry.googleapis.com/Service OR Base/aiplatform.googleapis.com/Endpoint"
}
}
}
Die Anwendungstopologie unterstützt zwei Arten von Endpunkten:
Base/aiplatform.googleapis.com/Endpointist ein Modellendpunkt der Gemini Enterprise Agent Platform.Base/Endpointist die Ziel-URL für einen Agenten und ein Label für einen Agent Registry-Dienst (Base/agentregistry.googleapis.com/Service). DaBase/agentregistry.googleapis.com/Serviceim Abfragemuster enthalten ist, sind Agentenendpunkte in den Ergebnissen der Abfrageantwort enthalten.
KI-Agenten-Traffic
Mit Daten aus Cloud Trace können Sie Traffic zwischen Agenten und anderen Agenten oder MCP-Servern abfragen. Jeder Edge enthält Daten zur Fehlerrate und zur P95-Latenz.
{
"startingNode": {
"alias": "agent",
"labelPropertiesPattern": {
"labelMatcherExpr": "Base/Agent"
}
},
"neighbors": [
{
"edge": {
"direction": "ANY",
"labelPropertiesPattern": {
"labelMatcherExpr": "Observability/SENDS_TRAFFIC"
}
},
"graph": {
"startingNode": {
"alias": "peer",
"labelPropertiesPattern": {
"labelMatcherExpr": "Base/Agent OR Base/MCPServer"
}
}
}
}
]
}
Nächste Schritte
- Informationen zur Verwendung des Remote-MCP-Servers
- Informationen zum Ausführen von Abfragen in Cloud Hub
- Informationen zum Ausführen von Anfragen in der Gemini Enterprise Agent Platform