dt-obs-predictive-analytics
dynatrace/dynatrace-for-ai
Forecast resource saturation, detect trends, and identify anomalies across Dynatrace infrastructure using time-series analysis.
What is dt-obs-predictive-analytics?
Predictive analytics skill for Dynatrace that enables time-series forecasting, capacity saturation planning, and anomaly detection. Use it when you need to forecast future metric values, detect when signal behavior changed, identify current violations, or characterize metric seasonality and trends before setting up alerts.
- Forecast future metric values for capacity planning and cost estimation using univariate time-series forecasting
- Detect when metrics shifted or changed character (spikes, trends, variability changes) without requiring predefined thresholds
- Identify entities currently violating acceptable ranges using static, adaptive, or seasonal-baseline anomaly detection
- Characterize signal behavior including seasonality, noise level, and trend direction
- Analyze saturation risk and estimate days-to-saturation for resource planning
- Discover available metrics and run DQL queries against Dynatrace data
How to install dt-obs-predictive-analytics
npx skills add https://github.com/dynatrace/dynatrace-for-ai --skill dt-obs-predictive-analytics- Dynatrace tenant with data access
- DQL query permissions to execute timeseries and metric queries
How to use dt-obs-predictive-analytics
- 1.Choose your analysis discipline: are you detecting a change, checking current violations, forecasting future values, or characterizing signal behavior?
- 2.Select the appropriate tool: timeseries-novelty-detection for changes, anomaly detectors for current state, timeseries-forecast for predictions
- 3.Run the tool or DQL query against your metric and time range
- 4.Analyze results using the structured table format with Last Actual, Forecast, Range, Trend indicators, and recommended Actions
- 5.Follow up with Key Findings summary ranked by priority
Use cases
- Forecast CPU usage across hosts to identify which will hit 90% capacity in the next 30 days
- Detect when service request volume started trending upward to trigger proactive scaling
- Identify services with unusual error rates compared to their weekly baseline pattern
- Characterize memory usage patterns on Kubernetes nodes before configuring alerting thresholds
- Compare today's traffic against last week's baseline to spot anomalies
- Infrastructure and platform engineers planning capacity
- SREs setting up proactive alerting and anomaly detection
- DevOps teams forecasting resource needs for cost estimation
- Observability engineers analyzing metric behavior before tuning thresholds
dt-obs-predictive-analytics FAQ
Use timeseries-novelty-detection when asking 'did this metric change?' — it detects when signal character shifted without needing a threshold. Use anomaly detectors (adaptive, seasonal, static) when asking 'is this currently wrong?' — they measure ongoing violations relative to an expected range.
No. Dynatrace Forecast Analyzer supports univariate forecasting only (one metric based on its own history). For multivariate forecasting, use external tools like Python, R, or Azure AutoML.
Use arrayMovingAvg() for smoothed trends, arrayPercentile() for saturation risk, arrayLast() and arrayFirst() for growth calculation, and arrayAvg() for baseline comparison. Always filter isNotNull() before sorting to avoid null ordering issues.
Run a metric discovery query filtering by keyword: `metrics from: now() - 1h | filter contains(metric.key, "cpu") | summarize count(), by: {metric.key}`
Use dt.smartscape.* (not deprecated dt.entity.*) for both display fields and grouping clauses in entity-level queries.
Full instructions (SKILL.md)
Source of truth, from dynatrace/dynatrace-for-ai.
name: dt-obs-predictive-analytics description: Predictive analytics for Dynatrace — time series forecasting with the timeseries-forecast tool, capacity saturation planning, trend and anomaly detection across hosts, services, and infrastructure. license: Apache-2.0
Predictive Analytics Skill
Forecast resource saturation, detect trends, analyze anomalies, and characterize signal behavior using DQL and Dynatrace analyzer tools.
Analysis Disciplines
| # | Discipline | Use when … |
|---|---|---|
| 1 | Forecast and Prediction | Predicting future metric values for capacity planning, cost estimation, or proactive alerting |
| 2 | Detecting Changes | A metric shifted — find when the character of the signal changed, regardless of whether it crossed a limit |
| 3 | Detecting Violations | A metric is currently out of bounds — find entities that exceed or fall below an acceptable range |
| 4 | Timeseries Characteristics | Characterizing a signal's seasonality, noise level, and trend before further analysis |
Choosing the Right Detection Tool
The single most important decision: are you asking "did this metric change?" or "is this metric currently wrong?"
| Question | Tool | Why |
|---|---|---|
| "Did this metric change in the last N hours?" | timeseries-novelty-detection | Detects when the signal's character changed (spike, step, trend onset, variability shift) without requiring a known acceptable limit |
| "Which services spiked or dropped recently?" | timeseries-novelty-detection with SPIKE / CHANGE_IN_VALUES | Finds the specific entities and timestamps where change occurred; returns empty for stable signals |
| "When did CPU start trending up?" | timeseries-novelty-detection with TREND_IN_VALUES | Pinpoints the onset of a directional shift |
| "Which hosts are currently above 90% CPU?" | static-threshold-analyzer | Known fixed limit — fire alerts when exceeded |
| "Which services are currently above their usual load?" | adaptive-anomaly-detector | Learns the normal distribution from the data and flags sustained threshold violations |
| "Which services are high right now vs. their weekly pattern?" | seasonal-baseline-anomaly-detector | Accounts for time-of-day/day-of-week patterns before deciding what is anomalous |
Decision rule in plain language
- Use
timeseries-novelty-detectionwhen the question contains "changed", "shifted", "spiked", "dropped", "started", "when did", or "did anything unusual happen". The tool answers whether a change occurred and when. It requires no predefined threshold. - Use an anomaly detector (
adaptive,seasonal, orstatic) when the question is about ongoing or current state relative to an expected range: "which are highest", "who is violating", "what is above X". These tools count violation samples inside a sliding window — they confirm how long something has been bad, not whether the signal changed.
Pitfall: Running
adaptive-anomaly-detectoron a broad fleet to answer "which service changed load?" typically flags every service that has any variation, producing low-signal results. Usetimeseries-novelty-detectionfirst to identify entities where the load character genuinely shifted, then use the anomaly detectors to measure the severity of those specific signals.
When to Use This Skill
- Capacity: "Which hosts will hit 90% CPU in the next 30 days?"
- Forecast: "Forecast service request volume for the next 7 days"
- Trend: "Is memory usage growing across our Kubernetes nodes?"
- Anomaly: "Which services have unusual error rates right now?"
- Baseline: "How does today's traffic compare to last week?"
- Signal profile: "Is this metric seasonal or trending before I set up alerting?"
Important Constraints
Dynatrace Forecast Analyzer supports univariate forecasting only — predicting one metric based on its own historical values. Multivariate forecasting (using multiple metrics as inputs) requires external tools (Python, R, Azure AutoML).
Tooling Rule: Run analyses using Dynatrace tools: timeseries-forecast, adaptive-anomaly-detector, seasonal-baseline-anomaly-detector, static-threshold-analyzer, and timeseries-novelty-detection. Use execute-dql for DQL queries.
Result Analysis Rule: Always analyse and summarise results directly from the raw tool output. Derive all numbers, trends, and conclusions inline.
Result Presentation Format
Always present forecast results as a structured table:
| Column | Content |
|---|---|
| Rank | 🥇 🥈 🥉 ordered by urgency or magnitude |
| Signal / Entity | Metric name and entity or dimension |
| Last Actual | Most recent non-null value from the historical series |
| Forecast | Point forecast at the end of the horizon |
| Range | Lower – Upper confidence band at the same horizon point |
| Trend | % change from Last Actual to Forecast: 🔴 >+20% / 🟠 +5–20% / 🟢 ±5% stable / 🔵 −5–20% declining / ⚫ <−20% sharp drop |
| Action | ✅ No action / ⚠️ Monitor / 🔴 Act now |
Always follow the table with a Key Findings section (3–5 bullet points, ranked by priority).
Core DQL Techniques
DQL has no native forecast function. For forward-looking forecasts, use timeseries-forecast (see references/forecasting-analyzer.md).
Key DQL Rules
timeseriesreturns arrays — one value per time slot per entityarrayLast(arr)= most recent value;arrayFirst(arr)= oldest- Growth =
(arrayLast - arrayFirst) / number_of_intervals - Always
filter isNotNull(field)before sorting to avoid null ordering issues - Use
toLong()when dividingLongfields to avoid type errors - Use
dt.smartscape.*not deprecateddt.entity.*in DQL display fields; usedt.smartscape.*inby:{}grouping clauses for entity-level queries
Standard Query Patterns
Moving Average Trend
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
Saturation Risk Classification
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
Days to Saturation Forecast
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
Anomaly Scoring
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
Metric Discovery
Before forecasting, discover available metrics by keyword:
metrics from: now() - 1h
| filter contains(metric.key, "cpu")
| summarize count(), by: {metric.key}
| sort `count()` desc
Reference Guides
references/forecasting-analyzer.md—timeseries-forecasttool: data requirements, parameter reference, interval selection, horizon limits, common pitfallsreferences/capacity-forecasting.md— CPU/memory/disk/K8s saturation forecasts; multi-resource risk scoring; days-to-saturation DQL patternsreferences/anomaly-scoring.md—adaptive-anomaly-detector,seasonal-baseline-anomaly-detector,static-threshold-analyzer; DQL deviation scoringreferences/novelty-detection.md—timeseries-novelty-detectiontool: spike, drop, step change, trend onset, and variability change detection; all novelty types; parameter reference; worked examplesreferences/trend-detection.md—timeseries-novelty-detectionfor trend onset and change points; week-over-week joins; growth rate and acceleration detection
Related Skills
- dt-dql-essentials — DQL syntax,
timeseriescommand rules, array function reference - dt-obs-hosts — Host and process metrics catalog
- dt-obs-services — Service RED metrics for service-level trend analysis
- dt-obs-problems — Davis AI problem history for anomaly correlation
Related skills
More from dynatrace/dynatrace-for-ai and the wider catalog.

dt-obs-problems
Analyze Dynatrace-detected problems with root cause identification, impact assessment, and correlation.

dt-obs-services
Monitor service performance with RED metrics and runtime-specific telemetry across Java, .NET, Node.js, Python, PHP, and Go.

dt-obs-tracing
Analyze distributed traces, spans, and request flows to diagnose latency, failures, and service dependencies.

dt-alerting
Configure Dynatrace alerting end-to-end: detectors, Grail event storage, problem grouping, and workflow notifications.

3d-model-generation
Generate 3D models using each::sense AI. Create 3D assets from text or images for games, products, architecture, characters, vehicles, and more with PBR textures.

comic-panel-generation
Generate comic and manga panels, strips, and pages using each::sense AI. Create superhero comics, manga pages, webtoons, action sequences, and convert photos to comic art with consistent characters.