AWS Cloud-Infrastruktur
Überwachen und analysieren Sie AWS-Ressourcen mit Dynatrace Smartscape und DQL. Fragen Sie AWS-Dienste ab, optimieren Sie Kosten, verwalten Sie die Sicherheit und planen Sie die Kapazität Ihrer AWS-Infrastruktur.
Wann diese Fertigkeit verwendet werden sollte
Verwenden Sie diese Fertigkeit, wenn der Benutzer mit AWS-Ressourcen in Dynatrace arbeiten muss. Laden Sie die Referenzdatei für den entsprechenden Aufgabentyp:
- Bestand: "Zeige mir alle EC2-Instanzen in us-east-1"
- Netzwerk: "Finde alle Ressourcen in VPC vpc-abc123"
- Datenbank: "Liste alle RDS-Instanzen mit Multi-AZ auf"
- Serverlos: "Zeige Lambda-Funktionen mit VPC-Zugriff"
- Kosten: "Finde nicht zugeordnete EBS-Volumes zur Kosteneinsparung"
- Sicherheit: "Identifiziere öffentlich zugängliche Datenbanken"
- Compliance: "Finde Ressourcen ohne Environment-Tags"
- Kapazität: "Analysiere die Subnet-IP-Auslastung"
- Fehlerbehebung: "Ordne Load Balancer Instanzen über Target Groups zu"
- Problemanalyse: "Was hat sich geändert, bevor dieses AWS-Problem aufgetreten ist?" / "Welche Ereignisse haben diese Ressource beeinflusst?"
- Workload-Kontext: "Befindet sich diese Instanz hinter einem Load Balancer, in einem EKS-Cluster oder wird sie von ECS verwaltet?"
- Ereignisse: "Gab es in letzter Zeit AWS-Ereignisse, die diese Ressource betreffen?"
Kernkonzepte
Entitätstypen
AWS-Ressourcen verwenden das Präfix AWS_* und können mit der Funktion smartscapeNodes abgefragt werden. Alle AWS-Entitäten werden automatisch erkannt und im Dynatrace Smartscape modelliert.
Compute: AWS_EC2_INSTANCE, AWS_LAMBDA_FUNCTION, AWS_ECS_CLUSTER, AWS_ECS_SERVICE, AWS_EKS_CLUSTER
Netzwerk: AWS_EC2_VPC, AWS_EC2_SUBNET, AWS_EC2_SECURITYGROUP, AWS_EC2_NATGATEWAY, AWS_EC2_VPCENDPOINT
Datenbank: AWS_RDS_DBINSTANCE, AWS_RDS_DBCLUSTER, AWS_DYNAMODB_TABLE, AWS_ELASTICACHE_CACHECLUSTER
Speicher: AWS_S3_BUCKET, AWS_EC2_VOLUME, AWS_EFS_FILESYSTEM
Load Balancing: AWS_ELASTICLOADBALANCINGV2_LOADBALANCER, AWS_ELASTICLOADBALANCINGV2_TARGETGROUP
Messaging: AWS_SQS_QUEUE, AWS_SNS_TOPIC, AWS_EVENTS_EVENTBUS, AWS_MSK_CLUSTER
Allgemeine AWS-Felder
Alle AWS-Entitäten enthalten:
aws.account.id- AWS-Konto-IDaws.region- AWS-Region (z. B. us-east-1)aws.resource.id- Eindeutige Ressourcen-IDaws.resource.name- Ressourcennameaws.arn- Amazon-Ressourcenname (ARN)aws.vpc.id- VPC-ID (für VPC-angebundene Ressourcen)aws.subnet.id- Subnet-IDaws.availability_zone- Verfügbarkeitszoneaws.security_group.id- Sicherheitsgruppen-IDs (Array)tags- Ressourcen-Tags (verwenden Sietags[TagName])
AWS-Felder in Logs und Bizevents
AWS-basierte Logs (fetch logs) enthalten diese Felder – keine Erkundung erforderlich:
aws.region,aws.account.id,aws.service,aws.log_group,aws.log_stream- Plus Standard-Log-Felder:
content,loglevel,timestamp,k8s.*,dt.smartscape.*
AWS-basierte Bizevents (fetch bizevents) enthalten:
aws.region,aws.account.id,event.type,event.provider
Verwenden Sie filter isNotNull(aws.region), um den Bereich auf AWS-basierte Datensätze einzuschränken.
Beziehungstypen
AWS-Entitäten verwenden diese Beziehungstypen:
is_attached_to- Exklusive Anbindung (z. B. Volume an Instanz)uses- Abhängigkeitsbeziehung (z. B. Instanz verwendet Sicherheitsgruppe)runs_on- Vertikale Beziehung (z. B. Instanz läuft auf AZ)is_part_of- Zusammensetzung (z. B. Instanz in einem Cluster)belongs_to- Aggregation (z. B. Service gehört zu Cluster)balances- Lastausgleich (z. B. Target Group gleicht Instanzen aus)balanced_by- Inverse Lastausgleichsbeziehung (z. B. Load Balancer ausgeglichen durch Target Group)
Konvention für AWS-Metrikschlüssel
Dynatrace erfasst AWS CloudWatch-Metriken nach diesem Muster:
cloud.aws.<service>.<MetricName>.By.<DimensionName>
<service> ist der Name des AWS-Dienstes in Kleinbuchstaben, <MetricName> der CloudWatch-Metrikname (Groß-/Kleinschreibung beibehalten) und <DimensionName> die CloudWatch-Dimension.
Beispiele: cloud.aws.ec2.CPUUtilization.By.InstanceId, cloud.aws.lambda.Invocations.By.FunctionName, cloud.aws.rds.CPUUtilization.By.DBInstanceIdentifier
Verwenden Sie für diese Metriken timeseries, nicht fetch. Gruppieren Sie nach dt.smartscape_source.id, um nach Entität aufzuteilen.
→ Im references/metrics-performance.md finden Sie den vollständigen Metrikkatalog nach Dienst mit DQL-Abfragevorlagen.
Schlüssel-Workflows
1. AWS-Ressourcenerkennung
Alle AWS-Ressourcen nach Typ abrufen:
smartscapeNodes "AWS_*"
| summarize count = count(), by: {type}
| sort count desc
Nach Konto und Region filtern:
smartscapeNodes "AWS_*"
| filter aws.account.id == "123456789012" and aws.region == "us-east-1"
| fields type, name, aws.resource.id
Filtern mit Tags:
smartscapeNodes "AWS_*"
| filter tags[Environment] == "production"
| summarize count = count(), by: {type, aws.region}
→ Vollständige Inventarmuster finden Sie unter references/resource-management.md
2. VPC-Netzwerkanalyse
Alle VPCs auflisten:
smartscapeNodes "AWS_EC2_VPC"
| fields name, aws.account.id, aws.region, aws.vpc.id
Ressourcen in einer VPC finden:
smartscapeNodes "AWS_*"
| filter aws.vpc.id == "vpc-0be61db7c5d2d1bd1"
| summarize resource_count = count(), by: {type, aws.subnet.id}
| sort resource_count desc
Nutzung von Sicherheitsgruppen analysieren:
smartscapeNodes "AWS_EC2_INSTANCE"
| filter contains(aws.security_group.id, "sg-abc123")
| fields name, aws.resource.id, aws.vpc.id, aws.subnet.id
→ VPC-Netzwerk siehe references/vpc-networking-security.md → Sicherheitsgruppenmuster siehe references/security-compliance.md
3. Datenbanküberwachung
Alle RDS-Instanzen auflisten:
smartscapeNodes "AWS_RDS_DBINSTANCE"
| fields name, aws.account.id, aws.region, aws.vpc.id, aws.availability_zone
Multi-AZ-Datenbanken finden:
smartscapeNodes "AWS_RDS_DBINSTANCE"
| parse aws.object, "JSON:awsjson"
| fieldsAdd multiAZ = awsjson[configuration][multiAZ]
| filter multiAZ == true
| fields name, aws.resource.id, aws.region
Nach Engine-Typ gruppieren:
smartscapeNodes "AWS_RDS_DBINSTANCE"
| parse aws.object, "JSON:awsjson"
| fieldsAdd engine = awsjson[configuration][engine]
| summarize db_count = count(), by: {engine, aws.region}
| sort db_count desc
→ Datenbanküberwachung siehe references/database-monitoring.md
4. Serverlose und Container-Workloads
Lambda-Funktionen auflisten:
smartscapeNodes "AWS_LAMBDA_FUNCTION"
| fields name, aws.account.id, aws.region, aws.vpc.id
ECS-Services in einem Cluster finden:
smartscapeNodes "AWS_ECS_SERVICE"
| traverse "belongs_to", "AWS_ECS_CLUSTER"
| fields name, aws.resource.id, aws.region
EKS-Cluster auflisten:
smartscapeNodes "AWS_EKS_CLUSTER"
| fields name, aws.account.id, aws.region, aws.vpc.id
→ Serverlos siehe references/serverless-containers.md → Container siehe references/serverless-containers.md
5. Load-Balancer-Topologie
Vollständige Zuordnung von Load Balancer zu Instanzen:
smartscapeNodes "AWS_ELASTICLOADBALANCINGV2_LOADBALANCER"
| parse aws.object, "JSON:awsjson"
| fieldsAdd dnsName = awsjson[configuration][dnsName], scheme = awsjson[configuration][scheme]
| filter scheme == "internet-facing"
| traverse "balanced_by", "AWS_ELASTICLOADBALANCINGV2_TARGETGROUP", direction:backward, fieldsKeep:{dnsName, id}
| fieldsAdd targetGroupName = aws.resource.name
| traverse "balances", "AWS_EC2_INSTANCE", fieldsKeep: {targetGroupName, id}
| fieldsAdd loadBalancerDnsName = dt.traverse.history[-2][dnsName],
loadBalancerId = dt.traverse.history[-2][id],
targetGroupId = dt.traverse.history[-1][id]
→ Load Balancing siehe references/load-balancing-api.md
6. Kostenoptimierung
Nicht zugeordnete EBS-Volumes finden:
smartscapeNodes "AWS_EC2_VOLUME"
| parse aws.object, "JSON:awsjson"
| fieldsAdd state = awsjson[configuration][state]
| filter state == "available"
| fields name, aws.resource.id, aws.availability_zone, aws.account.id
EBS-Kosten nach Typ analysieren:
smartscapeNodes "AWS_EC2_VOLUME"
| parse aws.object, "JSON:awsjson"
| fieldsAdd volumeType = awsjson[configuration][volumeType],
size = awsjson[configuration][size],
state = awsjson[configuration][state]
| summarize total_volumes = count(), total_size_gb = sum(size), by: {volumeType, state}
| sort total_size_gb desc
→ Kostenoptimierung siehe references/cost-optimization.md
7. Sicherheit und Compliance
Öffentlich zugängliche Datenbanken finden:
smartscapeNodes "AWS_RDS_DBINSTANCE"
| parse aws.object, "JSON:awsjson"
| fieldsAdd publiclyAccessible = awsjson[configuration][publiclyAccessible]
| filter publiclyAccessible == true
| fields name, aws.resource.id, aws.vpc.id, aws.account.id
Blast Radius von Sicherheitsgruppen:
smartscapeNodes "AWS_EC2_INSTANCE"
| traverse "uses", "AWS_EC2_SECURITYGROUP"
| summarize instance_count = count(), by: {aws.resource.name, aws.vpc.id}
| sort instance_count desc
| limit 20
→ Sicherheit siehe references/security-compliance.md
8. Ressourcenbesitz und Tagging
Ressourcen ohne Tags finden:
smartscapeNodes "AWS_*"
| filter isNull(tags)
| fields type, name, aws.resource.id, aws.account.id, aws.region
Kostenzuordnung nach Kostenstelle:
smartscapeNodes "AWS_*"
| filter isNotNull(tags[CostCenter])
| summarize resource_count = count(), by: {tags[CostCenter], type}
| sort resource_count desc
→ Ressourcenbesitz siehe references/resource-ownership.md
Allgemeine Abfragemuster
| Muster | Vorlage |
|---|---|
| Erkennung | smartscapeNodes "AWS_*" | fieldsAdd <attrs> | filter <cond> | summarize <agg> |
| Konfigurations-Parsing | smartscapeNodes "AWS_<T>" | parse aws.object, "JSON:awsjson" | fieldsAdd f = awsjson[configuration][field] |
| Traversierung | smartscapeNodes "AWS_<SRC>" | traverse "<rel>", "AWS_<TGT>" |
| Multi-Typ | smartscapeNodes "AWS_T1", "AWS_T2" | filter <cond> | summarize count(), by: {type} |
Best Practices
Abfrageoptimierung
- Frühzeitig nach Konto und Region filtern
- Verwenden Sie spezifische Entitätstypen (vermeiden Sie
"AWS_*"-Wildcards wann immer möglich) - Begrenzen Sie Ergebnisse mit
| limit Nfür die Erkundung - Verwenden Sie
isNotNull()-Prüfungen, bevor Sie auf verschachtelte Felder zugreifen
Konfigurations-Parsing
- Parsen Sie immer
aws.objectmit dem JSON-Parser:parse aws.object, "JSON:awsjson" - Verwenden Sie konsistente Feldnamen:
fieldsAdd configField = awsjson[configuration][field] - Prüfen Sie auf Nullwerte nach dem Parsen
- Verwenden Sie
toString()für komplexe verschachtelte Objekte
Sicherheitsfelder
- Sicherheitsgruppen-IDs sind Arrays – verwenden Sie
contains()oderexpand - Parsen Sie
aws.objectfür detaillierte Sicherheitskontexte - Prüfen Sie
publiclyAccessible,storageEncryptedund ähnliche Flags - Validieren Sie IAM-Rollenannahmen
Tagging-Strategie
- Verwenden Sie
tags[TagName]zum Filtern nach einem bestimmten Tag-Wert tagsist ein JSON-Objekt, kein Array – verwenden SieisNull(tags)für Ressourcen ohne Tags, niemalsarraySize(tags)- Verwenden Sie
isNull(tags[TagName]), um Ressourcen zu finden, denen ein bestimmtes Tag fehlt - Implementieren Sie konsistente Tag-Namenskonventionen
- Verfolgen Sie die Tag-Abdeckung mit summarize-Operationen
Einschränkungen und Hinweise
Smartscape-Einschränkungen
- Die AWS-Objektkonfiguration erfordert Parsing mit
parse aws.object, "JSON:awsjson" - AWS-Metriken sind als Dynatrace-Metriken unter der Namenskonvention
cloud.aws.*verfügbar (siehe AWS-Metrik-Namenskonvention) - Die Ressourcenerkennung hängt von der Konfiguration der AWS-Integration ab
- Die Tagsynchronisation kann leichte Verzögerungen aufweisen
Beziehungstraversierung
- Verwenden Sie
direction:backwardfür umgekehrte Beziehungen (z. B. Target Group → Load Balancer) - Verwenden Sie
fieldsKeep, um wichtige Felder während der Traversierung beizubehalten - Greifen Sie auf die Traversierungshistorie mit
dt.traverse.history[-N]zu - Komplexe Topologien können mehrere Traversierungsvorgänge erfordern
Allgemeine Tipps
- Verwenden Sie
getNodeName()für menschenlesbare Ressourcennamen - Behandeln Sie Nullwerte ordnungsgemäß mit
isNotNull()undisNull() - Kombinieren Sie Regions- und Kontofilter für große Umgebungen
- Verwenden Sie
countDistinct()für eindeutige Ressourcenzählungen
Wann Referenzen geladen werden sollten
Diese Fertigkeit verwendet progressive Offenlegung. Beginnen Sie hier für 80 % der Anwendungsfälle. Laden Sie Referenzdateien für detaillierte Spezifikationen bei Bedarf.
Laden Sie vpc-networking-security.md, wenn:
- Analyse der VPC-Topologie und -Konnektivität
- Untersuchung von Sicherheitsgruppenkonfigurationen
- Finden von Ressourcen nach Sicherheitsgruppe
- Fehlerbehebung bei Netzwerkschnittstellenproblemen
Laden Sie database-monitoring.md, wenn:
- Verwalten von RDS-Instanzen und -Clustern
- Analysieren von Datenbank-Engine-Verteilungen
- Überprüfen von Multi-AZ-Konfigurationen
- Überwachen von Cache-Clustern
Laden Sie serverless-containers.md, wenn:
- Arbeiten mit Lambda-Funktionen
- Analysieren von ECS/EKS-Bereitstellungen
- Untersuchen von Container-Netzwerken
- Planen von serverlosen Migrationen
Laden Sie load-balancing-api.md, wenn:
- Zuordnen von Load-Balancer-Topologien
- Analysieren der Target-Group-Health
- Arbeiten mit API Gateway
- Konfigurieren von CloudFront
Laden Sie messaging-event-streaming.md, wenn:
- Verwalten von SQS-Warteschlangen und SNS-Themen
- Analysieren von EventBridge-Ereignisbussen
- Arbeiten mit Kinesis oder MSK
- Überwachen von Step Functions
Laden Sie resource-management.md, wenn:
- Durchführen von Ressourcenaudits
- Analysieren der Tag-Compliance
- Finden von nicht zugeordneten Ressourcen
- Planen der regionalen Verteilung
Laden Sie cost-optimization.md, wenn:
- Identifizieren von Kosteneinsparungspotenzialen
- Analysieren von Speicherkosten
- Finden ungenutzter Ressourcen
- Optimieren von Instanztypen
Laden Sie capacity-planning.md, wenn:
- Planen von Kapazitätserweiterungen
- Analysieren der Ressourcenauslastung
- Überwachen der Subnet-IP-Nutzung
- Dimensionieren
…
[abgeschnitten für die Übersetzung]