mcpField
D
dt-obs-predictive-analytics

dt-obs-predictive-analytics

github.com/dynatrace数据与数据库1692.2k 次安装今天更新
代码仓库

关于 dt-obs-predictive-analytics

面向 Dynatrace 的分析 Skill,用于预测资源饱和并分析指标趋势、异常和信号特征。它为容量规划与监控任务提供分析器选择及 DQL 查询指导。

主要功能

  1. 01使用 Dynatrace 分析器预测指标
  2. 02检测信号变化与异常
  3. 03分析信号季节性和趋势
  4. 04提供容量风险 DQL 查询模式
  5. 05指导解读分析结果

适用场景

  1. 01估算主机达到 CPU 上限的时间
  2. 02预测服务请求量
  3. 03定位指标开始变化的时间
  4. 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.md
capacity-forecasting.md
forecasting-analyzer.md
novelty-detection.md
trend-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 关键规则
  1. timeseries 返回数组——每个实体的每个时间槽对应一个值
  2. arrayLast(arr) = 最新值;arrayFirst(arr) = 最早值
  3. 增长量 = (arrayLast - arrayFirst) / number_of_intervals
  4. 排序前始终使用 filter isNotNull(field),以避免空值排序问题
  5. 相除时使用 toLong() 处理 Long 字段,以避免类型错误
  6. 在 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 问题历史

评论

支持 Markdown