Dynatrace/dynatrace-for-ai

Habilidades, indicaciones e instrucciones para construir agentes de IA sobre el contexto de producción de Dynatrace.

¿Qué es dynatrace-for-ai?

Este skill proporciona a los agentes de IA (como Claude Code, Cursor o Codex) la capacidad de monitorear, analizar y optimizar recursos de AWS directamente desde el contexto de producción de Dynatrace. Aprovecha Dynatrace Smartscape y el lenguaje de consulta DQL para descubrir y gestionar una amplia gama de servicios de AWS, incluyendo cómputo (EC2, Lambda, ECS, EKS), redes (VPC, subnets, grupos de seguridad), bases de datos (RDS, DynamoDB, ElastiCache), almacenamiento (S3, EBS, EFS), balanceo de carga (ALB/NLB), mensajería (SQS, SNS) y más. Es especialmente útil para tareas como inventario de recursos, análisis de redes VPC, monitorización de bases de datos, optimización de costos (volúmenes EBS no adjuntos), cumplimiento de seguridad (bases de datos de acceso público) y planificación de capacidad. El skill guía al agente con flujos de trabajo predefinidos, ejemplos de consultas DQL y mejores prácticas para filtrado eficiente, recorrido de relaciones y análisis de configuración. Está diseñado para funcionar en cualquier plataforma de agentes de IA que soporte instrucciones en markdown y ejecución de código, y utiliza un enfoque de divulgación progresiva con archivos de referencia detallados para casos de uso avanzados.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add Dynatrace/dynatrace-for-ai

Installed? Explore more Investigación y análisis de datos skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Infraestructura en la Nube AWS

Monitorear y analizar recursos de AWS usando Dynatrace Smartscape y DQL. Consultar servicios de AWS, optimizar costos, gestionar seguridad y planificar capacidad en toda su infraestructura AWS.

Cuándo Usar Este Skill

Utilice este skill cuando el usuario necesite trabajar con recursos de AWS en Dynatrace. Cargue el archivo de referencia para el tipo de tarea:

  • Inventario: "Muéstrame todas las instancias EC2 en us-east-1"
  • Redes: "Encuentra todos los recursos en la VPC vpc-abc123"
  • Base de datos: "Lista todas las instancias RDS con Multi-AZ habilitado"
  • Serverless: "Muestra funciones Lambda con acceso a VPC"
  • Costos: "Encuentra volúmenes EBS no adjuntos para ahorrar costos"
  • Seguridad: "Identifica bases de datos públicamente accesibles"
  • Cumplimiento: "Encuentra recursos que faltan etiquetas Environment"
  • Capacidad: "Analiza la utilización de IP en subnets"
  • Solución de problemas: "Mapea el balanceador de carga a las instancias a través de grupos objetivo"
  • Análisis de Problemas: "¿Qué cambió antes de este problema de AWS?" / "¿Qué eventos afectaron este recurso?"
  • Contexto de Carga de Trabajo: "¿Está esta instancia detrás de un balanceador de carga, en un clúster EKS o gestionada por ECS?"
  • Eventos: "¿Ha habido eventos recientes en AWS que afecten este recurso?"

Conceptos Clave

Tipos de Entidad

Los recursos de AWS usan el prefijo AWS_* y se pueden consultar usando la función smartscapeNodes. Todas las entidades de AWS se descubren y modelan automáticamente en Dynatrace Smartscape.

Cómputo: AWS_EC2_INSTANCE, AWS_LAMBDA_FUNCTION, AWS_ECS_CLUSTER, AWS_ECS_SERVICE, AWS_EKS_CLUSTER Redes: AWS_EC2_VPC, AWS_EC2_SUBNET, AWS_EC2_SECURITYGROUP, AWS_EC2_NATGATEWAY, AWS_EC2_VPCENDPOINT Base de datos: AWS_RDS_DBINSTANCE, AWS_RDS_DBCLUSTER, AWS_DYNAMODB_TABLE, AWS_ELASTICACHE_CACHECLUSTER Almacenamiento: AWS_S3_BUCKET, AWS_EC2_VOLUME, AWS_EFS_FILESYSTEM Balanceo de carga: AWS_ELASTICLOADBALANCINGV2_LOADBALANCER, AWS_ELASTICLOADBALANCINGV2_TARGETGROUP Mensajería: AWS_SQS_QUEUE, AWS_SNS_TOPIC, AWS_EVENTS_EVENTBUS, AWS_MSK_CLUSTER

Campos Comunes de AWS

Todas las entidades de AWS incluyen:

  • aws.account.id - Identificador de cuenta AWS
  • aws.region - Región AWS (ej., us-east-1)
  • aws.resource.id - Identificador único del recurso
  • aws.resource.name - Nombre del recurso
  • aws.arn - Nombre de Recurso de Amazon (ARN)
  • aws.vpc.id - Identificador de VPC (para recursos adjuntos a VPC)
  • aws.subnet.id - Identificador de subnet
  • aws.availability_zone - Zona de disponibilidad
  • aws.security_group.id - IDs de grupos de seguridad (array)
  • tags - Etiquetas del recurso (usar tags[TagName])

Campos de AWS en Logs y Bizevents

Los logs (fetch logs) originados en AWS llevan estos campos, no se necesita exploración:

  • aws.region, aws.account.id, aws.service, aws.log_group, aws.log_stream
  • Más campos estándar de logs: content, loglevel, timestamp, k8s.*, dt.smartscape.*

Los bizevents (fetch bizevents) originados en AWS llevan:

  • aws.region, aws.account.id, event.type, event.provider

Use filter isNotNull(aws.region) para limitar a registros originados en AWS.

Tipos de Relación

Las entidades de AWS usan estos tipos de relación:

  • is_attached_to - Adjunto exclusivo (ej., volumen a instancia)
  • uses - Relación de dependencia (ej., instancia usa grupo de seguridad)
  • runs_on - Relación vertical (ej., instancia se ejecuta en AZ)
  • is_part_of - Composición (ej., instancia en clúster)
  • belongs_to - Agregación (ej., servicio pertenece a clúster)
  • balances - Balanceo de carga (ej., grupo objetivo balancea instancias)
  • balanced_by - Relación inversa de balanceo (ej., balanceador de carga balanceado por grupo objetivo)

Convención de Nomenclatura de Claves de Métricas de AWS

Dynatrace ingiere métricas de AWS CloudWatch usando este patrón:

cloud.aws.<servicio>.<NombreMetrica>.By.<NombreDimension>

<servicio> es el nombre del servicio AWS en minúsculas, <NombreMetrica> es el nombre de la métrica de CloudWatch (se conserva mayúsculas/minúsculas), y <NombreDimension> es la dimensión de CloudWatch.

Ejemplos: cloud.aws.ec2.CPUUtilization.By.InstanceId, cloud.aws.lambda.Invocations.By.FunctionName, cloud.aws.rds.CPUUtilization.By.DBInstanceIdentifier

Use timeseries, no fetch, para estas métricas. Agrupe por dt.smartscape_source.id para dividir por entidad.

→ Consulte references/metrics-performance.md para el catálogo completo de métricas por servicio con plantillas de consulta DQL.


Flujos de Trabajo Clave

1. Descubrimiento de Recursos AWS

Obtener todos los recursos de AWS por tipo:

smartscapeNodes "AWS_*"
| summarize count = count(), by: {type}
| sort count desc

Filtrar por cuenta y región:

smartscapeNodes "AWS_*"
| filter aws.account.id == "123456789012" and aws.region == "us-east-1"
| fields type, name, aws.resource.id

Usando etiquetas para filtrar:

smartscapeNodes "AWS_*"
| filter tags[Environment] == "production"
| summarize count = count(), by: {type, aws.region}

→ Para patrones completos de inventario de recursos, consulte references/resource-management.md

2. Análisis de Redes VPC

Listar todas las VPC:

smartscapeNodes "AWS_EC2_VPC"
| fields name, aws.account.id, aws.region, aws.vpc.id

Encontrar recursos en una VPC:

smartscapeNodes "AWS_*"
| filter aws.vpc.id == "vpc-0be61db7c5d2d1bd1"
| summarize resource_count = count(), by: {type, aws.subnet.id}
| sort resource_count desc

Analizar uso de grupos de seguridad:

smartscapeNodes "AWS_EC2_INSTANCE"
| filter contains(aws.security_group.id, "sg-abc123")
| fields name, aws.resource.id, aws.vpc.id, aws.subnet.id

→ Para redes VPC, consulte references/vpc-networking-security.md
→ Para patrones de grupos de seguridad, consulte references/security-compliance.md

3. Monitorización de Bases de Datos

Listar todas las instancias RDS:

smartscapeNodes "AWS_RDS_DBINSTANCE"
| fields name, aws.account.id, aws.region, aws.vpc.id, aws.availability_zone

Encontrar bases de datos Multi-AZ:

smartscapeNodes "AWS_RDS_DBINSTANCE"
| parse aws.object, "JSON:awsjson"
| fieldsAdd multiAZ = awsjson[configuration][multiAZ]
| filter multiAZ == true
| fields name, aws.resource.id, aws.region

Agrupar por tipo de motor:

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

→ Para monitorización de bases de datos, consulte references/database-monitoring.md

4. Cargas de Trabajo Serverless y en Contenedores

Listar funciones Lambda:

smartscapeNodes "AWS_LAMBDA_FUNCTION"
| fields name, aws.account.id, aws.region, aws.vpc.id

Encontrar servicios ECS en un clúster:

smartscapeNodes "AWS_ECS_SERVICE"
| traverse "belongs_to", "AWS_ECS_CLUSTER"
| fields name, aws.resource.id, aws.region

Listar clústeres EKS:

smartscapeNodes "AWS_EKS_CLUSTER"
| fields name, aws.account.id, aws.region, aws.vpc.id

→ Para serverless, consulte references/serverless-containers.md
→ Para contenedores, consulte references/serverless-containers.md

5. Topología de Balanceadores de Carga

Mapeo completo de balanceador de carga a instancias:

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]

→ Para balanceo de carga, consulte references/load-balancing-api.md

6. Optimización de Costos

Encontrar volúmenes EBS no adjuntos:

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

Analizar costos de EBS por tipo:

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

→ Para optimización de costos, consulte references/cost-optimization.md

7. Seguridad y Cumplimiento

Encontrar bases de datos públicamente accesibles:

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

Radio de explosión de grupos de seguridad:

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

→ Para seguridad, consulte references/security-compliance.md

8. Propiedad de Recursos y Etiquetado

Encontrar recursos sin etiquetar:

smartscapeNodes "AWS_*"
| filter isNull(tags)
| fields type, name, aws.resource.id, aws.account.id, aws.region

Asignación de costos por centro de costos:

smartscapeNodes "AWS_*"
| filter isNotNull(tags[CostCenter])
| summarize resource_count = count(), by: {tags[CostCenter], type}
| sort resource_count desc

→ Para propiedad de recursos, consulte references/resource-ownership.md


Patrones de Consulta Comunes

PatrónPlantilla
DescubrimientosmartscapeNodes "AWS_*" | fieldsAdd <attrs> | filter <cond> | summarize <agg>
Análisis de configuraciónsmartscapeNodes "AWS_<T>" | parse aws.object, "JSON:awsjson" | fieldsAdd f = awsjson[configuration][field]
RecorridosmartscapeNodes "AWS_<SRC>" | traverse "<rel>", "AWS_<TGT>"
Multi-tiposmartscapeNodes "AWS_T1", "AWS_T2" | filter <cond> | summarize count(), by: {type}

Mejores Prácticas

Optimización de Consultas

  1. Filtrar temprano por cuenta y región
  2. Usar tipos de entidad específicos (evitar comodines "AWS_*" cuando sea posible)
  3. Limitar resultados con | limit N para exploración
  4. Usar verificaciones isNotNull() antes de acceder a campos anidados

Análisis de Configuración

  1. Siempre analizar aws.object con el analizador JSON: parse aws.object, "JSON:awsjson"
  2. Usar nomenclatura de campos consistente: fieldsAdd configField = awsjson[configuration][field]
  3. Verificar valores nulos después del análisis
  4. Usar toString() para objetos anidados complejos

Campos de Seguridad

  1. Los IDs de grupos de seguridad son arrays - usar contains() o expand
  2. Analizar aws.object para contexto de seguridad detallado
  3. Verificar publiclyAccessible, storageEncrypted y banderas similares
  4. Validar suposiciones de roles IAM

Estrategia de Etiquetado

  1. Usar tags[TagName] para filtrar por valor de etiqueta específico
  2. tags es un objeto JSON, no un array — usar isNull(tags) para recursos no etiquetados, nunca arraySize(tags)
  3. Usar isNull(tags[TagName]) para encontrar recursos que faltan una etiqueta específica
  4. Implementar convenciones de nomenclatura de etiquetas consistentes
  5. Rastrear la cobertura de etiquetas con operaciones de resumen

Limitaciones y Notas

Limitaciones de Smartscape

  • La configuración del objeto AWS requiere análisis con parse aws.object, "JSON:awsjson"
  • Las métricas de AWS están disponibles como métricas de Dynatrace usando la convención de nomenclatura cloud.aws.* (consulte Convención de Nomenclatura de Métricas AWS)
  • El descubrimiento de recursos depende de la configuración de la integración de AWS
  • La sincronización de etiquetas puede tener pequeños retrasos

Recorrido de Relaciones

  • Usar direction:backward para relaciones inversas (ej., grupo objetivo → balanceador de carga)
  • Usar fieldsKeep para mantener campos importantes a través del recorrido
  • Acceder al historial de recorrido con dt.traverse.history[-N]
  • Las topologías complejas pueden requerir múltiples operaciones de recorrido

Consejos Generales

  • Usar getNodeName() para nombres de recursos legibles
  • Manejar valores nulos con elegancia usando isNotNull() e isNull()
  • Combinar filtros de región y cuenta para entornos grandes
  • Usar countDistinct() para recuentos únicos de recursos

Cuándo Cargar Referencias

Este skill usa divulgación progresiva. Comience aquí para el 80% de los casos de uso. Cargue archivos de referencia para especificaciones detalladas cuando sea necesario.

Cargue vpc-networking-security.md cuando:

  • Analice la topología y conectividad de VPC
  • Investigue configuraciones de grupos de seguridad
  • Encuentre recursos por grupo de seguridad
  • Solucione problemas de interfaces de red

Cargue database-monitoring.md cuando:

  • Gestione instancias y clústeres RDS
  • Analice distribuciones de motores de base de datos
  • Verifique configuraciones Multi-AZ
  • Monitoree clústeres de caché

Cargue serverless-containers.md cuando:

  • Trabaje con funciones Lambda
  • Analice despliegues ECS/EKS
  • Investigue redes de contenedores
  • Planifique migraciones serverless

Cargue load-balancing-api.md cuando:

  • Mapee topologías de balanceadores de carga
  • Analice la salud de grupos objetivo
  • Trabaje con API Gateway
  • Configure CloudFront

Cargue messaging-event-streaming.md cuando:

  • Gestione colas SQS y temas SNS
  • Analice buses de eventos de EventBridge
  • Trabaje con Kinesis o MSK
  • Monitoree Step Functions

Cargue resource-management.md cuando:

  • Realice auditorías de recursos
  • Analice el cumplimiento de etiquetas
  • Encuentre recursos no adjuntos
  • Planifique la distribución regional

Cargue cost-optimization.md cuando:

  • Identifique oportunidades de ahorro de costos
  • Analice costos de almacenamiento
  • Encuentre recursos no utilizados
  • Optimice tipos de instancia

Cargue capacity-planning.md cuando:

  • Planifique expansiones de capacidad
  • Analice la utilización de recursos
  • Monitoree el uso de IP de subred
  • Dimensione cargas de trabajo

Skills relacionados