Loading...
Loading...
Query and analyze a Dynatrace tenant's ACTUAL billing and usage data with DQL against dt.system.events — DPS consumption breakdown, cost-normalized spend ranking, included volume deduction, chargeback/showback, cost drivers, spending trends, cost investigation, metrics ingest optimization, query cost attribution, workflow total cost, and entity-level cost drill-down (RUM, hosts, synthetic, K8s). Also directs licensing/entitlement questions to the right resource (not available via DQL). USE ONLY to query/analyze the tenant's actual consumption. Do NOT use for conceptual 'explain' questions about how DPS billing/pricing works or what units/weights/the rate card mean — those belong to Dynatrace documentation. Also do NOT use for making a DQL query itself faster or cheaper to run (query optimization, reducing scanned data/consumption per run, filter-early best practices) — that belongs to dt-dql-essentials. This skill only MEASURES recorded consumption; it does not tune queries.
npx skill4agent add dynatrace/dynatrace-for-ai dt-platform-costs⛔ FIRST — CHECK SCOPE BEFORE DOING ANYTHING ELSE. This skill only queries and analyzes a tenant's actual consumption data. It does not teach billing concepts. If the user is asking how billing/pricing works, how costs are calculated, what units / normalization weights / the rate card mean, or any conceptual "explain" question about DPS billing — this skill does not answer it. See Billing Concepts — STOP and respond with only the prescribed two-sentence documentation redirect. Do not explain units, weights, included volume, or methodology, and do not show the Getting Started menu. Continue into the rest of this skill only when the user wants to query or analyze their own tenant's numbers.
dt.system.eventsevent.kind == "BILLING_USAGE_EVENT"event.typeScope boundary: This skill covers Dynatrace platform billing (DPS consumption). For AWS cloud infrastructure costs ingested via FOCUS, useinstead.dt-biz-cloud-costs
❌ Query billing events → no results → conclude "not licensed" — WRONG (absence ≠ no entitlement) ✅ Respond immediately: "Entitlement data is not available via DQL. Check Account Management > Subscription > Pricing."
❌ Explain metering / units / normalization weights, then offer the Getting Started menu — WRONG (that is the exact failure to avoid) ✅ Respond with only: "For how DPS pricing and billing work, see the Dynatrace Platform Subscription documentation. If you'd like to analyze your tenant's actual consumption, ask e.g. 'What are my top cost drivers for the last 7 days?'"
| User Request | Action | Reference |
|---|---|---|
| "how can you help", "what can you do", "where do I start", "help me understand my costs", "what can I analyze", "show me what's possible", "what is this skill", "help", "capabilities", "getting started", "tell me what you can do", "what are your capabilities" | Present Getting Started menu — 5 use cases with one suggested prompt each. Do not run any queries yet. | Getting Started |
| "am I allowed to use X", "is X licensed", "is X in my subscription", "entitlement for X", "can I use X from licensing perspective" | STOP — do not query. Respond directly: entitlement data is not available via DQL. Direct to Account Management > Subscription > Pricing. | Entitlement — STOP |
| "how does billing work", "how are costs calculated", "explain DPS billing", "how is X billed", "what is the billing model", "how does DPS pricing work", "how does Dynatrace charge", "explain the rate card" | STOP — do not answer from skill content. Respond directly: redirect to official documentation. | Billing Concepts — STOP |
| "usage overview", "usage per capability", "what am I using", "how much usage" | Cross-capability usage with unit conversion (no cost) | billing-capabilities.md -> Cross-Capability Usage (4 Queries) |
| "cost drivers", "what costs most", "top spenders", "where is spend going" | Run Combined Query + Full Inline Lookup, sort by | cost-estimations.md -> Estimated Cost by Capability |
| "save money", "reduce costs", "billed costs", "actual bill" | Usage with included volume deduction, then cost estimation | billing-capabilities.md -> Cross-Capability Usage (4 Queries), then cost-estimations.md |
| "cost by team", "chargeback", "showback" | Cost center attribution | cost-allocation.md |
| "metrics ingest by cost center", "metrics chargeback", "billable data points per team" | Metrics Ingest billable volume per cost center (with included volume deduction) | cost-allocation.md -> Metrics Ingest — Billable Volume per Cost Center |
| "how much log ingest", "trace volume" (single category) | Single-category usage query | billing-event-types.md, billing-capabilities.md |
| "cost trend", "spending spike", "budget forecast" | Daily cost trend | cost-estimations.md -> Daily Cost Trend |
| "compare this week to last", "week over week", "WoW", "MoM", "month over month", "how did costs change", "cost change vs last week", "cost change vs last month", "period comparison", "what grew", "what shrank", "usage trend", "notable changes in usage" | Period Comparison — two explicit UTC windows, compare | cost-estimations.md -> Period Comparison (WoW / MoM) |
| "detector costs", "anomaly detector query cost", "ALERTING pool costs" | Cross-reference detector -> query cost | query-cost-attribution.md |
| "workflow cost", "what does this workflow cost", "workflow spending" | Composite workflow cost (3 signals) | workflow-total-cost.md |
| "what's driving costs", "cost investigation", "cost spike" | Step-by-step cost investigation | query-cost-attribution.md, workflow-total-cost.md, entity-cost-drilldown.md |
| "which app", "which host", "which monitor", "drill down", "break down by application/host/cluster" | Entity-based drill-down with sample-first step | entity-cost-drilldown.md |
| "what's driving RUM/Full-Stack/Synthetic/K8s cost" | Entity drill-down for specific capability | entity-cost-drilldown.md |
| "optimize metrics ingest", "reduce data points", "high cardinality metrics", "which metrics cost most", "metrics cost optimization" | Run analysis (Steps 1–3), present data and explain optimization levers, then wait for user to choose what to optimize — NEVER recommend specific metrics to drop/reduce | metrics-ingest-optimization.md |
| "drop metric", "remove metric from ingestion", "stop ingesting metric" | Drop metric strategy via OpenPipeline or OTel Collector | metrics-ingest-optimization.md -> Strategy 1 — Drop Metric |
| "reduce cardinality", "remove dimension", "drop dimension from metric" | Reduce cardinality strategy via OpenPipeline or OTel Collector | metrics-ingest-optimization.md -> Strategy 2 — Reduce Cardinality |
| "change ingest interval", "reduce collection frequency", "scrape interval" | Change ingest interval at source | metrics-ingest-optimization.md -> Strategy 3 — Change Ingest Interval |
| "query cost by source", "who is scanning most", "cost attribution by app" | BUE query cost by source | query-cost-attribution.md -> Step 1 |
| "expensive dashboards", "dashboard cost ranking", "top dashboards by cost" | Dashboard query cost ranking | query-cost-attribution.md -> Step 1b + Step 2 |
| "included volume", "billed vs total", "baseline usage" | Included volume analysis | billing-capabilities.md -> Included Volume |
| "hourly billing", "daily billing after deductions", "time-granular billed usage" | Time-bucketed usage with included volume subtracted | billing-capabilities.md -> Query 3 (Metrics Ingest — Billable Volume) / Query 4 (Traces Ingest — Billable Volume) |
cost_weightcost_weightcost_weightcost_weightcost_weight| summarize billable_usagebilling-capabilities.mdlookuplookup.*| filter isNotNull(cost_weight) | sort cost_weight desc | fields event.type, capability_usage, cost_weightcost_weight1. Log Management & Analytics - Ingest & Process 62.3 TiB
2. Full-Stack Monitoring 2,366,800 GiB-hours
3. Real User Monitoring 51.5M sessions
4. Infrastructure Monitoring 847,200 host-hours
5. Metrics - Ingest & Process 18.2B data pointsℹ️ Rankings show relative spend — for actual dollar figures, see Account Management > Subscription > Overview > Cost and usage details.
"What are my top cost drivers for the last 7 days?"
"Give me an overview of our platform usage across all capabilities."
"My log query cost spiked last week — which source is causing it?"
"Show me a cost breakdown by cost center for the last 30 days."
"Which metrics are driving our ingest cost? Help me optimize."
dt.system.eventsdt-dql-essentialsdt.semantic_dictionary.fields| # | Reference | Content |
|---|---|---|
| 1 | billing-event-types.md | Billing event type catalog — fields, metering intervals, per-type tables |
| 2 | billing-capabilities.md | BUE-to-capability mapping, unit conversion, cross-category usage queries, included volume deduction |
| 3 | cost-estimations.md | Cost normalization weights, unit conversion lookup, cost estimation queries, full inline lookup for dashboards |
| 4 | cost-allocation.md | Cost center/product attribution, chargeback queries |
| 5 | query-cost-attribution.md | Query scan cost attribution — BUE by source, per-detector breakdown (ALERTING pool), QEE drill-down |
| 6 | workflow-total-cost.md | Workflow total cost — three billing signals (query scan, AppEngine, workflow-hours) |
| 7 | entity-cost-drilldown.md | Entity-based cost drill-down — RUM/Host/Synthetic/K8s/Security/Automation by entity |
| 8 | metrics-ingest-optimization.md | Per-metric-key cost drill-down — cardinality analysis, timeseries verification, optimization target identification |
fetch dt.system.events, from: -7d
| filter event.kind == "BILLING_USAGE_EVENT"
| summarize event_count = count(), by: {event.type}
| sort event_count descevent.kind~≈~count()QUERY_EXECUTION_EVENTWORKFLOW_EVENTWORKFLOW_EXECUTIONcount()countDistinct(query_id)countDistinct(dt.automation_engine.workflow_execution.id)WORKFLOW_EXECUTIONcount()count()entityName()dt.entity.*dt.entity.*HOST-1A2B3Cby: {dt.entity.host}countDistinct(dt.entity.host)scanned_bytesbilled_bytes