CommunityPesquisa e Análise de Dadosgithub.com

Dynatrace/dynatrace-for-ai

Habilidades, prompts e instruções para construir agentes de IA com base no contexto de produção da Dynatrace

O que é dynatrace-for-ai?

Este conjunto de habilidades (skill) capacita agentes de IA, como Claude Code, Cursor ou Codex, a monitorar, analisar e otimizar toda a infraestrutura AWS usando o Smartscape da Dynatrace e a linguagem de consulta DQL. Ele fornece workflows predefinidos para descoberta de recursos, análise de rede VPC, monitoramento de banco de dados, workloads serverless/container, topologia de balanceadores de carga, otimização de custos, conformidade de segurança e gerenciamento de tags. O skill expõe tipos de entidade AWS (por exemplo, `AWS_EC2_INSTANCE`, `AWS_RDS_DBINSTANCE`) com campos comuns como `aws.region` e `aws.vpc.id`, além de padrões de chaves de métricas para dados do CloudWatch. Seguindo o princípio de divulgação progressiva, o conteúdo principal cobre 80% dos casos de uso e faz referência a arquivos de documentação detalhada para especificações avançadas, como configuração de segurança e otimização de capacidade. A saída é totalmente localizada, preservando código, comandos, caminhos de arquivos e URLs, garantindo que o agente traduza a intenção do usuário em consultas DQL precisas sem perder o contexto técnico.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add Dynatrace/dynatrace-for-ai

Installed? Explore more Pesquisa e Análise de Dados skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Infraestrutura AWS na Nuvem

Monitore e analise recursos AWS usando o Smartscape da Dynatrace e DQL. Consulte serviços AWS, otimize custos, gerencie segurança e planeje capacidade em toda sua infraestrutura AWS.

Quando Usar Esta Skill

Use esta skill quando o usuário precisar trabalhar com recursos AWS no Dynatrace. Carregue o arquivo de referência para o tipo de tarefa:

  • Inventário: "Mostre-me todas as instâncias EC2 em us-east-1"
  • Rede: "Encontre todos os recursos na VPC vpc-abc123"
  • Banco de Dados: "Liste todas as instâncias RDS com Multi-AZ habilitado"
  • Serverless: "Mostre funções Lambda com acesso VPC"
  • Custo: "Encontre volumes EBS não anexados para economia de custos"
  • Segurança: "Identifique bancos de dados acessíveis publicamente"
  • Conformidade: "Encontre recursos sem a tag Environment"
  • Capacidade: "Analise a utilização de IPs das sub-redes"
  • Solução de Problemas: "Mapeie balanceador de carga para instâncias através de grupos de destino"
  • Análise de Problemas: "O que mudou antes deste problema AWS?" / "Quais eventos afetaram este recurso?"
  • Contexto de Carga de Trabalho: "Esta instância está atrás de um balanceador de carga, em um cluster EKS ou gerenciada por ECS?"
  • Eventos: "Houve algum evento recente na AWS que afetou este recurso?"

Conceitos Principais

Tipos de Entidade

Os recursos AWS usam o prefixo AWS_* e podem ser consultados usando a função smartscapeNodes. Todas as entidades AWS são descobertas e modeladas automaticamente no Smartscape da Dynatrace.

Computação: AWS_EC2_INSTANCE, AWS_LAMBDA_FUNCTION, AWS_ECS_CLUSTER, AWS_ECS_SERVICE, AWS_EKS_CLUSTER Rede: AWS_EC2_VPC, AWS_EC2_SUBNET, AWS_EC2_SECURITYGROUP, AWS_EC2_NATGATEWAY, AWS_EC2_VPCENDPOINT Banco de Dados: AWS_RDS_DBINSTANCE, AWS_RDS_DBCLUSTER, AWS_DYNAMODB_TABLE, AWS_ELASTICACHE_CACHECLUSTER Armazenamento: AWS_S3_BUCKET, AWS_EC2_VOLUME, AWS_EFS_FILESYSTEM Balanceamento de Carga: AWS_ELASTICLOADBALANCINGV2_LOADBALANCER, AWS_ELASTICLOADBALANCINGV2_TARGETGROUP Mensageria: AWS_SQS_QUEUE, AWS_SNS_TOPIC, AWS_EVENTS_EVENTBUS, AWS_MSK_CLUSTER

Campos Comuns AWS

Todas as entidades AWS incluem:

  • aws.account.id - Identificador da conta AWS
  • aws.region - Região AWS (ex.: us-east-1)
  • aws.resource.id - Identificador único do recurso
  • aws.resource.name - Nome do recurso
  • aws.arn - Nome do Recurso da Amazon (ARN)
  • aws.vpc.id - Identificador da VPC (para recursos anexados à VPC)
  • aws.subnet.id - Identificador da sub-rede
  • aws.availability_zone - Zona de disponibilidade
  • aws.security_group.id - IDs dos grupos de segurança (array)
  • tags - Tags do recurso (use tags[TagName])

Campos AWS em Logs e Bizevents

Logs originados da AWS (fetch logs carregam estes campos — nenhuma exploração é necessária):

  • aws.region, aws.account.id, aws.service, aws.log_group, aws.log_stream
  • Além dos campos padrão de log: content, loglevel, timestamp, k8s.*, dt.smartscape.*

Bizevents originados da AWS (fetch bizevents carregam):

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

Use filter isNotNull(aws.region) para filtrar registros originados da AWS.

Tipos de Relacionamento

As entidades AWS usam estes tipos de relacionamento:

  • is_attached_to - Anexo exclusivo (ex.: volume para instância)
  • uses - Relação de dependência (ex.: instância usa grupo de segurança)
  • runs_on - Relação vertical (ex.: instância executa em AZ)
  • is_part_of - Composição (ex.: instância em cluster)
  • belongs_to - Agregação (ex.: serviço pertence ao cluster)
  • balances - Balanceamento de carga (ex.: grupo de destino balanceia instâncias)
  • balanced_by - Relação inversa de balanceamento de carga (ex.: balanceador de carga balanceado por grupo de destino)

Convenção de Nomenclatura de Chaves de Métricas AWS

A Dynatrace ingere métricas do AWS CloudWatch usando este padrão:

cloud.aws.<serviço>.<NomeDaMétrica>.By.<NomeDaDimensão>

O <serviço> é o nome do serviço AWS em minúsculas, <NomeDaMétrica> é o nome da métrica CloudWatch (preservando maiúsculas/minúsculas) e <NomeDaDimensão> é a dimensão CloudWatch.

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

Use timeseries, não fetch, para estas métricas. Agrupe por dt.smartscape_source.id para dividir por entidade.

→ Veja references/metrics-performance.md para o catálogo completo de métricas por serviço com modelos de consulta DQL.


Workflows Principais

1. Descoberta de Recursos AWS

Obtenha todos os recursos AWS por tipo:

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

Filtre por conta e região:

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

Usando tags para filtrar:

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

→ Para padrões completos de inventário de recursos, veja references/resource-management.md

2. Análise de Rede VPC

Liste todas as VPCs:

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

Encontre recursos em uma VPC:

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

Analise o uso de grupos de segurança:

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

→ Para rede VPC, veja references/vpc-networking-security.md
→ Para padrões de grupos de segurança, veja references/security-compliance.md

3. Monitoramento de Banco de Dados

Liste todas as instâncias RDS:

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

Encontre bancos de dados 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

Agrupe por tipo de mecanismo:

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 monitoramento de banco de dados, veja references/database-monitoring.md

4. Workloads Serverless e em Container

Liste funções Lambda:

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

Encontre serviços ECS em um cluster:

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

Liste clusters EKS:

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

→ Para serverless, veja references/serverless-containers.md
→ Para containers, veja references/serverless-containers.md

5. Topologia de Balanceador de Carga

Mapeamento completo do balanceador de carga para instâncias:

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 balanceamento de carga, veja references/load-balancing-api.md

6. Otimização de Custos

Encontre volumes EBS não anexados:

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

Analise custos 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 otimização de custos, veja references/cost-optimization.md

7. Segurança e Conformidade

Encontre bancos de dados acessíveis publicamente:

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

Raio de impacto do grupo de segurança:

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 segurança, veja references/security-compliance.md

8. Propriedade e Marcação de Recursos

Encontre recursos sem tag:

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

Alocação de custos por centro de custo:

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

→ Para propriedade de recursos, veja references/resource-ownership.md


Padrões Comuns de Consulta

PadrãoModelo
DescobertasmartscapeNodes "AWS_*" | fieldsAdd <atribs> | filter <cond> | summarize <agreg>
Análise de ConfigsmartscapeNodes "AWS_<T>" | parse aws.object, "JSON:awsjson" | fieldsAdd f = awsjson[configuration][campo]
NavegaçãosmartscapeNodes "AWS_<ORIGEM>" | traverse "<rel>", "AWS_<DEST>"
MultitiposmartscapeNodes "AWS_T1", "AWS_T2" | filter <cond> | summarize count(), by: {type}

Melhores Práticas

Otimização de Consulta

  1. Filtre cedo por conta e região
  2. Use tipos de entidade específicos (evite curingas "AWS_*" quando possível)
  3. Limite resultados com | limit N para exploração
  4. Use verificações isNotNull() antes de acessar campos aninhados

Análise de Configuração

  1. Sempre analise aws.object com o analisador JSON: parse aws.object, "JSON:awsjson"
  2. Use nomenclatura consistente de campos: fieldsAdd campoConfig = awsjson[configuration][campo]
  3. Verifique valores nulos após a análise
  4. Use toString() para objetos aninhados complexos

Campos de Segurança

  1. IDs de grupos de segurança são arrays — use contains() ou expand
  2. Analise aws.object para contexto de segurança detalhado
  3. Verifique publiclyAccessible, storageEncrypted e flags semelhantes
  4. Valide suposições de funções IAM

Estratégia de Marcação

  1. Use tags[TagName] para filtrar por valor de tag específico
  2. tags é um objeto JSON, não um array — use isNull(tags) para recursos sem tag, nunca arraySize(tags)
  3. Use isNull(tags[TagName]) para encontrar recursos sem uma tag específica
  4. Implemente convenções consistentes de nomenclatura de tags
  5. Acompanhe a cobertura de tags com operações summarize

Limitações e Notas

Limitações do Smartscape

  • A configuração do objeto AWS requer análise com parse aws.object, "JSON:awsjson"
  • As métricas AWS estão disponíveis como métricas Dynatrace usando a convenção de nomenclatura cloud.aws.* (veja Convenção de Nomenclatura de Métricas AWS)
  • A descoberta de recursos depende da configuração da integração AWS
  • A sincronização de tags pode ter pequenos atrasos

Navegação de Relacionamento

  • Use direction:backward para relacionamentos reversos (ex.: grupo de destino → balanceador de carga)
  • Use fieldsKeep para manter campos importantes durante a navegação
  • Acesse o histórico de navegação com dt.traverse.history[-N]
  • Topologias complexas podem exigir múltiplas operações traverse

Dicas Gerais

  • Use getNodeName() para nomes de recursos legíveis por humanos
  • Trate valores nulos com elegância usando isNotNull() e isNull()
  • Combine filtros de região e conta para ambientes grandes
  • Use countDistinct() para contagens únicas de recursos

Quando Carregar Referências

Esta skill usa divulgação progressiva. Comece aqui para 80% dos casos de uso. Carregue arquivos de referência para especificações detalhadas quando necessário.

Carregue vpc-networking-security.md quando:

  • Analisando topologia e conectividade VPC
  • Investigando configurações de grupos de segurança
  • Encontrando recursos por grupo de segurança
  • Solucionando problemas de interface de rede

Carregue database-monitoring.md quando:

  • Gerenciando instâncias e clusters RDS
  • Analisando distribuições de mecanismos de banco de dados
  • Verificando configurações Multi-AZ
  • Monitorando clusters de cache

Carregue serverless-containers.md quando:

  • Trabalhando com funções Lambda
  • Analisando implantações ECS/EKS
  • Investigando rede de containers
  • Planejando migrações serverless

Carregue load-balancing-api.md quando:

  • Mapeando topologias de balanceadores de carga
  • Analisando a saúde de grupos de destino
  • Trabalhando com API Gateway
  • Configurando CloudFront

Carregue messaging-event-streaming.md quando:

  • Gerenciando filas SQS e tópicos SNS
  • Analisando barramentos de eventos EventBridge
  • Trabalhando com Kinesis ou MSK
  • Monitorando Step Functions

Carregue resource-management.md quando:

  • Realizando auditorias de recursos
  • Analisando conformidade de tags
  • Encontrando recursos não anexados
  • Planejando distribuição regional

Carregue cost-optimization.md quando:

  • Identificando oportunidades de economia de custos
  • Analisando custos de armazenamento
  • Encontrando recursos não utilizados
  • Otimizando tipos de instância

Carregue capacity-planning.md quando:

  • Planejando expansões de capacidade
  • Analisando utilização de recursos
  • Monitorando uso de IPs de sub-rede
  • Dimensionando...

...

[truncado para tradução]

Habilidades Relacionadas