mcpField
D
dt-obs-azure

dt-obs-azure

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

关于 dt-obs-azure

面向 Dynatrace 的 Azure 基础设施 Skill,通过 Smartscape 和 DQL 查询与分析资源。内容涵盖资源清单、各类服务监控、安全、归属、成本和容量任务。

主要功能

  1. 01发现 Azure 资源与拓扑
  2. 02查询 Azure 指标时间序列
  3. 03检查资源关系
  4. 04审计安全与标签合规性
  5. 05分析成本和容量

适用场景

  1. 01按订阅或区域盘点资源
  2. 02调查 Azure 数据库性能
  3. 03检查网络暴露面和安全设置
  4. 04识别未使用资源及容量余量

安装

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

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

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

包含的文件

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

references/
capacity-planning.md
cost-optimization.md
database-monitoring.md
load-balancing-api.md
messaging-integration.md
metrics-performance.md
README.md
resource-management.md
resource-ownership.md
security-compliance.md
serverless-containers.md
storage-monitoring.md
vnet-networking-security.md
workload-detection.md

详细介绍

Azure 云基础设施

使用 Dynatrace Smartscape 和 DQL 监控和分析 Azure 资源。查询 Azure 服务、审计安全性、管理组织层级,并规划 Azure 基础设施的容量。

何时使用此技能

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

任务要加载的文件
清单和拓扑查询(无需其他文件——使用下方的核心模式)
查询 Azure 指标时间序列(CPU、延迟、吞吐量)加载 references/metrics-performance.md
VNet 拓扑、子网、NSG、公共 IP、VPN、对等互连加载 references/vnet-networking-security.md
Azure SQL、Cosmos DB、PostgreSQL、Redis 调查加载 references/database-monitoring.md
Functions、App Service、AKS 基础设施、Container Apps加载 references/serverless-containers.md
Azure LB、Application Gateway、Front Door、API Management加载 references/load-balancing-api.md
WAF 规则分析、误报调查加载 references/load-balancing-api.md
Event Hubs、Service Bus、Event Grid加载 references/messaging-integration.md
Storage Accounts、Blob、File、Queue、Table加载 references/storage-monitoring.md
未附加的资源、标签合规性、生命周期加载 references/resource-management.md
节省成本、未使用的资源、SKU 分析加载 references/cost-optimization.md
容量余量、VMSS 缩放、配额加载 references/capacity-planning.md
安全审计、加密、公共访问、Key Vault加载 references/security-compliance.md
NSG 规则分析(0.0.0.0/0、开放端口)加载 references/security-compliance.md
Storage account 加密/公共访问审计加载 references/security-compliance.md
成本分摊、分摊计费、所有权加载 references/resource-ownership.md
确定编排上下文(AKS、VMSS、独立运行)加载 references/workload-detection.md

核心概念

实体类型

Azure 资源使用 AZURE_* 前缀,可通过 smartscapeNodes 函数查询。Dynatrace Smartscape 会自动发现并建模所有 Azure 实体。实体类型名称源自 ARM 资源提供程序路径:/Microsoft.Compute/virtualMachines 会转换为 AZURE_MICROSOFT_COMPUTE_VIRTUALMACHINES。子资源会以下划线追加:/Microsoft.Sql/servers/databases 会转换为 AZURE_MICROSOFT_SQL_SERVERS_DATABASES。

计算: AZURE_MICROSOFT_COMPUTE_VIRTUALMACHINES、AZURE_MICROSOFT_COMPUTE_VIRTUALMACHINESCALESETS、AZURE_MICROSOFT_COMPUTE_VIRTUALMACHINESCALESETS_VIRTUALMACHINES、AZURE_MICROSOFT_COMPUTE_DISKS、AZURE_MICROSOFT_COMPUTE_SSHPUBLICKEYS、AZURE_MICROSOFT_COMPUTE_VIRTUALMACHINES_EXTENSIONS 网络: AZURE_MICROSOFT_NETWORK_VIRTUALNETWORKS、AZURE_MICROSOFT_NETWORK_VIRTUALNETWORKS_SUBNETS、AZURE_MICROSOFT_NETWORK_NETWORKSECURITYGROUPS、AZURE_MICROSOFT_NETWORK_PUBLICIPADDRESSES、AZURE_MICROSOFT_NETWORK_NETWORKINTERFACES、AZURE_MICROSOFT_NETWORK_LOADBALANCERS、AZURE_MICROSOFT_NETWORK_APPLICATIONGATEWAYS、AZURE_MICROSOFT_NETWORK_VIRTUALNETWORKGATEWAYS、AZURE_MICROSOFT_NETWORK_CONNECTIONS、AZURE_MICROSOFT_NETWORK_EXPRESSROUTECIRCUITS 数据库: AZURE_MICROSOFT_SQL_SERVERS、AZURE_MICROSOFT_SQL_SERVERS_DATABASES、AZURE_MICROSOFT_CACHE_REDIS、AZURE_MICROSOFT_CACHE_REDISENTERPRISE、AZURE_MICROSOFT_DOCUMENTDB_DATABASEACCOUNTS 存储: AZURE_MICROSOFT_STORAGE_STORAGEACCOUNTS、AZURE_MICROSOFT_STORAGE_STORAGEACCOUNTS_BLOBSERVICES_CONTAINERS、AZURE_MICROSOFT_STORAGE_STORAGEACCOUNTS_FILESERVICES_SHARES、AZURE_MICROSOFT_STORAGE_STORAGEACCOUNTS_QUEUESERVICES_QUEUES、AZURE_MICROSOFT_STORAGE_STORAGEACCOUNTS_TABLESERVICES_TABLES Kubernetes/容器: AZURE_MICROSOFT_CONTAINERSERVICE_MANAGEDCLUSTERS、AZURE_MICROSOFT_CONTAINERSERVICE_MANAGEDCLUSTERS_AGENTPOOLS、AZURE_MICROSOFT_CONTAINERREGISTRY_REGISTRIES、AZURE_MICROSOFT_APP_CONTAINERAPPS、AZURE_MICROSOFT_APP_MANAGEDENVIRONMENTS、AZURE_MICROSOFT_APP_JOBS 应用服务: AZURE_MICROSOFT_WEB_SITES、AZURE_MICROSOFT_WEB_SERVERFARMS、AZURE_MICROSOFT_WEB_SITES_FUNCTIONS 消息传递: AZURE_MICROSOFT_EVENTHUB_NAMESPACES、AZURE_MICROSOFT_EVENTHUB_NAMESPACES_EVENTHUBS、AZURE_MICROSOFT_SERVICEBUS_NAMESPACES、AZURE_MICROSOFT_SERVICEBUS_NAMESPACES_QUEUES、AZURE_MICROSOFT_SERVICEBUS_NAMESPACES_TOPICS、AZURE_MICROSOFT_SERVICEBUS_NAMESPACES_TOPICS_SUBSCRIPTIONS 安全/身份: AZURE_MICROSOFT_KEYVAULT_VAULTS、AZURE_MICROSOFT_MANAGEDIDENTITY_USERASSIGNEDIDENTITIES 监控: AZURE_MICROSOFT_OPERATIONALINSIGHTS_WORKSPACES、AZURE_MICROSOFT_INSIGHTS_COMPONENTS API 管理: AZURE_MICROSOFT_APIMANAGEMENT_SERVICE

Azure 组织层级

Azure 资源按三级层级组织:租户 > 订阅 > 资源组。每个资源都属于一个订阅中的一个资源组。使用以下字段限定查询范围:

filter azure.subscription == "08b9810e-..."
filter azure.resource.group == "my-rg"
filter azure.location == "eastus"

组合使用这些筛选条件,可精确限定范围:

smartscapeNodes "AZURE_*"
| filter azure.subscription == "<SUBSCRIPTION_ID>"
    and azure.resource.group == "<RESOURCE_GROUP>"
    and azure.location == "<REGION>"
| summarize count = count(), by: {type}
| sort count desc

查看环境中的组织结构明细:

smartscapeNodes "AZURE_*"
| summarize resource_count = count(), by: {azure.subscription, azure.resource.group}
| sort resource_count desc
常见 Azure 字段

所有 Azure 实体都包含:

  • azure.subscription — Azure 订阅 GUID
  • azure.resource.group — 资源组名称
  • azure.location — Azure 区域(例如,eastus、polandcentral)
  • azure.resourceType — ARM 资源类型(例如,microsoft.compute/virtualmachines)
  • azure.provisioning_state — 预配状态(例如,Succeeded)
  • azure.object — 完整的 ARM 资源 JSON(参见使用 azure.object 解析配置)
  • cloud.provider — 始终为 azure
  • tags — 资源标签(使用 tags[`key`])

某些实体类型还包含:

  • azure.resourceId — 完整的 ARM 资源 ID(VM 和其他部分资源)
  • azure.resourceName — 资源名称(VM 和其他部分资源)
  • azure.availabilityZones — 可用区列表(VM)
关系类型

可使用 traverse 遍历 Azure 实体之间的关系。Azure 实体不会填充 dt.traverse.relationship 字段,因此所有遍历命令中的关系名称都必须使用 "*"。

关键遍历关系:

  • VM → 磁盘: traverse "*", "AZURE_MICROSOFT_COMPUTE_DISKS"
  • VM → NIC: traverse "*", "AZURE_MICROSOFT_NETWORK_NETWORKINTERFACES"
  • VM → VMSS: traverse "*", "AZURE_MICROSOFT_COMPUTE_VIRTUALMACHINESCALESETS"
  • VM → 可用性区域: traverse "*", "AZURE_MICROSOFT_RESOURCES_LOCATIONS_AVAILABILITYZONES"
  • VM ← 扩展: traverse "*", "AZURE_MICROSOFT_COMPUTE_VIRTUALMACHINES_EXTENSIONS", direction:backward
  • VMSS → AKS 集群: traverse "*", "AZURE_MICROSOFT_CONTAINERSERVICE_MANAGEDCLUSTERS"
  • VMSS → 子网: traverse "*", "AZURE_MICROSOFT_NETWORK_VIRTUALNETWORKS_SUBNETS"
  • VMSS → NSG: traverse "*", "AZURE_MICROSOFT_NETWORK_NETWORKSECURITYGROUPS"
  • VMSS → LB 后端池: traverse "*", "AZURE_MICROSOFT_NETWORK_LOADBALANCERS_BACKENDADDRESSPOOLS"
  • 子网 → VNet: traverse "*", "AZURE_MICROSOFT_NETWORK_VIRTUALNETWORKS"
  • 子网 → NSG: traverse "*", "AZURE_MICROSOFT_NETWORK_NETWORKSECURITYGROUPS"
  • 子网 ← VMSS: traverse "*", "AZURE_MICROSOFT_COMPUTE_VIRTUALMACHINESCALESETS", direction:backward
  • NSG ← NIC: traverse "*", "AZURE_MICROSOFT_NETWORK_NETWORKINTERFACES", direction:backward
  • NSG ← 子网: traverse "*", "AZURE_MICROSOFT_NETWORK_VIRTUALNETWORKS_SUBNETS", direction:backward
  • LB → 后端池: traverse "*", "AZURE_MICROSOFT_NETWORK_LOADBALANCERS_BACKENDADDRESSPOOLS"
  • LB → 前端 IP: traverse "*", "AZURE_MICROSOFT_NETWORK_LOADBALANCERS_FRONTENDIPCONFIGURATIONS"
  • LB → LB 规则: traverse "*", "AZURE_MICROSOFT_NETWORK_LOADBALANCERS_LOADBALANCINGRULES"
  • SQL Server ← SQL 数据库: traverse "*", "AZURE_MICROSOFT_SQL_SERVERS_DATABASES", direction:backward
  • 存储帐户 ← Blob 容器: traverse "*", "AZURE_MICROSOFT_STORAGE_STORAGEACCOUNTS_BLOBSERVICES_CONTAINERS", direction:backward
  • 存储帐户 ← 文件共享: traverse "*", "AZURE_MICROSOFT_STORAGE_STORAGEACCOUNTS_FILESERVICES_SHARES", direction:backward
  • AKS ← VMSS: traverse "*", "AZURE_MICROSOFT_COMPUTE_VIRTUALMACHINESCALESETS", direction:backward
  • AKS ← Agent 池: traverse "*", "AZURE_MICROSOFT_CONTAINERSERVICE_MANAGEDCLUSTERS_AGENTPOOLS", direction:backward
  • AKS ← NSG: traverse "*", "AZURE_MICROSOFT_NETWORK_NETWORKSECURITYGROUPS", direction:backward
  • AKS ← 公共 IP: traverse "*", "AZURE_MICROSOFT_NETWORK_PUBLICIPADDRESSES", direction:backward
  • AKS → 公共 IP: traverse "*", "AZURE_MICROSOFT_NETWORK_PUBLICIPADDRESSES"
  • Web 站点 → App Service 计划: traverse "*", "AZURE_MICROSOFT_WEB_SERVERFARMS"
  • Web 站点 ← Functions: traverse "*", "AZURE_MICROSOFT_WEB_SITES_FUNCTIONS", direction:backward
  • 容器应用 → 托管环境: traverse "*", "AZURE_MICROSOFT_APP_MANAGEDENVIRONMENTS"
  • EventHub 命名空间 ← Event Hubs: traverse "*", "AZURE_MICROSOFT_EVENTHUB_NAMESPACES_EVENTHUBS", direction:backward
  • ServiceBus 命名空间 ← 队列: traverse "*", "AZURE_MICROSOFT_SERVICEBUS_NAMESPACES_QUEUES", direction:backward
  • ServiceBus 命名空间 ← 主题: traverse "*", "AZURE_MICROSOFT_SERVICEBUS_NAMESPACES_TOPICS", direction:backward
  • ServiceBus 主题 ← 订阅: traverse "*", "AZURE_MICROSOFT_SERVICEBUS_NAMESPACES_TOPICS_SUBSCRIPTIONS", direction:backward
  • 使用 fieldsKeep:{field1, field2} 在多跳遍历中传递字段
  • 单跳遍历后,使用 dt.traverse.history[0][id] 获取源实体 ID,然后使用 lookup 解析源实体名称:
    | fieldsAdd sourceId = dt.traverse.history[0][id]
    | lookup [smartscapeNodes "SOURCE_TYPE" | fields name, id], sourceField: sourceId, lookupField: id, prefix: "src."
    
  • 多跳遍历后,dt.traverse.history[-N] 可用于获取通过 fieldsKeep 传递的字段
Azure 指标命名约定

Dynatrace 会摄取 Azure Monitor 指标,并使用以下命名模式公开这些指标:

cloud.azure.<provider_namespace>.<resource_type>.<MetricName>

<provider_namespace> 在命名空间内使用下划线(例如,microsoft_compute),<resource_type> 则为小写(例如,virtualmachines)。层级之间以点分隔:microsoft_sql.servers.databases。<MetricName> 是 Azure Monitor 指标名称。

示例:

Azure Monitor 指标Dynatrace 指标键
VM Percentage CPUcloud.azure.microsoft_compute.virtualmachines.PercentageCPU
SQL DB cpu_percentcloud.azure.microsoft_sql.servers.databases.cpu_percent
Storage Ingresscloud.azure.microsoft_storage.storageaccounts.Ingress
Event Hub IncomingMessagescloud.azure.microsoft_eventhub.namespaces.IncomingMessages
Service Bus IncomingMessagescloud.azure.microsoft_servicebus.namespaces.IncomingMessages
App Service HttpResponseTimecloud.azure.microsoft_web.sites.HttpResponseTime
Load Balancer ByteCountcloud.azure.microsoft_network.loadbalancers.ByteCount
AKS node_cpu_usage_percentagecloud.azure.microsoft_containerservice.managedclusters.node_cpu_usage_percentage
Cosmos DB TotalRequestUnitscloud.azure.microsoft_documentdb.databaseaccounts.TotalRequestUnits
Redis serverLoadcloud.azure.microsoft_cache.redis.serverLoad
App Gateway TotalRequestscloud.azure.microsoft_network.applicationgateways.TotalRequests

查询指标:

timeseries cpu = avg(cloud.azure.microsoft_compute.virtualmachines.PercentageCPU),
           by: {dt.smartscape_source.id},
  from: now()-1h
| limit 10

**重要提示:**输出中绝不要将这些指标称为“Azure Monitor 告警”或“Azure Monitor 指标”。Dynatrace 通过其 Azure 集成本机监控 Azure 资源——这些是从 Azure 摄取的 Dynatrace 指标。

使用 azure.object 解析配置

azure.object 字段包含完整的 ARM 资源 JSON。使用 azjson 别名解析:

parse azure.object, "JSON:azjson"

JSON 包装在 configuration 键中:

{
  "configuration": {
    "id": "<ARM resource ID>",
    "name": "<resource name>",
    "type": "<ARM resource type>",
    "location": "<region>",
    "sku": { ... },
    "properties": { ... },
    "zones": [...]
  },
  "tags": { ... }
}

访问方式:

  • 属性:azjson[configuration][properties][field]
  • SKU:azjson[configuration][sku][name]
  • Kind:azjson[configuration][kind]
  • 区域:azjson[configuration][zones]

各服务的常见配置字段:

  • VM: properties.hardwareProfile.vmSize、properties.storageProfile.imageReference.offer、properties.storageProfile.osDisk.osType、properties.extended.instanceView.powerState.displayStatus
  • VMSS: sku.name(VM 大小)、sku.capacity(实例数)、tags.aks-managed-poolName
  • NSG: properties.securityRules[](自定义规则数组)、properties.securityRules[].properties.direction、properties.securityRules[].properties.access、properties.securityRules[].properties.sourceAddressPrefix
  • 存储帐户: kind(例如 StorageV2)、sku.name、properties.accessTier、properties.supportsHttpsTrafficOnly、properties.allowBlobPublicAccess、properties.encryption.keySource
  • SQL Server: properties.fullyQualifiedDomainName、properties.publicNetworkAccess、properties.minimalTlsVersion
  • SQL 数据库: sku.name(层级)、sku.capacity(DTU/vCore)、properties.status、properties.zoneRedundant
  • AKS: properties.kubernetesVersion、properties.powerState.code、properties.networkProfile.networkPlugin、properties.enableRBAC
  • Web 站点: kind(例如 functionapp,linux)、properties.state、properties.defaultHostName、properties.siteConfig.linuxFxVersion
  • Container App: properties.runningStatus、properties.template.containers[].image、properties.template.scale.minReplicas、properties.template.scale.maxReplicas
  • Event Hub 命名空间: sku.name、properties.kafkaEnabled、properties.zoneRedundant
  • Service Bus 命名空间: sku.name(Basic/Standard/Premium)、properties.zoneRedundant、properties.minimumTlsVersion、properties.publicNetworkAccess、properties.disableLocalAuth、properties.status
  • Service Bus 队列: properties.maxSizeInMegabytes、properties.enablePartitioning、properties.deadLetteringOnMessageExpiration、properties.maxDeliveryCount、properties.lockDuration、properties.requiresDuplicateDetection、properties.status
  • Key Vault: properties.enableRbacAuthorization、properties.enableSoftDelete、properties.publicNetworkAccess
  • Redis: properties.sku.name、properties.hostName、properties.redisVersion、properties.enableNonSslPort
  • Cosmos DB: kind(例如 GlobalDocumentDB)、properties.EnabledApiTypes、properties.consistencyPolicy.defaultConsistencyLevel
  • 负载均衡器: sku.name、tags.aks-managed-cluster-name
  • App Gateway: properties.sku.name、properties.sku.tier、properties.operationalState、properties.webApplicationFirewallConfiguration.enabled、properties.webApplicationFirewallConfiguration.firewallMode(Detection/Prevention)、properties.webApplicationFirewallConfiguration.ruleSetType、properties.webApplicationFirewallConfiguration.ruleSetVersion、properties.webApplicationFirewallConfiguration.disabledRuleGroups[]、properties.webApplicationFirewallConfiguration.exclusions[]、properties.firewallPolicy.id

查询模式

所有 Azure 查询都基于四种核心模式。掌握这些模式后,即可将其应用于任意实体类型。

模式 1:资源发现

按类型列出资源,并按订阅、资源组、区域或标签筛选,汇总数量:

smartscapeNodes "AZURE_*"
| filter azure.subscription == "<SUBSCRIPTION_ID>" and azure.location == "<REGION>"
| summarize count = count(), by: {type}
| sort count desc

要列出特定类型,请将 "AZURE_*" 替换为实体类型(例如 "AZURE_MICROSOFT_COMPUTE_VIRTUALMACHINES")。添加 | fields name, azure.subscription, azure.resource.group, azure.location, ... 以选择特定列。使用 tags[`TagName`] 按标签筛选。

模式 2:配置解析

解析 azure.object JSON,获取详细配置字段:

smartscapeNodes "AZURE_MICROSOFT_COMPUTE_VIRTUALMACHINES"
| parse azure.object, "JSON:azjson"
| fieldsAdd vmSize = azjson[configuration][properties][hardwareProfile][vmSize],
            osType = azjson[configuration][properties][storageProfile][osDisk][osType]
| summarize vm_count = count(), by: {vmSize, osType, azure.location}
模式 3:关系遍历

沿资源间的关系进行遍历。由于 Azure 不会填充 dt.traverse.relationship,请将关系名称设为 "*":

smartscapeNodes "AZURE_MICROSOFT_NETWORK_LOADBALANCERS"
| parse azure.object, "JSON:azjson"
| fieldsAdd lbSku = azjson[configuration][sku][name]
| traverse "*", "AZURE_MICROSOFT_NETWORK_LOADBALANCERS_BACKENDADDRESSPOOLS", fieldsKeep:{lbSku, name, id}
| fieldsAdd backendPoolName = name
| traverse "*", "AZURE_MICROSOFT_COMPUTE_VIRTUALMACHINESCALESETS", direction:backward, fieldsKeep:{backendPoolName, id}
| fieldsAdd loadBalancerName = dt.traverse.history[-2][name],
            loadBalancerId = dt.traverse.history[-2][id],
            backendPoolId = dt.traverse.history[-1][id]

与 AWS 遍历的主要区别:

  • 始终将关系名称设为 "*"(Azure 的关系类型名称为空)
  • Azure 的关系主要遵循父子层级:子资源通过反向链接指向父资源
  • AKS 是重要的关系枢纽,与 VMSS、NSG、LB、公共 IP、Agent Pool 和托管标识之间均存在反向链接
模式 4:基于标签的所有权

按任意标签对资源分组,以进行所有权归属/费用分摊:

smartscapeNodes "AZURE_*"
| filter isNotNull(tags[`<TAG_NAME>`])
| summarize resource_count = count(), by: {tags[`<TAG_NAME>`], type}
| sort resource_count desc

常见的 Azure 标签:tags[`ACE:CREATED-BY`]、tags[`dt_owner_email`]、tags[`dt_owner_team`]、tags[`project`]、tags[`managed-by`]。将 "AZURE_*" 替换为具体类型,以限定为某一项服务。

查找未标记的资源:| filter arraySize(tags) == 0


参考指南

当上述核心模式需要针对特定服务进行调整时,请加载参考文件,以获取详细查询。

参考文件加载时机主要内容
vnet-networking-security.mdVNet 拓扑、子网、NSG、公共 IP、VPN、对等互连VNet/子网映射、NSG 影响范围、公共 IP 检测
database-monitoring.mdAzure SQL、Cosmos DB、Redis Cache服务层级分布、区域冗余、公共访问检查
serverless-containers.mdFunctions、App Service、AKS 基础设施、Container Apps运行时分布、App Service Plan 映射、AKS 节点池
load-balancing-api.mdLoad Balancer、Application Gateway、API ManagementLB 后端池遍历、App Gateway 路由、APIM 配置
messaging-integration.mdEvent Hubs、Service Bus、Event Grid命名空间清单、Kafka 启用情况、吞吐量单位分析
storage-monitoring.mdStorage Account、Blob、File、Queue、TableSKU 分布、访问层级、加密审计、公共访问
resource-management.md资源审计、标签合规、生命周期未关联的磁盘、标签覆盖率、预配状态分析
cost-optimization.md节省成本、未使用资源、规格调整VM SKU 分析、未关联的磁盘、已解除分配的 VM
capacity-planning.md容量分析、扩缩容、利用率VMSS 余量、子网 IP 数量、AKS 节点池规格
security-compliance.md安全审计、加密、公共访问、Key VaultNSG 规则分析、TLS 版本审计、公共终端节点检测、加密检查
resource-ownership.md费用分摊、所有权、成本分配基于标签的分组、订阅/资源组汇总
workload-detection.md确定编排上下文和解析路径检测 AKS 节点、VMSS 成员、独立 VM,以分析影响范围
metrics-performance.md查询特定资源的指标时间序列VM、SQL、Storage、Event Hub、LB、App Service、AKS、Cosmos DB、Redis、App Gateway 的 DQL 时间序列模式

最佳实践

查询优化
  1. 尽早按订阅、资源组和区域进行筛选
  2. 使用具体的实体类型(尽可能避免使用 "AZURE_*" 通配符)
  3. 探索时使用 | limit N 限制结果数量
  4. 访问嵌套字段前,使用 isNotNull() 检查
配置解析
  1. 始终使用 JSON 解析器解析 azure.object:parse azure.object, "JSON:azjson"
  2. 使用一致的字段命名:fieldsAdd configField = azjson[configuration][properties][field]
  3. 通过 azjson[configuration][sku][name] 访问 SKU(不要在 properties 内访问)
  4. 解析后检查 null 值——并非所有实体类型都具有相同的属性结构
  5. 对复杂嵌套对象使用 toString()
组织层级
  1. 在多订阅环境中,始终使用 azure.subscription 限定查询范围
  2. 使用 azure.resource.group 将范围缩小到团队或应用边界
  3. 结合 azure.location 进行特定区域分析
  4. 使用 summarize ... by: {azure.subscription, azure.resource.group} 按组织进行细分
标记策略
  1. 使用 tags[`key`] 进行筛选(键名用反引号括起)
  2. 使用 arraySize(tags) 检查未标记的资源
  3. 使用 summarize 操作跟踪标记覆盖情况
  4. 常见的所有权标记:dt_owner_email、dt_owner_team、ACE:CREATED-BY

限制和说明

Smartscape 限制
  • Azure 对象配置需要使用 parse azure.object, "JSON:azjson" 进行解析
  • Azure 指标可作为 Dynatrace 指标使用,并采用 cloud.azure.* 命名约定(参见 Azure Metric Naming Convention)
  • 资源发现取决于 Dynatrace 中的 Azure 集成配置
  • 标记同步可能会略有延迟
关系遍历
  • Azure 关系类型名称为空——在 traverse 命令中始终使用 "*" 作为关系名称
  • 对于反向关系(例如,从子资源到父资源),使用 direction:backward
  • 使用 fieldsKeep 在遍历过程中保留重要字段
  • 使用 dt.traverse.history[0][id] 获取单跳源实体 ID;使用 lookup 解析源实体名称
  • 对于多跳遍历,dt.traverse.history[-N] 可访问通过 fieldsKeep 保留的字段
  • Azure 关系主要遵循父子层级模式
  • AKS 是一个重要的关系枢纽——预计会有许多反向关系汇聚到 AKS 集群实体
AKS 覆盖范围
  • 此技能仅涵盖 AKS 基础设施层实体(集群、代理池、VMSS、网络)
  • 对于 Kubernetes 工作负载层可观测性(Pod、部署、服务、命名空间),请使用 dt-obs-kubernetes 技能
通用提示
  • 使用 getNodeName() 获取便于阅读的资源名称
  • 使用 isNotNull() 和 isNull() 妥善处理 null 值
  • 对大型环境,结合订阅、资源组和区域筛选条件
  • 使用 countDistinct() 统计唯一资源数量
  • azure.resourceType 字段使用小写 ARM 格式(例如 microsoft.compute/virtualmachines)——可用于筛选,但不能用于实体类型匹配

评论

支持 Markdown