mcpField
D
dt-obs-gcp

dt-obs-gcp

github.com/dynatrace云与 DevOps1692.0k 次安装今天更新
代码仓库

关于 dt-obs-gcp

面向 Dynatrace 的 GCP 基础设施监控与分析 Skill,使用 Smartscape 和 DQL。它提供资源发现、配置解析、拓扑、安全和跨 GCP 项目归属分析的查询模式。

主要功能

  1. 01按类型和范围发现 GCP 资源
  2. 02从 JSON 解析资源配置
  3. 03遍历资源关系
  4. 04按标签对资源分组
  5. 05分析项目与区域层级

适用场景

  1. 01盘点 Compute Engine 或 GKE 资源
  2. 02检查资源的配置详情
  3. 03追踪网络与计算资源之间的关联
  4. 04按归属或成本分摊对资源分组

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dynatrace/dynatrace-for-ai --skill dt-obs-gcp

安装后在 Claude Code 中输入/dt-obs-gcp确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
compute-instances.md
iam-security.md
kubernetes-gke.md
messaging-pubsub.md
monitoring-logging.md
networking-dns.md
README.md
resource-management.md
resource-ownership.md
serverless-containers.md

详细介绍

GCP 云基础设施

使用 Dynatrace Smartscape 和 DQL 监控并分析 GCP 资源。查询 GCP 服务、管理组织层级、审计安全状况,并跟踪 GCP 基础设施中的资源所有权。

何时使用此技能

当用户需要在 Dynatrace 中处理 GCP 资源时,使用此技能。根据任务类型加载参考文件:

任务要加载的文件
清单和拓扑查询(无需额外文件 — 使用上面的核心模式)
Compute Engine 实例、机器类型、IP 地址加载 references/compute-instances.md
GKE 集群、节点池、Pod、部署、服务、RBAC加载 references/kubernetes-gke.md
Cloud Run 服务、修订版本、执行加载 references/serverless-containers.md
VPC 网络、子网、路由、DNS 记录加载 references/networking-dns.md
Pub/Sub 主题加载 references/messaging-pubsub.md
IAM 服务账号、角色、Secret Manager加载 references/iam-security.md
监控仪表板、日志记录、已保存的查询加载 references/monitoring-logging.md
GCP 项目、区域、组织层级加载 references/resource-management.md
资源所有权、GCP 标签、组织结构加载 references/resource-ownership.md

核心概念

实体类型

GCP 资源使用 GCP_* 前缀,可通过 smartscapeNodes 函数查询。所有 GCP 实体都会在 Dynatrace Smartscape 中自动发现并建模。

计算: GCP_COMPUTE_GOOGLEAPIS_COM_INSTANCE、GCP_COMPUTE_GOOGLEAPIS_COM_ADDRESS 网络: GCP_COMPUTE_GOOGLEAPIS_COM_NETWORK、GCP_COMPUTE_GOOGLEAPIS_COM_SUBNETWORK、GCP_COMPUTE_GOOGLEAPIS_COM_ROUTE、GCP_DNS_GOOGLEAPIS_COM_RESOURCERECORDSET Kubernetes(GKE): GCP_K8S_IO_POD、GCP_K8S_IO_NODE、GCP_K8S_IO_SERVICE、GCP_K8S_IO_SERVICEACCOUNT、GCP_K8S_IO_PERSISTENTVOLUMECLAIM、GCP_APPS_K8S_IO_DEPLOYMENT、GCP_APPS_K8S_IO_STATEFULSET、GCP_CONTAINER_GOOGLEAPIS_COM_NODEPOOL、GCP_RBAC_AUTHORIZATION_K8S_IO_CLUSTERROLEBINDING、GCP_RBAC_AUTHORIZATION_K8S_IO_ROLEBINDING 无服务器: GCP_RUN_GOOGLEAPIS_COM_SERVICE、GCP_RUN_GOOGLEAPIS_COM_REVISION、GCP_RUN_GOOGLEAPIS_COM_EXECUTION IAM 与安全: GCP_IAM_GOOGLEAPIS_COM_SERVICEACCOUNT、GCP_IAM_GOOGLEAPIS_COM_ROLE、GCP_SECRETMANAGER_GOOGLEAPIS_COM_SECRETVERSION 消息传递: GCP_PUBSUB_GOOGLEAPIS_COM_TOPIC 监控: GCP_MONITORING_GOOGLEAPIS_COM_DASHBOARD、GCP_LOGGING_GOOGLEAPIS_COM_SAVEDQUERY 基础设施: GCP_REGION

常见 GCP 字段

所有 GCP 实体都包含:

  • gcp.project.id — GCP 项目标识符
  • gcp.region — GCP 区域(例如,us-central1)
  • gcp.zone — GCP 可用区(例如,us-central1-a)
  • gcp.organization.id — GCP 组织标识符
  • gcp.resource.name — 资源名称
  • gcp.resource.type — 资源类型标识符
  • gcp.asset.type — GCP 资产类型
  • gcp.object — 包含完整资源配置的 JSON 数据块
GCP 组织层级

GCP 资源按以下层级组织:

  • 组织 — 顶层容器(gcp.organization.id)
  • 文件夹 — 组织内的逻辑分组
  • 项目 — 资源容器(gcp.project.id)
  • 区域/可用区 — 物理位置(gcp.region、gcp.zone)
实体命名约定

GCP 实体类型遵循 GCP_<SERVICE_API>_<RESOURCE> 模式:

  • 服务 API 对应 Google API 域名(例如,compute.googleapis.com → COMPUTE_GOOGLEAPIS_COM)
  • 资源表示具体的资源类型(例如,INSTANCE、NETWORK)

示例:

  • GCP_COMPUTE_GOOGLEAPIS_COM_INSTANCE — Compute Engine 虚拟机
  • GCP_K8S_IO_POD — GKE Pod
  • GCP_RUN_GOOGLEAPIS_COM_SERVICE — Cloud Run 服务

查询模式

所有 GCP 查询都基于四种核心模式。掌握这些模式后,可将其调整用于任何实体类型。

模式 1:资源发现

按类型列出资源,按项目/区域/可用区筛选,并汇总数量:

smartscapeNodes "GCP_COMPUTE_GOOGLEAPIS_COM_INSTANCE"
| fields name, gcp.project.id, gcp.region, gcp.zone, gcp.resource.name

若要列出所有 GCP 资源类型,请替换为 "GCP_*",并添加 | summarize count = count(), by: {type} | sort count desc。添加 | filter gcp.project.id == "<PROJECT_ID>" 或 | filter gcp.region == "<REGION>" 等筛选条件,以限定结果范围。

模式 2:配置解析

解析 gcp.object JSON,以获取详细的配置字段:

smartscapeNodes "GCP_COMPUTE_GOOGLEAPIS_COM_INSTANCE"
| parse gcp.object, "JSON:gcpjson"
| fieldsAdd machineType = gcpjson[configuration][resource][machineType],
            status = gcpjson[configuration][resource][status]
| fields name, gcp.project.id, machineType, status

GCP 配置字段嵌套在 gcpjson[configuration][resource][...] 下,包含主要资源属性;扩展属性则位于 gcpjson[configuration][additionalAttributes][...] 下。

模式 3:关系遍历

跟踪资源之间的关系:

smartscapeNodes "GCP_COMPUTE_GOOGLEAPIS_COM_INSTANCE"
| traverse "*", "GCP_COMPUTE_GOOGLEAPIS_COM_SUBNETWORK"
| fields name, gcp.project.id

由于 GCP 实体没有命名的关系类型,因此在遍历中使用 "*" 作为关系名称。使用 fieldsKeep 在遍历过程中保留字段,并使用 dt.traverse.history[-N] 访问祖先字段。

模式 4:基于标签的所有权

按 GCP 标签对资源分组,以跟踪所有权和组织结构:

smartscapeNodes "GCP_*"
| filter isNotNull(`tags:gcp_labels`)
| fields name, gcp.project.id, `tags:gcp_labels`

GCP 标签通过 tags:gcp_labels 字段公开,必须使用反引号语法访问。将 "GCP_*" 替换为特定类型,以限定到某项服务。


参考指南

当上述核心模式需要根据特定服务进行调整时,加载参考文件以执行详细查询。

参考文件加载时机主要内容
compute-instances.mdCompute Engine 虚拟机、机器类型、IP 地址、磁盘实例清单、机器类型分布、状态检查
kubernetes-gke.mdGKE 集群、节点池、Pod、部署、服务、RBAC集群拓扑、工作负载分布、RBAC 绑定
serverless-containers.mdCloud Run 服务、修订版本、执行记录服务清单、修订版本跟踪、执行分析
networking-dns.mdVPC 网络、子网、路由、DNS 记录网络拓扑、子网分析、路由表、DNS 记录集
messaging-pubsub.mdPub/Sub 主题主题清单、消息传递拓扑
iam-security.mdIAM 服务账号、角色、Secret Manager服务账号审计、角色分析、密钥版本跟踪
monitoring-logging.md监控信息板、日志记录、已保存的查询信息板清单、已保存查询分析
resource-management.mdGCP 项目、区域、组织层级项目清单、区域分布、层级映射
resource-ownership.md资源所有权、GCP 标签、组织结构基于标签的分组、项目级摘要、成本分摊

最佳实践

配置解析
  1. 始终使用 JSON 解析器解析 gcp.object:parse gcp.object, "JSON:gcpjson"
  2. 通过 gcpjson[configuration][resource][...] 访问主要资源属性
  3. 通过 gcpjson[configuration][additionalAttributes][...] 访问扩展属性
  4. 解析后使用 isNotNull() 检查空值
GCP 层级结构
  1. 组织 → 文件夹 → 项目 → 区域/可用区
  2. 使用 gcp.project.id 作为主要范围筛选条件
  3. 使用 gcp.organization.id 执行跨项目查询
  4. 使用 gcp.region 和 gcp.zone 执行基于位置的分析
实体命名
  1. 实体类型遵循 GCP_<SERVICE_API>_<RESOURCE> 格式
  2. 服务 API 对应 Google API 域名,其中的点和连字符替换为下划线
  3. 使用具体的实体类型(尽可能避免使用 "GCP_*" 通配符)
标签
  1. 必须使用反引号语法访问 GCP 标签:`tags:gcp_labels`
  2. 使用 isNotNull(tags:gcp_labels) 按标签筛选
  3. 使用汇总操作跟踪标签覆盖情况
关系遍历
  1. 使用 "*" 作为关系名称 — GCP 实体没有命名的关系类型
  2. 使用 fieldsKeep 在遍历过程中保留重要字段
  3. 使用 dt.traverse.history[-N] 访问遍历历史记录
  4. 复杂拓扑可能需要执行多次遍历操作

限制和说明

Smartscape 限制
  • Smartscape 数据反映最近一次扫描的结果;GCP 变更与 Dynatrace 可见性之间可能存在延迟
  • 并非所有 GCP 服务都表示为实体类型
  • 根据资源设置,某些配置字段可能为 null
  • 资源发现取决于 GCP 集成配置
GCP 专属说明
  • GCP 标签必须通过反引号语法访问:`tags:gcp_labels`
  • GCP 实体在关系遍历中使用 "*"(没有命名的关系类型)
  • GCP 对象配置需要使用 parse gcp.object, "JSON:gcpjson" 进行解析
  • 配置字段嵌套在 gcpjson[configuration][resource][...] 下(与 AWS 模式不同)
通用提示
  • 尽早按项目和区域筛选,以提升性能
  • 使用 isNotNull() 和 isNull() 妥善处理 null 值
  • 对于大型环境,结合项目和区域筛选
  • 使用 countDistinct() 统计唯一资源数量
  • 探索时使用 | limit N 限制结果数量

评论

支持 Markdown