Work with Dynatrace dashboards - create, modify, query, and analyze dashboard JSON including tiles, layouts, DQL queries, variables, and visualizations. Supports dashboard creation, updates, data extraction, structure analysis, and best practices.
Dynatrace dashboards are JSON documents stored in the Document Store. Each dashboard contains:
$VariableName) for query filteringWhen to use this skill:
Four main workflows:
Dashboards in the Dynatrace Document Store include both metadata and content:
{
"id": "dashboard-abc123",
"name": "My Dashboard",
"type": "dashboard",
"owner": "user-uuid",
"version": 60,
"modificationInfo": {...},
"content": {
"version": 21,
"variables": [],
"tiles": {...},
"layouts": {...}
}
}
Metadata (top-level):
.id - Document ID.name - Dashboard name.owner - Owner UUID.version - Document version (change tracking).modificationInfo - Creation/modification timestampsDashboard content (.content):
.content.version - Dashboard schema version (current: 21).content.tiles - Tile definitions.content.layouts - Tile positioning.content.variables - Dashboard variablesAll jq examples in this skill use the .content.* paths.
This skill uses progressive disclosure - load only what you need:
Loading strategy:
💡 Tip: Reference files are linked throughout this document with
→arrows pointing to when you should load them.
For detailed workflows and mandatory requirements:
references/create-update.md for
complete workflow, skill-based query generation, validation, and
modification patternsreferences/analyzing.md for structure
analysis, health assessment, and JSON extraction⚠️ MANDATORY for creation/modification:
Follow this exact order (do not reorder):
dtctl query "<DQL>" --plainFull requirements and examples: references/create-update.md.
{
"name": "My Dashboard",
"type": "dashboard",
"content": {
"version": 21,
"tiles": {},
"layouts": {}
}
}
Optional properties inside content:
variables - Array of dashboard variables (filters/parameters)settings - Dashboard-level settings (grid layout, default timeframe)refreshRate - Dashboard refresh rate in milliseconds (e.g., 60000)gridColumnsCount - Number of grid columns (default: 20)annotations - Array of dashboard annotationsStructure concept: Variables define reusable parameters, tiles contain
content/visualizations, layouts control positioning. Each tile ID in tiles
must have a corresponding entry in layouts.
📊 For detailed tile specifications, visualization settings, and query configuration, load
references/tiles.md
Markdown tiles: {"type": "markdown", "content": "# Title"}
Data tiles: {"type": "data", "title": "...", "query": "...", "visualization": "..."}
Visualizations:
timeseries/makeTimeseries): lineChart, areaChart, barChart, bandChartsummarize ... by:{field}): categoricalBarChart, pieChart, donutChartsingleValue, meterBar, gaugetable, raw, recordListhistogram, honeycombchoroplethMap, dotMap, connectionMap, bubbleMapheatmap, scatterplot→ See references/tiles.md for specifications
📐 For complex layout patterns, grid system details, and positioning examples, load
references/layouts.md
Grid: 20 units wide. Common widths: Full (20), Half (10), Third (6-7),
Quarter (5)
Properties: x (0-19), y (0+), w (1-20), h (1-20)
Example: {"1": {"x": 0, "y": 0, "w": 20, "h": 1}, "2": {"x": 0, "y": 1, "w": 10, "h": 8}}
→ See references/layouts.md for patterns
🔧 For detailed variable configurations, replacement strategies, multi-select, and limitations, load
references/variables.md
Definition: {"version": 2, "key": "ServiceFilter", "type": "query", "visible": true, "editable": true, "input": "smartscapeNodes SERVICE | fields name", "multiple": false, "defaultValue": "*"}
Usage (single-select): fetch logs | filter service.name == $ServiceFilter
Usage (multi-select): fetch logs | filter in(service.name, array($ServiceFilter))
→ See references/variables.md for complete
property reference, replacement strategies (:noquote, :backtick), and
usage patterns
⚠️ MANDATORY for create/update workflows: Validate the dashboard JSON before deploying. Check:
name, type, content)
and content keys (version, variables, tiles, layouts)→ Load references/create-update.md for full validation workflow.
| Reference File | When to Use |
|---|---|
| create-update.md | Creating and updating dashboards - workflows, skill-based queries, validation, patterns |
| tiles.md | Tile types, visualization settings, query configuration, thresholds |
| layouts.md | Grid system details, layout patterns, positioning examples |
| variables.md | Variable types, multi-select, default values, query integration |
| analyzing.md | Structure analysis, purpose identification, health assessment, JSON extraction |
Patterns: Executive (header + KPIs + trends) · Service Health (RED metrics) · Infrastructure (resource metrics + tables)
Key rules: Match tile IDs in tiles and layouts · Use descriptive
variable IDs · Start with full-width headers (y=0) · Optimize queries with
limit/summarize · Set version=21 · No time-range filters in queries
unless explicitly requested by the user