CommunityRecherche & Datenanalysegithub.com

Dynatrace/dynatrace-for-ai

Fähigkeiten, Anweisungen und Prompts für die Erstellung von KI-Agenten auf Basis des Dynatrace-Produktionskontexts.

Was ist dynatrace-for-ai?

Diese Fertigkeit bietet KI-Agenten (z. B. Claude Code, Cursor) eine umfassende Anleitung zur Interaktion mit der AWS-Cloud-Infrastruktur über Dynatrace Smartscape und DQL. Sie deckt eine breite Palette von Anwendungsfällen ab, darunter Bestandsaufnahme, Netzwerkanalyse, Datenbanküberwachung, Serverless- und Container-Workloads, Kostenoptimierung, Sicherheit und Compliance sowie Kapazitätsplanung. Die Fertigkeit basiert auf einer progressiven Offenlegung von Informationen und verweist auf detaillierte Referenzdateien für spezifische Anforderungen. Sie wird durch dynamische Abfragen von AWS-Entitäten über DQL (Dynatrace Query Language) und das Traversieren von Beziehungen unterstützt. Die Dokumentation enthält zahlreiche Beispiele, Best Practices und Hinweise zu Einschränkungen, um eine effiziente und korrekte Nutzung zu gewährleisten.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add Dynatrace/dynatrace-for-ai

Installed? Explore more Recherche & Datenanalyse skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

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-ID
  • aws.region - AWS-Region (z. B. us-east-1)
  • aws.resource.id - Eindeutige Ressourcen-ID
  • aws.resource.name - Ressourcenname
  • aws.arn - Amazon-Ressourcenname (ARN)
  • aws.vpc.id - VPC-ID (für VPC-angebundene Ressourcen)
  • aws.subnet.id - Subnet-ID
  • aws.availability_zone - Verfügbarkeitszone
  • aws.security_group.id - Sicherheitsgruppen-IDs (Array)
  • tags - Ressourcen-Tags (verwenden Sie tags[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

MusterVorlage
ErkennungsmartscapeNodes "AWS_*" | fieldsAdd <attrs> | filter <cond> | summarize <agg>
Konfigurations-ParsingsmartscapeNodes "AWS_<T>" | parse aws.object, "JSON:awsjson" | fieldsAdd f = awsjson[configuration][field]
TraversierungsmartscapeNodes "AWS_<SRC>" | traverse "<rel>", "AWS_<TGT>"
Multi-TypsmartscapeNodes "AWS_T1", "AWS_T2" | filter <cond> | summarize count(), by: {type}

Best Practices

Abfrageoptimierung

  1. Frühzeitig nach Konto und Region filtern
  2. Verwenden Sie spezifische Entitätstypen (vermeiden Sie "AWS_*"-Wildcards wann immer möglich)
  3. Begrenzen Sie Ergebnisse mit | limit N für die Erkundung
  4. Verwenden Sie isNotNull()-Prüfungen, bevor Sie auf verschachtelte Felder zugreifen

Konfigurations-Parsing

  1. Parsen Sie immer aws.object mit dem JSON-Parser: parse aws.object, "JSON:awsjson"
  2. Verwenden Sie konsistente Feldnamen: fieldsAdd configField = awsjson[configuration][field]
  3. Prüfen Sie auf Nullwerte nach dem Parsen
  4. Verwenden Sie toString() für komplexe verschachtelte Objekte

Sicherheitsfelder

  1. Sicherheitsgruppen-IDs sind Arrays – verwenden Sie contains() oder expand
  2. Parsen Sie aws.object für detaillierte Sicherheitskontexte
  3. Prüfen Sie publiclyAccessible, storageEncrypted und ähnliche Flags
  4. Validieren Sie IAM-Rollenannahmen

Tagging-Strategie

  1. Verwenden Sie tags[TagName] zum Filtern nach einem bestimmten Tag-Wert
  2. tags ist ein JSON-Objekt, kein Array – verwenden Sie isNull(tags) für Ressourcen ohne Tags, niemals arraySize(tags)
  3. Verwenden Sie isNull(tags[TagName]), um Ressourcen zu finden, denen ein bestimmtes Tag fehlt
  4. Implementieren Sie konsistente Tag-Namenskonventionen
  5. 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:backward fü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() und isNull()
  • 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]

Verwandte Skills