Kibana Dashboards and Visualizations
Declarative, Git-friendly format for defining dashboards and visualizations. Version Requirement: Kibana 9.4+ (SNAPSHOT).
Environment Configuration
export KIBANA_URL="https://your-kibana:5601"
export KIBANA_API_KEY="base64encodedapikey"
Test: node scripts/kibana-dashboards.js test
Basic Workflow
node scripts/kibana-dashboards.js dashboard get <id>
echo '<json>' | node scripts/kibana-dashboards.js dashboard create -
echo '<json>' | node scripts/kibana-dashboards.js dashboard update <id> -
node scripts/kibana-dashboards.js dashboard delete <id>
node scripts/kibana-dashboards.js lens list
node scripts/kibana-dashboards.js lens get <id>
Dashboard Definition
{
"title": "My Dashboard",
"panels": [
{
"type": "lens",
"uid": "metric-panel",
"grid": { "x": 0, "y": 0, "w": 12, "h": 6 },
"config": {
"attributes": {
"title": "",
"type": "metric",
"dataset": { "type": "esql", "query": "FROM logs | STATS total = COUNT(*)" },
"metrics": [{ "type": "primary", "operation": "value", "column": "total" }]
}
}
}
],
"time_range": { "from": "now-24h", "to": "now" }
}
Grid System
48-column, infinite-row grid. Target 8-12 panels above the fold.
| Width | Columns | Use Case |
|---|---|---|
| Full | 48 | Wide time series, tables |
| Half | 24 | Primary charts |
| Quarter | 12 | KPI metrics |
Supported Chart Types
| Type | Description |
|---|---|
metric |
Single metric value display |
xy |
Line, area, bar charts |
gauge |
Gauge visualizations |
heatmap |
Heatmap charts |
datatable |
Data tables |
pie, donut, treemap, mosaic, waffle |
Partition charts |
Dataset Types
- dataView — Use aggregation operations. Kibana performs aggregations automatically.
- esql — Use ES|QL query. Reference output columns with
{ operation: 'value', column: 'col' }. - index — Ad-hoc index patterns.
ES|QL Time Bucketing
Use BUCKET(@timestamp, 75, ?_tstart, ?_tend) for auto-scaling time buckets.
Guidelines
- Design for density — 8-12 panels above the fold.
- Never use Markdown panels for titles/headers.
- Inline Lens definitions — Prefer
config.attributesoverconfig.savedObjectId. - Test connection first — Run
node scripts/kibana-dashboards.js test.