关于 dt-obs-predictive-analytics
面向 Dynatrace 的分析 Skill,用于预测资源饱和并分析指标趋势、异常和信号特征。它为容量规划与监控任务提供分析器选择及 DQL 查询指导。
主要功能
- 01使用 Dynatrace 分析器预测指标
- 02检测信号变化与异常
- 03分析信号季节性和趋势
- 04提供容量风险 DQL 查询模式
- 05指导解读分析结果
适用场景
- 01估算主机达到 CPU 上限的时间
- 02预测服务请求量
- 03定位指标开始变化的时间
- 04将当前流量与季节性基线比较
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ dynatrace/ dynatrace-for-ai --skill dt-obs-predictive-analytics安装后在 Claude Code 中输入/dt-obs-predictive-analytics确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/anomaly-scoring.mdcapacity-forecasting.mdforecasting-analyzer.mdnovelty-detection.mdtrend-detection.md详细介绍
预测分析技能
使用 DQL 和 Dynatrace 分析器工具预测资源饱和情况、检测趋势、分析异常并描述信号行为。
分析类型
| # | 类型 | 适用场景…… |
|---|---|---|
| 1 | 预测与预估 | 预测未来的指标值,用于容量规划、成本估算或主动告警 |
| 2 | 检测变化 | 指标发生了变化——找出信号特征改变的时间,无论是否超出限制 |
| 3 | 检测违规 | 指标当前超出范围——找出超出或低于可接受范围的实体 |
| 4 | 时间序列特征 | 在进一步分析前,描述信号的季节性、噪声水平和趋势 |
选择合适的检测工具
最重要的一个判断:你要问的是“这个指标是否发生了变化?”还是“这个指标当前是否异常?”
| 问题 | 工具 | 原因 |
|---|---|---|
| “这个指标在过去 N 小时内发生变化了吗?” | timeseries-novelty-detection | 检测信号特征何时发生变化(尖峰、阶跃、趋势开始、波动性变化),无需预先知道可接受的限制 |
| “最近哪些服务出现了尖峰或下降?” | timeseries-novelty-detection,搭配 SPIKE / CHANGE_IN_VALUES | 找出发生变化的具体实体和时间戳;信号稳定时返回空结果 |
| “CPU 是从什么时候开始呈上升趋势的?” | timeseries-novelty-detection,搭配 TREND_IN_VALUES | 精确定位方向性变化的起始时间 |
| “哪些主机当前 CPU 使用率超过 90%?” | static-threshold-analyzer | 已知固定限制——超出时触发告警 |
| “哪些服务当前负载高于平时?” | adaptive-anomaly-detector | 从数据中学习正常分布,并标记持续超出阈值的情况 |
| “与每周模式相比,哪些服务当前负载偏高?” | seasonal-baseline-anomaly-detector | 在判断异常前,考虑一天中不同时段和一周中不同日期的模式 |
通俗易懂的判断规则
- 在问题中出现“变化了”“偏移了”“出现尖峰”“下降了”“开始了”“什么时候发生的”或“有没有发生异常”时,使用
timeseries-novelty-detection。该工具回答是否发生了变化以及变化发生的时间,无需预先定义阈值。 - 当问题关注相对于预期范围的持续或当前状态时,使用异常检测器(
adaptive、seasonal或static),例如“哪些最高”“哪些违反了限制”“哪些超过 X”。这些工具会统计滑动窗口内的违规样本——它们确认问题持续了多久,而非信号是否发生了变化。
常见误区:对大范围主机群运行
adaptive-anomaly-detector来回答“哪些服务的负载发生了变化?”,通常会标记所有存在任何波动的服务,导致结果信噪比较低。先使用timeseries-novelty-detection找出负载特征确实发生变化的实体,再用异常检测器衡量这些特定信号的严重程度。
何时使用此技能
- 容量:“未来 30 天内,哪些主机的 CPU 使用率会达到 90%?”
- 预测:“预测未来 7 天的服务请求量”
- 趋势:“我们的 Kubernetes 节点是否普遍出现内存使用量增长?”
- 异常:“当前哪些服务的错误率异常?”
- 基线:“今天的流量与上周相比如何?”
- 信号概况:“设置告警前,我想知道这个指标是否具有季节性或呈现趋势”
重要约束
Dynatrace Forecast Analyzer 仅支持单变量预测——根据某个指标自身的历史值预测该指标。多变量预测(使用多个指标作为输入)需要借助外部工具(Python、R、Azure AutoML)。
工具使用规则:使用 Dynatrace 工具运行分析:timeseries-forecast、adaptive-anomaly-detector、seasonal-baseline-anomaly-detector、static-threshold-analyzer 和 timeseries-novelty-detection。使用 execute-dql 执行 DQL 查询。
结果分析规则:始终直接根据工具的原始输出分析并总结结果。内联推导所有数字、趋势和结论。
结果呈现格式
始终使用结构化表格呈现预测结果:
| 列 | 内容 |
|---|---|
| 排名 | 🥇 🥈 🥉 按紧急程度或数值大小排序 |
| 信号 / 实体 | 指标名称和实体或维度 |
| 最新实际值 | 历史序列中最新的非空值 |
| 预测值 | 预测周期结束时的点预测 |
| 范围 | 同一预测周期点的置信区间下限 – 上限 |
| 趋势 | 最新实际值到预测值的变化百分比:🔴 >+20% / 🟠 +5–20% / 🟢 ±5% 稳定 / 🔵 −5–20% 下降 / ⚫ <−20% 大幅下降 |
| 操作 | ✅ 无需操作 / ⚠️ 监控 / 🔴 立即采取行动 |
表格后始终添加 关键发现 部分(按优先级排序的 3–5 个要点)。
核心 DQL 技巧
DQL 没有原生的 forecast 函数。要进行前瞻性预测,请使用 timeseries-forecast(参见 references/forecasting-analyzer.md)。
DQL 关键规则
timeseries返回数组——每个实体的每个时间槽对应一个值arrayLast(arr)= 最新值;arrayFirst(arr)= 最早值- 增长量 =
(arrayLast - arrayFirst) / number_of_intervals - 排序前始终使用
filter isNotNull(field),以避免空值排序问题 - 相除时使用
toLong()处理Long字段,以避免类型错误 - 在 DQL 显示字段中使用
dt.smartscape.*,而非已弃用的dt.entity.*;实体级查询的by:{}分组子句中使用dt.smartscape.*
标准查询模式
移动平均趋势
timeseries cpu = avg(dt.host.cpu.usage), from: now()-24h, interval: 1h, by: {dt.smartscape.host}
| fieldsAdd moving_avg = arrayMovingAvg(cpu, 4)
| fieldsAdd current = arrayLast(cpu)
| fieldsAdd trend = arrayLast(cpu) - arrayFirst(cpu)
| filter isNotNull(current)
| sort trend desc
| limit 20
| fields dt.smartscape.host, current, trend, moving_avg
饱和风险分类
timeseries cpu = avg(dt.host.cpu.usage), from: now()-7d, interval: 1h, by: {dt.smartscape.host}
| fieldsAdd p95 = arrayPercentile(cpu, 95)
| fieldsAdd saturation_risk = if(p95 > 85, "HIGH", else: if(p95 > 70, "MEDIUM", else: "LOW"))
| filter isNotNull(p95)
| sort p95 desc
| fields dt.smartscape.host, p95, saturation_risk
饱和时间预测(天)
timeseries cpu = avg(dt.host.cpu.usage), from: now()-30d, interval: 1d, by: {dt.smartscape.host}
| fieldsAdd current = arrayLast(cpu)
| fieldsAdd daily_growth = (arrayLast(cpu) - arrayFirst(cpu)) / 30
| filter isNotNull(current)
| fieldsAdd days_to_saturation = if(daily_growth > 0, toLong((90 - current) / daily_growth), else: 9999)
| sort days_to_saturation asc
| limit 20
| fields dt.smartscape.host, current, daily_growth, days_to_saturation
异常评分
timeseries cpu = avg(dt.host.cpu.usage), from: now()-24h, interval: 1h, by: {dt.smartscape.host}
| fieldsAdd baseline_avg = arrayAvg(cpu)
| fieldsAdd current = arrayLast(cpu)
| fieldsAdd anomaly_score = if(isNotNull(current) and isNotNull(baseline_avg), abs(current - baseline_avg), else: 0)
| sort anomaly_score desc
| limit 20
| fields dt.smartscape.host, current, baseline_avg, anomaly_score
指标发现
预测前,按关键字查找可用指标:
metrics from: now() - 1h
| filter contains(metric.key, "cpu")
| summarize count(), by: {metric.key}
| sort `count()` desc
参考指南
references/forecasting-analyzer.md—timeseries-forecast工具: 数据要求、参数参考、间隔选择、预测周期限制、常见问题references/capacity-forecasting.md— CPU、内存、磁盘和 K8s 饱和度 预测;多资源风险评分;预测饱和时间(天)的 DQL 模式references/anomaly-scoring.md—adaptive-anomaly-detector、seasonal-baseline-anomaly-detector、static-threshold-analyzer;DQL 偏差评分references/novelty-detection.md—timeseries-novelty-detection工具:尖峰、下降、阶跃变化、 趋势开始和波动性变化检测;所有新颖性类型;参数参考;完整示例references/trend-detection.md— 使用timeseries-novelty-detection检测趋势开始和变化点; 周环比联接;增长率和加速度检测
相关技能
- dt-dql-essentials — DQL 语法、
timeseries命令规则、数组函数参考 - dt-obs-hosts — 主机和进程指标目录
- dt-obs-services — 用于服务级趋势分析的服务 RED 指标
- dt-obs-problems — 用于异常关联分析的 Davis AI 问题历史