Loading...
Loading...
AWS cloud resources including EC2, RDS, Lambda, ECS/EKS, VPC networking, load balancers, databases, serverless, messaging, and cost optimization. Monitor AWS infrastructure, analyze resource usage, optimize costs, and ensure security compliance.
npx skill4agent add dynatrace/dynatrace-for-ai dt-obs-aws| Task | File to load |
|---|---|
| Inventory and topology queries | (no additional file — use core patterns above) |
| Query AWS metric timeseries (CPU, errors, latency) | Load |
| VPC topology, security groups, subnet analysis | Load |
| RDS, DynamoDB, ElastiCache investigation | Load |
| Lambda, ECS, EKS investigation | Load |
| ALB/NLB topology, API Gateway | Load |
| SQS, SNS, EventBridge, MSK | Load |
| Unattached resources, tag compliance, lifecycle | Load |
| Cost savings, unused resources | Load |
| Capacity headroom, subnet IP, ASG limits | Load |
| Security audit, encryption, public access | Load |
| SG rule analysis (0.0.0.0/0, open ports) | Load |
| S3 public access, bucket encryption | Load |
| EBS volume encryption audit | Load |
| Cost allocation, chargeback, ownership | Load |
AWS_*smartscapeNodesAWS_EC2_INSTANCEAWS_LAMBDA_FUNCTIONAWS_ECS_CLUSTERAWS_ECS_SERVICEAWS_EKS_CLUSTERAWS_EC2_VPCAWS_EC2_SUBNETAWS_EC2_SECURITYGROUPAWS_EC2_NATGATEWAYAWS_EC2_VPCENDPOINTAWS_RDS_DBINSTANCEAWS_RDS_DBCLUSTERAWS_DYNAMODB_TABLEAWS_ELASTICACHE_CACHECLUSTERAWS_S3_BUCKETAWS_EC2_VOLUMEAWS_EFS_FILESYSTEMAWS_ELASTICLOADBALANCINGV2_LOADBALANCERAWS_ELASTICLOADBALANCINGV2_TARGETGROUPAWS_SQS_QUEUEAWS_SNS_TOPICAWS_EVENTS_EVENTBUSAWS_MSK_CLUSTERaws.account.idaws.regionaws.resource.idaws.resource.nameaws.arnaws.vpc.idaws.subnet.idaws.availability_zoneaws.security_group.idtagstags[TagName]is_attached_tousesruns_onis_part_ofbelongs_tobalancesbalanced_bycloud.aws.<service>.<MetricName>.By.<DimensionName><service><MetricName><DimensionName>| CloudWatch metric | Dynatrace metric key |
|---|---|
| |
| |
| |
| |
| CloudWatch metric | Dynatrace metric key |
|---|---|
RDS | |
Lambda | |
SQS | |
ELB | |
timeseries cpu = avg(cloud.aws.ec2.CPUUtilization.By.InstanceId),
by: {dt.smartscape_source.id},
from: now()-1h
| limit 10smartscapeNodes "AWS_*"
| filter aws.account.id == "<AWS_ACCOUNT_ID>" and aws.region == "<AWS_REGION>"
| summarize count = count(), by: {type}
| sort count desc"AWS_*""AWS_EC2_INSTANCE"| fields name, aws.account.id, aws.region, ...tags[TagName]aws.objectsmartscapeNodes "AWS_RDS_DBINSTANCE"
| parse aws.object, "JSON:awsjson"
| fieldsAdd engine = awsjson[configuration][engine]
| summarize db_count = count(), by: {engine, aws.region}instanceTypestate[name]networkInterfaces[0][association][publicIp]enginemultiAZpubliclyAccessiblestorageEncrypteddbInstanceClassstorageTypevolumeTypesizestateruntimememorySizeschemednsNamekeyStatekeyUsageminSizemaxSizedesiredCapacityavailableIpAddressCountcidrBlockversioningConfiguration[status]securityGroupsarraySize()smartscapeNodes "AWS_ELASTICLOADBALANCINGV2_LOADBALANCER"
| parse aws.object, "JSON:awsjson"
| fieldsAdd dnsName = awsjson[configuration][dnsName], scheme = awsjson[configuration][scheme]
| 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]traverse "balanced_by", "AWS_ELASTICLOADBALANCINGV2_TARGETGROUP", direction:backwardtraverse "balances", "AWS_EC2_INSTANCE"traverse "balances", "AWS_LAMBDA_FUNCTION"traverse "belongs_to", "AWS_ECS_CLUSTER"traverse "uses", "AWS_ECS_TASKDEFINITION"traverse "is_part_of", "AWS_RDS_DBCLUSTER"traverse "uses", "AWS_KMS_KEY"traverse "uses", "AWS_EC2_SECURITYGROUP"traverse "runs_on", "AWS_AVAILABILITY_ZONE"traverse "is_attached_to", "AWS_EC2_SUBNET"traverse "is_attached_to", "AWS_EC2_VPC"traverse "is_attached_to", "AWS_EC2_VOLUME", direction: backwardtraverse "uses", "AWS_IAM_ROLE"traverse "uses", "AWS_APIGATEWAYV2_INTEGRATION", direction: backwardtraverse "runs_on", "HOST", direction: backwardsummarize count(), by: {sg.name}fieldsKeepdt.traverse.history[-N]smartscapeNodes "AWS_*"
| filter isNotNull(tags[<TAG_NAME>])
| summarize resource_count = count(), by: {tags[<TAG_NAME>], type}
| sort resource_count descCostCenterOwnerTeamProjectEnvironmentApplicationDepartmentBusinessUnit"AWS_*"| filter arraySize(tags) == 0| Reference | When to load | Key content |
|---|---|---|
| vpc-networking-security.md | VPC topology, security groups, subnets, NAT, VPN, peering | VPC resource mapping, SG blast radius, public IP detection |
| database-monitoring.md | RDS, DynamoDB, ElastiCache, Redshift | Multi-AZ checks, engine distribution, subnet groups, dependencies |
| serverless-containers.md | Lambda, ECS, EKS, App Runner | VPC-attached functions, service-to-cluster mapping, container networking |
| load-balancing-api.md | ALB/NLB topology, API Gateway, CloudFront | LB→TG→Instance traversal, listener config, API stage management |
| messaging-event-streaming.md | SQS, SNS, EventBridge, Kinesis, MSK | Queue/topic inventory, streaming analysis, name pattern matching |
| resource-management.md | Resource audits, tag compliance, lifecycle | Unattached resources, deleted resources, tag coverage analysis |
| cost-optimization.md | Cost savings, unused resources, sizing | EBS costs, instance types, runtime distribution, snapshot analysis |
| capacity-planning.md | Capacity analysis, scaling, IP utilization | ASG headroom, subnet IP counts, ECS desired vs running |
| security-compliance.md | Security audits, encryption, public access | SG rule analysis (0.0.0.0/0, open ports), S3 public access block, EBS encryption, SG blast radius, public DB/LB detection, IAM roles |
| resource-ownership.md | Chargeback, ownership, cost allocation | Tag-based grouping, multi-account summaries |
| events.md | Load to check Auto Scaling, Health, and CloudFormation events | CloudFormation, Auto Scaling, AWS Health events |
| workload-detection.md | Load to determine orchestration context and resolution path | LB, ASG, ECS, EKS, Batch detection for blast radius analysis |
| metrics-performance.md | Load to query metric timeseries for a specific resource | DQL timeseries patterns for EC2, Lambda, RDS, SQS, ELB, ECS, DynamoDB |
"AWS_*"| limit NisNotNull()aws.objectparse aws.object, "JSON:awsjson"fieldsAdd configField = awsjson[configuration][field]toString()contains()expandaws.objectpubliclyAccessiblestorageEncryptedtags[TagName]arraySize(tags)parse aws.object, "JSON:awsjson"cloud.aws.*direction:backwardfieldsKeepdt.traverse.history[-N]getNodeName()isNotNull()isNull()countDistinct()