Dashboards

Dashboards bring multiple visualizations together into a single, interactive view. They are the primary way to monitor, analyze, and share data insights in Kibana.

Creating a Dashboard

From Scratch

  1. Go to Dashboard in the navigation menu
  2. Click "Create dashboard"
  3. You'll see an empty dashboard with options to add panels

Adding Panels

Click "Create visualization" or "Add from library":

Create visualization: Build a new Lens, aggregation-based, or TSVB visualization directly within the dashboard.

Add from library: Reuse an existing saved visualization.

┌─────────────────────────────────────────────────────┐
│  My Dashboard                    [Save] [Share] [⋯]  │
├─────────────────────────────────────────────────────┤
│  [+ Create visualization]  [+ Add from library]      │
├──────────────────────┬──────────────────────────────┤
│                      │                              │
│  Total Revenue       │  Total Orders                │
│  $125,430.00         │  4,675                       │
│                      │                              │
├──────────────────────┴──────────────────────────────┤
│                                                     │
│  Revenue Over Time (Line Chart)                     │
│  ─────/\──────/\──/\───────                         │
│                                                     │
├─────────────────────┬───────────────────────────────┤
│  Top Products       │  Sales by Category            │
│  ▓▓▓▓▓▓ Product A   │      ╭───╮                    │
│  ▓▓▓▓▓ Product B    │    /       \                  │
│  ▓▓▓▓ Product C     │   │  Pie    │                 │
│  ▓▓▓ Product D      │    \       /                  │
│                     │      ╰───╯                    │
└─────────────────────┴───────────────────────────────┘

Panel Types

You can add several panel types to a dashboard:

Panel TypeDescriptionUse Case
LensDrag-and-drop visualizationMost common, quick charts
Aggregation-basedTraditional charts with full controlComplex aggregations
TSVBTime series builderMulti-index time series
VegaCode-based custom visualsHighly custom charts
MapsGeographic visualizationLocation-based data
MarkdownFormatted textTitles, instructions, notes
ControlsInput filtersDynamic user filtering
Saved searchEmbedded Discover tableRaw data alongside charts
Log streamScrolling log viewReal-time log monitoring
ImageUploaded imageLogos, diagrams

Arranging Panels

Resizing

  1. Enter Edit mode (click pencil icon or "Edit" button)
  2. Hover over a panel edge or corner
  3. Click and drag to resize
  4. Release when satisfied

Moving

  1. In Edit mode, hover over the panel header
  2. Click and drag the panel to a new position
  3. Other panels reflow automatically

Layout Grid

Kibana uses a 48-column grid system:

Recommended layouts:

Full width:     [──────────────────────────────────────]
Half width:     [──────────────────] [──────────────────]
Thirds:         [────────────] [────────────] [────────────]
Quarter + rest: [──────────] [────────────────────────────]

Tips for layout:

  • Place KPI metrics across the top row
  • Put time-series charts in wider panels (full or half width)
  • Side-by-side comparisons use equal width panels
  • Tables and lists work well at full width

Panel Options

Click the gear icon (⚙️) on any panel to configure:

  • Custom time range: Override the dashboard time range for this panel
  • Title: Set a custom title (overrides saved visualization title)
  • Description: Tooltip description
  • Hide panel title: Remove header for cleaner look

Dashboard Controls

Input Controls

Add interactive filters that let users refine dashboard data without editing:

  1. Click "Add panel""Controls"
  2. Choose control type:
Control TypePurposeExample
Options listDropdown selectionSelect category, status
Range sliderNumeric rangePrice range, age
Time sliderTime range scrubberDrag through time

Adding an Options List Control

  1. In Edit mode, click "Controls""Add control"
  2. Data view: kibana_sample_data_ecommerce
  3. Field: category.keyword
  4. Label: "Product Category"
  5. Click "Save"

Users can now filter the entire dashboard by selecting a category from the dropdown.

Adding a Range Slider

  1. Add control → Range slider
  2. Field: taxful_total_price
  3. Label: "Price Range"
  4. Min: 0, Max: 500
  5. Step: 10

Users drag the slider to filter by price range.

Control Settings

Configure how controls behave:

Settings:
- Apply selections automatically: Yes/No
- Cascade controls: Yes (second control filters based on first)
- Width: Small / Medium / Large
- Grow: Expand to fill available space

Filtering Dashboards

Global Filters

Filters applied at the dashboard level affect all panels:

  1. Click "+ Add filter" in the filter bar
  2. Field: geoip.country_iso_code
  3. Operator: is
  4. Value: US
  5. Click "Save"

All panels now show only US data.

Time Picker

The time picker in the top-right controls the time range for the entire dashboard:

Common configurations:
- Real-time monitoring:  Last 15 minutes, auto-refresh every 30s
- Daily review:          Today
- Weekly report:         Last 7 days
- Historical analysis:   Custom date range

Auto-Refresh

Set dashboards to refresh automatically:

  1. Click time picker → "Refresh every"
  2. Choose interval: 5s, 10s, 30s, 1m, 5m, etc.
  3. Click "Start"
Recommended refresh intervals:

Real-time operations:     5-10 seconds
Monitoring dashboards:    30 seconds - 1 minute
Daily analytics:          5-15 minutes
Historical data:          No auto-refresh needed

Query Bar

Use KQL in the query bar to filter across all panels:

# Show only failed requests
response: 503 OR response: 500

# Filter by user agent
agent: "Mozilla*" AND NOT agent: "*bot*"

# Combine with time for incident investigation
response: 500 AND url.path: "/api/checkout"

Drilldowns

Drilldowns add interactive navigation to dashboard panels.

URL Drilldown

Navigate to an external URL when a user clicks a panel element:

  1. In Edit mode, click panel menu → "Create drilldown"
  2. Choose "Go to URL"
  3. Configure:
Name: View in JIRA
URL template: https://jira.example.com/browse/{{event.value}}

Variables available:
- {{event.value}}       - Clicked value
- {{event.key}}         - Field name
- {{context.panel.id}}  - Panel ID

Dashboard Drilldown

Navigate to another dashboard with context:

  1. Click panel menu → "Create drilldown"
  2. Choose "Go to dashboard"
  3. Select target dashboard
  4. Configure filter transfer:
Name: View Order Details
Target: Order Details Dashboard
Carry over filters: Yes
Carry over time range: Yes
Use clicked value as filter: Yes

Example workflow:

  1. User sees "Top Categories" bar chart on overview dashboard
  2. Clicks "Men's Clothing" bar
  3. Drills down to "Category Detail Dashboard" filtered to Men's Clothing

Saving Dashboards

Save Options

Click "Save" in the top menu:

Save dashboard:
- Title: "E-Commerce Revenue Dashboard"
- Description: "Real-time revenue monitoring and product analysis"
- Tags: ["ecommerce", "revenue", "production"]
- Store time with dashboard: Yes/No
- Save as new: creates a copy

Store time with dashboard: When enabled, opening the dashboard restores the saved time range instead of using the global default.

Tagging

Tags help organize dashboards:

Suggested tag scheme:
- Team:        marketing, engineering, support
- Environment: production, staging, development
- Type:        monitoring, analytics, reporting
- Priority:    critical, important, reference

Sharing Dashboards

Share Menu Options

Click "Share" in the top menu:

MethodDescriptionUse Case
PermalinkDirect URL to dashboardShare with team members
Short URLShortened versionEmbed in chat, email
PDF ReportGenerated PDF fileEmailed reports
PNG ImageScreenshot of dashboardPresentations
CSV ExportExport panel dataData analysis in spreadsheets
Embed codeiframe HTML snippetEmbed in web pages

Generating a PDF Report

  1. Click SharePDF Reports
  2. Choose:
    • Optimize for printing: Better layout for PDF
    • Use current time range: Snapshot of current view
  3. Click "Generate PDF"
  4. Download from the notification or Stack ManagementReporting

Embedding Dashboards

To embed in a web page:

  1. Click ShareEmbed code
  2. Copy the iframe snippet:
<iframe
  src="https://kibana.example.com/app/dashboards#/view/abc123?embed=true"
  height="600"
  width="800"
  frameborder="0"
></iframe>

Options:

  • &_g=(time:(from:now-7d,to:now)) - Set time range
  • &show-query-input=true - Show search bar
  • &show-time-filter=true - Show time picker
  • &hide-filter-bar=true - Hide filter pills

Cloning and Copying

Clone a Dashboard

Create an exact copy:

  1. Open the dashboard
  2. Click "...""Clone"
  3. New name: "E-Commerce Dashboard (Copy)"
  4. Modify the copy without affecting the original

Copy Panels Between Dashboards

  1. Open source dashboard in Edit mode
  2. Click panel menu → "More""Copy to dashboard"
  3. Select target dashboard
  4. Panel appears in target dashboard

Import/Export

Export dashboards for backup or transfer:

Export:

  1. Go to Stack ManagementSaved Objects
  2. Select dashboards to export
  3. Click "Export"
  4. Choose: Include related objects (visualizations, index patterns)
  5. Download .ndjson file

Import:

  1. Go to Stack ManagementSaved Objects
  2. Click "Import"
  3. Select .ndjson file
  4. Handle conflicts:
    • Overwrite: Replace existing objects
    • Create new: Generate new IDs
# Export via API
curl -X POST "localhost:5601/api/saved_objects/_export" \
  -H "kbn-xsrf: true" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "dashboard",
    "includeReferencesDeep": true
  }' > dashboards.ndjson

# Import via API
curl -X POST "localhost:5601/api/saved_objects/_import" \
  -H "kbn-xsrf: true" \
  --form file=@dashboards.ndjson

Dashboard Design Patterns

1. Monitoring Dashboard

Real-time operational monitoring:

Row 1: [Status] [Error Rate] [Avg Response] [Active Users]
Row 2: [─────── Request Rate Over Time ─────────────────]
Row 3: [─── Error Breakdown ───] [─── Top Endpoints ───]
Row 4: [─────────── Log Stream (live) ──────────────────]

2. Executive Summary

High-level metrics for stakeholders:

Row 1: [Revenue ↑12%] [Orders ↑8%] [Customers ↑5%] [AOV ↓2%]
Row 2: [──── Revenue Trend (30 days) ────────────────────]
Row 3: [─ Top Categories ─] [─ Top Regions ─] [─ Funnel ─]

3. Investigation Dashboard

Deep-dive analysis with controls:

Row 1: [Category ▼] [Status ▼] [Date Range ═══○═══]
Row 2: [──── Timeline ──────────────────────────────────]
Row 3: [─── Detail Table (saved search) ────────────────]
Row 4: [─ Breakdown A ─] [─ Breakdown B ─] [─ Map ────]

4. Comparison Dashboard

Side-by-side period comparison:

Row 1: [This Week Revenue] [Last Week Revenue] [% Change]
Row 2: [── This Week ──────] [── Last Week ──────]
Row 3: [── Category Compare (grouped bar) ─────────────]

Performance Optimization

Panel Count

✅ 10-15 panels per dashboard (fast loading)
✅ 20-25 panels (acceptable with optimization)
❌ 50+ panels (slow, consider splitting into multiple dashboards)

Query Optimization

  • Use filters over queries: Filters are cached by Elasticsearch
  • Limit cardinality: Use Top 10 instead of Top 1000 in terms aggregations
  • Narrow time range: Shorter time ranges query less data
  • Use keyword fields: Always aggregate on .keyword fields

Loading Strategy

Dashboard loading order:
1. Dashboard structure loads
2. Each panel sends its query
3. Panels render as responses return

Optimization:
- Put critical panels at the top (they render first)
- Use "Last value" for metrics instead of aggregations where possible
- Consider "sample" mode for high-cardinality data

Caching

Kibana caches dashboard queries:

# kibana.yml - cache settings
elasticsearch.requestTimeout: 30000    # 30 seconds timeout
elasticsearch.shardTimeout: 30000      # Per-shard timeout

Practical Examples

Example 1: Building a Web Server Dashboard

Step 1: Create KPI metrics

Panel 1: Total Requests (Count)
Panel 2: Error Rate (Count where response >= 400 / Total Count)
Panel 3: Avg Response Time (Average of response_time)
Panel 4: Unique Visitors (Unique Count of clientip)

Step 2: Add time series

Panel 5: Requests Over Time
- X-axis: @timestamp (auto interval)
- Y-axis: Count
- Split by: response (200, 404, 500)

Step 3: Add breakdowns

Panel 6: Top URLs (Bar chart, Top 10 url.keyword by count)
Panel 7: Response Code Distribution (Pie chart, response.keyword)
Panel 8: Geographic Map (clientip geolocation)

Step 4: Add controls and save

Control 1: Response code dropdown
Control 2: URL path filter
Control 3: Time range slider

Example 2: Business Metrics Dashboard

Data view: kibana_sample_data_ecommerce

Panels:
1. Metric: Sum of taxful_total_price       → "Total Revenue"
2. Metric: Count                            → "Total Orders"
3. Metric: Unique Count of customer_id      → "Unique Customers"
4. Line: taxful_total_price sum over time   → "Revenue Trend"
5. Bar: Top 10 products by revenue          → "Top Products"
6. Pie: category.keyword by count           → "Category Split"
7. Table: manufacturer, count, sum, avg     → "Manufacturer Summary"
8. Control: category.keyword dropdown       → Filter

Common Issues

Dashboard loads slowly

Causes and fixes:

  1. Too many panels → Split into linked dashboards with drilldowns
  2. Wide time range → Narrow to relevant period
  3. High-cardinality aggregations → Limit to Top 10-20
  4. Missing keyword fields → Use .keyword for aggregations

Panels show different time ranges

Cause: Individual panels have custom time overrides.

Fix: Check panel settings → Remove custom time range to inherit from dashboard.

Filters don't affect all panels

Cause: Panels use different data views, or filters target fields not in all indices.

Fix: Ensure all panels use compatible data views, or use query bar instead of field-specific filters.

"Could not locate that dashboard"

Cause: Dashboard was deleted, or you lack permissions.

Fix: Check Saved Objects in Stack Management. Verify your role has access to the dashboard's Space.

Summary

In this chapter, you learned:

  • ✅ Creating dashboards and adding panels
  • ✅ Arranging and sizing panels for effective layouts
  • ✅ Adding interactive controls for user filtering
  • ✅ Configuring drilldowns for dashboard navigation
  • ✅ Sharing dashboards via links, PDF, and embedding
  • ✅ Import/export for backup and migration
  • ✅ Dashboard design patterns for different use cases
  • ✅ Performance optimization techniques

Next: Mastering the Kibana Query Language for precise data filtering!