بنقرة واحدة
dt-app-notebooks
// Work with Dynatrace notebooks - create, modify, query, and analyze notebook JSON. Derives from the dt-app-dashboards skill with notebook-specific differences documented here.
// Work with Dynatrace notebooks - create, modify, query, and analyze notebook JSON. Derives from the dt-app-dashboards skill with notebook-specific differences documented here.
| name | dt-app-notebooks |
| description | Work with Dynatrace notebooks - create, modify, query, and analyze notebook JSON. Derives from the dt-app-dashboards skill with notebook-specific differences documented here. |
| license | Apache-2.0 |
Notebooks and dashboards are structurally similar. Follow the dt-app-dashboards skill for all workflows (creating, modifying, querying, analyzing), applying the differences documented below.
dtctl query '<DQL>' --plain before adding to the notebook"autoSelectVisualization": true in visualizationSettings unless the user explicitly requests a specific visualization typedeploy_notebook.sh — never use dtctl apply directly:
bash scripts/deploy_notebook.sh notebook.json
The script validates the notebook first and blocks deployment on errors. Skipping it risks deploying broken notebooks.
On successful deployment, the local file is deleted.dtctl get notebook <id> -o json --plain > notebook.json, modify, then deploy. Never reconstruct from scratch or inject an id manually.{
"name": "My Notebook",
"type": "notebook",
"content": {
"version": "7",
"defaultTimeframe": { "from": "now()-2h", "to": "now()" },
"sections": [
{ "id": "uuid-1", "type": "markdown", "markdown": "# Title\nContext" },
{
"id": "uuid-2", "type": "dql", "title": "Query Section", "showInput": true,
"state": {
"input": { "value": "fetch logs | summarize count()" },
"visualization": "table",
"visualizationSettings": { "autoSelectVisualization": true, "chartSettings": {} },
"querySettings": {
"maxResultRecords": 1000, "defaultScanLimitGbytes": 500,
"maxResultMegaBytes": 1, "defaultSamplingRatio": 10, "enableSampling": false
}
}
}
]
}
}
| Aspect | Dashboard | Notebook |
|---|---|---|
type | "dashboard" | "notebook" |
content.version | 21 (number) | "7" (string) |
| Content blocks | tiles (object map) + layouts (object map) | sections (ordered array) |
| Variables | content.variables[] with query, csv, text types | None |
| Layout/grid | 24-unit grid via layouts with x, y, w, h | None — sections render top-to-bottom in array order |
| Default timeframe | Controlled by UI time picker | content.defaultTimeframe object with from/to |
Dashboards have two tile types (markdown, data). Notebooks have three section types:
markdown — Same concept. Fields: id, type, markdowndql — Equivalent to dashboard data tiles, but query and visualization are nested inside state (see table below)| Field | Dashboard tile | Notebook DQL section |
|---|---|---|
| Query string | tile.query | section.state.input.value |
| Visualization type | tile.visualization | section.state.visualization |
| Visualization settings | tile.visualizationSettings | section.state.visualizationSettings |
| Query settings | tile.querySettings | section.state.querySettings |
| Section-specific timeframe | N/A (UI picker controls all tiles) | section.state.input.timeframe |
autoSelectVisualization (boolean, in visualizationSettings) — when true, Dynatrace automatically selects the best visualization type for the query result. Prefer true when the user has no specific visualization preference. When set to false, you must explicitly set state.visualization to the desired type.showTitle (boolean) — show/hide section titleshowInput (boolean, default true) — show/hide query editor. Always set to true unless explicitly requested otherwise.height (number, px) — section height (default ~400)drilldownPath — navigation path for drilldown interactionsfilterSegments — section-level filter segmentsdavis — Davis AI copilot configurationNotebooks support: table, lineChart, areaChart, barChart, categoricalBarChart, pieChart, donutChart, singleValue, bandChart, histogram, honeycomb, raw, recordView
$Var, array($Var)), dependency resolution, variable validation.x, y, w, h.content.defaultTimeframe sets the default, and each section can override via section.state.input.timeframe. Hardcoded time filters in queries are acceptable in notebooks.Use the scripts in scripts/:
notebook-validator.js — Validates notebook structure and executes all DQL queries. Run via:
cat notebook.json | jq '{notebook: .}' | dtctl exec function -f scripts/notebook-validator.js --data - --plain | jq -r .result
Or by notebook ID: echo '{"notebookId":"<id>"}' | dtctl exec function -f scripts/notebook-validator.js --data - --plain | jq -r .result
deploy_notebook.sh — Validates then deploys:
bash scripts/deploy_notebook.sh notebook.json
bash scripts/deploy_notebook.sh --dry-run notebook.json
Work with Dynatrace dashboards - create, modify, query, and analyze dashboard JSON including tiles, layouts, DQL queries, variables, and visualizations.
Core DQL syntax rules, common pitfalls, and query patterns. Load this skill when you need to write, build, or fix a DQL query — it prevents syntax errors and guides correct usage. Covers fetch commands, data models, field namespaces, time alignment, entity patterns, metric discovery, and smartscape topology navigation. Trigger: "write a DQL query", "build me a query", "DQL syntax", "how do I query logs/spans/metrics in Dynatrace", "create a timeseries", "fix my DQL", "fetch logs", "smartscapeNodes", "query optimization". Do NOT use for explaining an existing query or answering Dynatrace product questions — those do not require query-construction guidance.
Migrate Dynatrace classic and Gen2 entity-based DQL to Smartscape equivalents. Covers three scenarios. (1) mass data queries filtered by classic entity conditions — migrate to direct dimension filters first, Smartscape only as fallback; (2) mass data queries using entity subqueries for filtering — same dimension-first strategy; (3) pure entity list queries — migrate fetch dt.entity.* to smartscapeNodes. Also handles entityName, entityAttr, classicEntitySelector, and classic relationship patterns.
AWS cloud resource monitoring including EC2, RDS, Lambda, ECS/EKS, VPC networking, load balancers, S3, DynamoDB, SQS/SNS, and cost optimization. Use when analyzing AWS infrastructure, resource inventory, security compliance, capacity planning, or cost savings. Trigger: "show EC2 instances", "find RDS databases", "VPC resources", "AWS cost optimization", "Lambda functions", "ECS services", "security groups", "unattached EBS volumes", "AWS load balancer topology", "publicly accessible databases", "AWS dashboards". Do NOT use for explaining existing queries, product documentation questions, generic host CPU/memory metrics (use dt-obs-hosts), application-level tracing (use dt-obs-tracing), or log analysis (use dt-obs-logs).
Azure cloud resources including VMs, VMSS, SQL Database, Storage, AKS, App Service, Functions, VNet networking, load balancers, Event Hubs, Container Apps, and Key Vault. Monitor Azure infrastructure, analyze resource usage, audit security posture, and manage organizational hierarchy across subscriptions and resource groups.
GCP cloud resources including Compute Engine, GKE, Cloud Run, Pub/Sub, VPC networking, DNS, IAM, Secret Manager, and monitoring. Monitor GCP infrastructure, analyze resource usage, audit security posture, and manage organizational hierarchy across projects and folders.