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 AWSaws.region- Região AWS (ex.: us-east-1)aws.resource.id- Identificador único do recursoaws.resource.name- Nome do recursoaws.arn- Nome do Recurso da Amazon (ARN)aws.vpc.id- Identificador da VPC (para recursos anexados à VPC)aws.subnet.id- Identificador da sub-redeaws.availability_zone- Zona de disponibilidadeaws.security_group.id- IDs dos grupos de segurança (array)tags- Tags do recurso (usetags[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ão | Modelo |
|---|---|
| Descoberta | smartscapeNodes "AWS_*" | fieldsAdd <atribs> | filter <cond> | summarize <agreg> |
| Análise de Config | smartscapeNodes "AWS_<T>" | parse aws.object, "JSON:awsjson" | fieldsAdd f = awsjson[configuration][campo] |
| Navegação | smartscapeNodes "AWS_<ORIGEM>" | traverse "<rel>", "AWS_<DEST>" |
| Multitipo | smartscapeNodes "AWS_T1", "AWS_T2" | filter <cond> | summarize count(), by: {type} |
Melhores Práticas
Otimização de Consulta
- Filtre cedo por conta e região
- Use tipos de entidade específicos (evite curingas
"AWS_*"quando possível) - Limite resultados com
| limit Npara exploração - Use verificações
isNotNull()antes de acessar campos aninhados
Análise de Configuração
- Sempre analise
aws.objectcom o analisador JSON:parse aws.object, "JSON:awsjson" - Use nomenclatura consistente de campos:
fieldsAdd campoConfig = awsjson[configuration][campo] - Verifique valores nulos após a análise
- Use
toString()para objetos aninhados complexos
Campos de Segurança
- IDs de grupos de segurança são arrays — use
contains()ouexpand - Analise
aws.objectpara contexto de segurança detalhado - Verifique
publiclyAccessible,storageEncryptede flags semelhantes - Valide suposições de funções IAM
Estratégia de Marcação
- Use
tags[TagName]para filtrar por valor de tag específico tagsé um objeto JSON, não um array — useisNull(tags)para recursos sem tag, nuncaarraySize(tags)- Use
isNull(tags[TagName])para encontrar recursos sem uma tag específica - Implemente convenções consistentes de nomenclatura de tags
- 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:backwardpara relacionamentos reversos (ex.: grupo de destino → balanceador de carga) - Use
fieldsKeeppara 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()eisNull() - 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]