关于 dt-obs-aws
dt-obs-aws 是使用 Dynatrace Smartscape 和 DQL 分析 AWS 基础设施的技能,适用于管理云资源和排查相关问题的人员。内容涵盖资源发现、拓扑、成本、安全与容量分析,并通过参考资料细化不同任务。
主要功能
- 01发现并筛选 AWS 资源
- 02分析 VPC 与资源关系
- 03查询数据库、容器和无服务器资源
- 04检查成本、安全与合规情况
- 05分析 CloudWatch 指标和事件
适用场景
- 01盘点指定区域的 EC2 实例
- 02查找未挂载的 EBS 卷
- 03识别可公开访问的数据库
- 04检查资源标签和子网 IP 使用情况
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ dynatrace/ dynatrace-for-ai --skill dt-obs-aws安装后在 Claude Code 中输入/dt-obs-aws确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/capacity-planning.mdcost-optimization.mddatabase-monitoring.mdevents.mdload-balancing-api.mdmessaging-event-streaming.mdmetrics-performance.mdresource-management.mdresource-ownership.mdsecurity-compliance.mdserverless-containers.mdvpc-networking-security.mdworkload-detection.md详细介绍
AWS 云基础设施
使用 Dynatrace Smartscape 和 DQL 监控并分析 AWS 资源。查询 AWS 服务、优化成本、管理安全性,并规划 AWS 基础设施的容量。
何时使用此技能
当用户需要在 Dynatrace 中处理 AWS 资源时,使用此技能。根据任务类型加载参考文件:
- 清单:“列出 us-east-1 中的所有 EC2 实例”
- 网络:“查找 VPC vpc-abc123 中的所有资源”
- 数据库:“列出所有启用了 Multi-AZ 的 RDS 实例”
- 无服务器:“显示可访问 VPC 的 Lambda 函数”
- 成本:“查找未挂载的 EBS 卷以节省成本”
- 安全性:“识别可公开访问的数据库”
- 合规性:“查找缺少 Environment 标签的资源”
- 容量:“分析子网 IP 使用率”
- 故障排查:“通过目标组映射负载均衡器与实例”
- 问题分析:“此 AWS 问题发生前有什么变化?”/“有哪些事件影响了此资源?”
- 工作负载上下文:“此实例是否位于负载均衡器之后、EKS 集群中,或由 ECS 管理?”
- 事件:“近期是否有任何影响此资源的 AWS 事件?”
核心概念
实体类型
AWS 资源使用 AWS_* 前缀,可通过 smartscapeNodes 函数查询。Dynatrace Smartscape 会自动发现并建模所有 AWS 实体。
计算: AWS_EC2_INSTANCE、AWS_LAMBDA_FUNCTION、AWS_ECS_CLUSTER、AWS_ECS_SERVICE、AWS_EKS_CLUSTER
网络: AWS_EC2_VPC、AWS_EC2_SUBNET、AWS_EC2_SECURITYGROUP、AWS_EC2_NATGATEWAY、AWS_EC2_VPCENDPOINT
数据库: AWS_RDS_DBINSTANCE、AWS_RDS_DBCLUSTER、AWS_DYNAMODB_TABLE、AWS_ELASTICACHE_CACHECLUSTER
存储: AWS_S3_BUCKET、AWS_EC2_VOLUME、AWS_EFS_FILESYSTEM
负载均衡: AWS_ELASTICLOADBALANCINGV2_LOADBALANCER、AWS_ELASTICLOADBALANCINGV2_TARGETGROUP
消息传递: AWS_SQS_QUEUE、AWS_SNS_TOPIC、AWS_EVENTS_EVENTBUS、AWS_MSK_CLUSTER
常见 AWS 字段
所有 AWS 实体都包含:
aws.account.id- AWS 账户标识符aws.region- AWS 区域(例如,us-east-1)aws.resource.id- 唯一资源标识符aws.resource.name- 资源名称aws.arn- Amazon 资源名称aws.vpc.id- VPC 标识符(适用于已连接 VPC 的资源)aws.subnet.id- 子网标识符aws.availability_zone- 可用区aws.security_group.id- 安全组 ID(数组)tags- 资源标签(使用tags[TagName])
日志和 Bizevents 中的 AWS 字段
源自 AWS 的日志(fetch logs)包含以下字段——无需探索:
aws.region、aws.account.id、aws.service、aws.log_group、aws.log_stream- 以及标准日志字段:
content、loglevel、timestamp、k8s.*、dt.smartscape.*
源自 AWS 的业务事件(fetch bizevents)包含:
aws.region、aws.account.id、event.type、event.provider
使用 filter isNotNull(aws.region) 将范围限定为源自 AWS 的记录。
关系类型
AWS 实体使用以下关系类型:
is_attached_to- 独占式附加(例如,卷附加到实例)uses- 依赖关系(例如,实例使用安全组)runs_on- 垂直关系(例如,实例运行在可用区上)is_part_of- 组成关系(例如,实例属于某个集群)belongs_to- 聚合关系(例如,服务属于某个集群)balances- 负载均衡关系(例如,目标组对实例进行负载均衡)balanced_by- 反向负载均衡关系(例如,负载均衡器由目标组进行负载均衡)
AWS 指标键命名约定
Dynatrace 按照以下模式采集 AWS CloudWatch 指标:
cloud.aws.<service>.<MetricName>.By.<DimensionName>
<service> 是小写的 AWS 服务名称,<MetricName> 是 CloudWatch 指标名称(保留大小写),<DimensionName> 是 CloudWatch 维度。
示例:cloud.aws.ec2.CPUUtilization.By.InstanceId、cloud.aws.lambda.Invocations.By.FunctionName、cloud.aws.rds.CPUUtilization.By.DBInstanceIdentifier
对于这些指标,请使用 timeseries,而不是 fetch。按 dt.smartscape_source.id 分组,以便按实体拆分。
→ 如需查看按服务划分的完整指标目录和 DQL 查询模板,请参阅 references/metrics-performance.md。
关键工作流
1. AWS 资源发现
按类型获取所有 AWS 资源:
smartscapeNodes "AWS_*"
| summarize count = count(), by: {type}
| sort count desc
按账户和区域筛选:
smartscapeNodes "AWS_*"
| filter aws.account.id == "123456789012" and aws.region == "us-east-1"
| fields type, name, aws.resource.id
使用标签进行筛选:
smartscapeNodes "AWS_*"
| filter tags[Environment] == "production"
| summarize count = count(), by: {type, aws.region}
→ 如需查看完整的资源清单模式,请参阅 references/resource-management.md
2. VPC 网络分析
列出所有 VPC:
smartscapeNodes "AWS_EC2_VPC"
| fields name, aws.account.id, aws.region, aws.vpc.id
查找 VPC 中的资源:
smartscapeNodes "AWS_*"
| filter aws.vpc.id == "vpc-0be61db7c5d2d1bd1"
| summarize resource_count = count(), by: {type, aws.subnet.id}
| sort resource_count desc
分析安全组的使用情况:
smartscapeNodes "AWS_EC2_INSTANCE"
| filter contains(aws.security_group.id, "sg-abc123")
| fields name, aws.resource.id, aws.vpc.id, aws.subnet.id
→ 如需了解 VPC 网络,请参阅 references/vpc-networking-security.md
→ 如需了解安全组模式,请参阅 references/security-compliance.md
3. 数据库监控
列出所有 RDS 实例:
smartscapeNodes "AWS_RDS_DBINSTANCE"
| fields name, aws.account.id, aws.region, aws.vpc.id, aws.availability_zone
查找 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
按引擎类型分组:
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
→ 如需了解数据库监控,请参阅 references/database-monitoring.md
4. 无服务器和容器工作负载
列出 Lambda 函数:
smartscapeNodes "AWS_LAMBDA_FUNCTION"
| fields name, aws.account.id, aws.region, aws.vpc.id
查找集群中的 ECS 服务:
smartscapeNodes "AWS_ECS_SERVICE"
| traverse "belongs_to", "AWS_ECS_CLUSTER"
| fields name, aws.resource.id, aws.region
列出 EKS 集群:
smartscapeNodes "AWS_EKS_CLUSTER"
| fields name, aws.account.id, aws.region, aws.vpc.id
→ 如需了解无服务器,请参阅 references/serverless-containers.md
→ 如需了解容器,请参阅 references/serverless-containers.md
5. 负载均衡器拓扑
完整的负载均衡器到实例映射:
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]
→ 如需了解负载均衡,请参阅 references/load-balancing-api.md
6. 成本优化
查找未附加的 EBS 卷:
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 成本:
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
→ 如需了解成本优化,请参阅 references/cost-optimization.md
7. 安全与合规
查找可公开访问的数据库:
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
安全组影响范围:
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
→ 如需了解安全,请参阅 references/security-compliance.md
8. 资源归属与标签
查找未标记的资源:
smartscapeNodes "AWS_*"
| filter isNull(tags)
| fields type, name, aws.resource.id, aws.account.id, aws.region
按成本中心分配成本:
smartscapeNodes "AWS_*"
| filter isNotNull(tags[CostCenter])
| summarize resource_count = count(), by: {tags[CostCenter], type}
| sort resource_count desc
→ 如需了解资源归属,请参阅 references/resource-ownership.md
常见查询模式
| 模式 | 模板 |
|---|---|
| 发现 | smartscapeNodes "AWS_*" | fieldsAdd <attrs> | filter <cond> | summarize <agg> |
| 配置解析 | smartscapeNodes "AWS_<T>" | parse aws.object, "JSON:awsjson" | fieldsAdd f = awsjson[configuration][field] |
| 遍历 | smartscapeNodes "AWS_<SRC>" | traverse "<rel>", "AWS_<TGT>" |
| 多类型 | smartscapeNodes "AWS_T1", "AWS_T2" | filter <cond> | summarize count(), by: {type} |
最佳实践
查询优化
- 尽早按账户和区域筛选
- 使用特定实体类型(尽可能避免使用
"AWS_*"通配符) - 探索时使用
| limit N限制结果 - 访问嵌套字段前使用
isNotNull()检查
配置解析
- 始终使用 JSON 解析器解析
aws.object:parse aws.object, "JSON:awsjson" - 使用一致的字段命名:
fieldsAdd configField = awsjson[configuration][field] - 解析后检查空值
- 对复杂嵌套对象使用
toString()
安全字段
- 安全组 ID 是数组 — 使用
contains()或expand - 解析
aws.object,获取详细的安全上下文 - 检查
publiclyAccessible、storageEncrypted等标志 - 验证 IAM 角色的权限代入
标记策略
- 使用
tags[TagName]按特定标记值筛选 tags是 JSON 对象,而非数组 — 使用isNull(tags)查找未添加标记的资源,切勿使用arraySize(tags)- 使用
isNull(tags[TagName])查找缺少特定标记的资源 - 实施一致的标记命名规范
- 使用 summarize 操作跟踪标记覆盖率
限制和说明
Smartscape 的限制
- AWS 对象配置需要使用
parse aws.object, "JSON:awsjson"进行解析 - AWS 指标可作为 Dynatrace 指标使用,并遵循
cloud.aws.*命名约定(参见 AWS 指标命名约定) - 资源发现取决于 AWS 集成配置
- 标记同步可能会略有延迟
关系遍历
- 对于反向关系(例如,目标组 → 负载均衡器),使用
direction:backward - 使用
fieldsKeep在遍历过程中保留重要字段 - 使用
dt.traverse.history[-N]访问遍历历史记录 - 复杂的拓扑可能需要多次 traverse 操作
一般提示
- 使用
getNodeName()获取易读的资源名称 - 使用
isNotNull()和isNull()妥善处理空值 - 对于大型环境,组合使用区域和账户筛选条件
- 使用
countDistinct()统计唯一资源的数量
何时加载参考资料
此技能采用渐进式披露。这里涵盖了 80% 的使用场景。需要详细规范时,再加载参考文件。
在以下情况下加载 vpc-networking-security.md:
- 分析 VPC 拓扑和连通性
- 调查安全组配置
- 按安全组查找资源
- 排查网络接口问题
在以下情况下加载 database-monitoring.md:
- 管理 RDS 实例和集群
- 分析数据库引擎分布
- 检查 Multi-AZ 配置
- 监控缓存集群
在以下情况下加载 serverless-containers.md:
- 使用 Lambda 函数
- 分析 ECS/EKS 部署
- 调查容器网络
- 规划无服务器迁移
在以下情况下加载 load-balancing-api.md:
- 绘制负载均衡器拓扑
- 分析目标组运行状况
- 使用 API Gateway
- 配置 CloudFront
在以下情况下加载 messaging-event-streaming.md:
- 管理 SQS 队列和 SNS 主题
- 分析 EventBridge 事件总线
- 使用 Kinesis 或 MSK
- 监控 Step Functions
在以下情况下加载 resource-management.md:
- 开展资源审计
- 分析标记合规性
- 查找未关联的资源
- 规划区域分布
在以下情况下加载 cost-optimization.md:
- 识别节省成本的机会
- 分析存储成本
- 查找未使用的资源
- 优化实例类型
在以下情况下加载 capacity-planning.md:
- 规划容量扩展
- 分析资源利用率
- 监控子网 IP 使用情况
- 确定 Auto Scaling 组的规模
在以下情况下加载 security-compliance.md:
- 开展安全审计
- 检查加密状态
- 分析 IAM 角色
- 查找公网资源
在以下情况下加载 resource-ownership.md:
- 实施成本分摊
- 跟踪资源所有权
- 按团队分配成本
- 管理多账户环境
在以下情况下加载 events.md:
- 调查问题发生前或发生期间有哪些变更
- 检查最近的 CloudFormation 堆栈部署
- 查看 AWS Auto Scaling 活动(缩容/扩容)
- 检查影响某项资源的 AWS Health 服务事件
在以下情况下加载 workload-detection.md:
- 确定 EC2 实例的编排方式(ECS、EKS、Batch、ASG 或独立运行)
- 遵循取决于工作负载模式的解决路径
- 了解实例故障的影响范围
参考资料
- vpc-networking-security.md - VPC 基础设施、安全组和网络连接
- database-monitoring.md - RDS、DynamoDB、ElastiCache 和 Redshift 监控
- serverless-containers.md - Lambda、ECS、EKS 和 App Runner 工作负载
- load-balancing-api.md - 负载均衡器、API Gateway 和 CloudFront
- messaging-event-streaming.md - SQS、SNS、EventBridge、Kinesis 和 MSK
- resource-management.md - 资源清单和生命周期管理
- cost-optimization.md - 成本节省和支出优化
- capacity-planning.md - 容量分析和增长规划
- security-compliance.md - 安全配置和合规性监控
- resource-ownership.md - 成本分摊和所有权跟踪
- events.md - AWS AutoScaling、Health 和 CloudFormation 事件,用于问题时间线分析
- workload-detection.md - 确定 EC2 实例的编排方式(LB、ASG、ECS、EKS、Batch)