Skip to main content
The Gauge panel displays values using radial (circular or arc) or linear gauges with extensive customization options for appearance and behavior.

Overview

The Gauge panel is ideal for:
  • Visualizing values within a min/max range
  • Displaying KPIs with threshold markers
  • Showing progress or capacity metrics
  • Creating dashboard health indicators
Grafana has two gauge implementations. The new gauge (v2) is enabled via the newGauge feature toggle. This documentation covers the v2 implementation.

Panel Options

The Gauge panel is defined in public/app/plugins/panel/gauge/v2/module.tsx:14:
export const plugin = new PanelPlugin<Options>(GaugePanel)
  .useFieldConfig({})
  .setPanelOptions((builder) => {
    addStandardDataReduceOptions(builder);
    // ... gauge-specific options
  })
  .setSuggestionsSupplier(gaugeSuggestionsSupplier)
  .setMigrationHandler(gaugePanelMigrationHandler, shouldMigrateGauge)
  .setPanelChangeHandler(gaugePanelChangedHandler);

Options Interface

From public/app/plugins/panel/gauge/panelcfg.gen.ts:27:
interface Options extends SingleStatBaseOptions {
  barShape: 'flat' | 'rounded';
  barWidthFactor: number;
  effects: GaugePanelEffects;
  endpointMarker?: 'point' | 'glow' | 'none';
  minVizHeight: number;
  minVizWidth: number;
  neutral?: number;
  segmentCount: number;
  segmentSpacing: number;
  shape: 'circle' | 'gauge';
  showThresholdLabels: boolean;
  showThresholdMarkers: boolean;
  sizing: BarGaugeSizing;
  sparkline?: boolean;
  textMode?: 'auto' | 'value_and_name' | 'value' | 'name' | 'none';
}

Default Options

From public/app/plugins/panel/gauge/panelcfg.gen.ts:45:
const defaultOptions: Partial<Options> = {
  barShape: 'flat',
  barWidthFactor: 0.5,
  effects: {},
  endpointMarker: 'point',
  minVizHeight: 75,
  minVizWidth: 75,
  segmentCount: 1,
  segmentSpacing: 0.3,
  shape: 'gauge',
  showThresholdLabels: false,
  showThresholdMarkers: true,
  sizing: BarGaugeSizing.Auto,
  sparkline: true,
  textMode: 'auto',
};

Gauge Configuration

Shape

Choose gauge style (from public/app/plugins/panel/gauge/v2/module.tsx:21):
enum GaugeShape {
  Circle = 'circle',  // Full circle (360°)
  Gauge = 'gauge'     // Arc/semicircle (180°)
}

Orientation

Control layout direction:
enum VizOrientation {
  Auto = 'auto',         // Automatic based on panel size
  Horizontal = 'horizontal',
  Vertical = 'vertical'
}

Sizing

From public/app/plugins/panel/gauge/v2/module.tsx:37:
enum BarGaugeSizing {
  Auto = 'auto',    // Automatic sizing
  Manual = 'manual' // Manual width/height control
}
When using manual sizing:
  • Vertical orientation: Set minVizWidth (0-600px)
  • Horizontal orientation: Set minVizHeight (0-600px)

Bar Width Factor

Control the thickness of the gauge bar (from public/app/plugins/panel/gauge/v2/module.tsx:79):
barWidthFactor: number  // 0.1 to 1.0 (default: 0.5)

Segments

Divide the gauge into discrete segments (from public/app/plugins/panel/gauge/v2/module.tsx:91):
segmentCount: number  // 1 to 100 (default: 1)
segmentSpacing: number  // 0 to 1 (default: 0.3)
Segment spacing is only visible when segmentCount > 1.

Bar Shape

Control bar appearance (from public/app/plugins/panel/gauge/v2/module.tsx:116):
enum BarShape {
  Flat = 'flat',        // Flat ends
  Rounded = 'rounded'   // Rounded ends
}
Bar shape only applies when segmentCount === 1.

Endpoint Marker

Add a marker at the gauge endpoint (from public/app/plugins/panel/gauge/v2/module.tsx:130):
enum EndpointMarker {
  Point = 'point',  // Circular point
  Glow = 'glow',    // Glowing effect (dark mode only)
  None = 'none'     // No marker
}
Endpoint marker only appears when barShape === 'rounded' and segmentCount === 1.

Visual Effects

From public/app/plugins/panel/gauge/panelcfg.gen.ts:15:
interface GaugePanelEffects {
  barGlow?: boolean;     // Glow effect on bar
  centerGlow?: boolean;  // Glow effect at center
  gradient?: boolean;    // Gradient fill
}

const defaultGaugePanelEffects: Partial<GaugePanelEffects> = {
  barGlow: false,
  centerGlow: false,
  gradient: true,
};
Configured via custom editor at public/app/plugins/panel/gauge/v2/module.tsx:195.

Display Options

Text Mode

Control text display (from public/app/plugins/panel/gauge/v2/module.tsx:146):
enum TextMode {
  Auto = 'auto',
  ValueAndName = 'value_and_name',
  Value = 'value',
  Name = 'name',
  None = 'none'
}

Neutral Value

Set a neutral point for the gauge (from public/app/plugins/panel/gauge/v2/module.tsx:162):
neutral?: number  // If not set, uses min value as neutral

Sparkline

Show a mini time series chart (from public/app/plugins/panel/gauge/v2/module.tsx:173):
sparkline?: boolean  // Default: true

Threshold Display

From public/app/plugins/panel/gauge/v2/module.tsx:180:
showThresholdMarkers: boolean  // Show threshold lines (default: true)
showThresholdLabels: boolean   // Show threshold values (default: false)

Text Size

Configure text sizing:
interface TextSize {
  titleSize?: number;   // Title font size
  valueSize?: number;   // Value font size
}

Panel JSON Examples

Basic Gauge

{
  "type": "gauge",
  "title": "CPU Usage",
  "gridPos": { "x": 0, "y": 0, "w": 6, "h": 6 },
  "targets": [
    {
      "datasource": { "type": "prometheus" },
      "expr": "avg(cpu_usage_percent)"
    }
  ],
  "options": {
    "shape": "gauge",
    "orientation": "auto",
    "sizing": "auto",
    "barWidthFactor": 0.6,
    "segmentCount": 1,
    "barShape": "rounded",
    "endpointMarker": "point",
    "showThresholdMarkers": true,
    "showThresholdLabels": false,
    "sparkline": true,
    "textMode": "value_and_name",
    "effects": {
      "gradient": true,
      "barGlow": false,
      "centerGlow": false
    },
    "reduceOptions": {
      "values": false,
      "calcs": ["lastNotNull"]
    }
  },
  "fieldConfig": {
    "defaults": {
      "unit": "percent",
      "min": 0,
      "max": 100,
      "thresholds": {
        "mode": "absolute",
        "steps": [
          { "value": 0, "color": "green" },
          { "value": 70, "color": "yellow" },
          { "value": 90, "color": "red" }
        ]
      }
    },
    "overrides": []
  }
}

Segmented Gauge

{
  "type": "gauge",
  "title": "Memory Usage",
  "options": {
    "shape": "circle",
    "segmentCount": 20,
    "segmentSpacing": 0.1,
    "barWidthFactor": 0.4,
    "showThresholdMarkers": false,
    "showThresholdLabels": true,
    "sparkline": false,
    "textMode": "value",
    "effects": {
      "gradient": false,
      "barGlow": true
    }
  },
  "fieldConfig": {
    "defaults": {
      "unit": "bytes",
      "min": 0,
      "max": 17179869184,
      "thresholds": {
        "mode": "absolute",
        "steps": [
          { "value": 0, "color": "blue" },
          { "value": 12884901888, "color": "yellow" },
          { "value": 15032385536, "color": "red" }
        ]
      }
    }
  }
}

Gauge with Neutral Value

{
  "type": "gauge",
  "title": "Temperature Delta",
  "options": {
    "shape": "gauge",
    "neutral": 0,
    "barShape": "rounded",
    "endpointMarker": "glow",
    "showThresholdLabels": true,
    "textMode": "value_and_name"
  },
  "fieldConfig": {
    "defaults": {
      "unit": "celsius",
      "min": -20,
      "max": 20,
      "thresholds": {
        "mode": "absolute",
        "steps": [
          { "value": -20, "color": "blue" },
          { "value": -10, "color": "light-blue" },
          { "value": 0, "color": "green" },
          { "value": 10, "color": "orange" },
          { "value": 15, "color": "red" }
        ]
      }
    }
  }
}

Multiple Gauges with Manual Sizing

{
  "type": "gauge",
  "title": "System Metrics",
  "options": {
    "shape": "gauge",
    "orientation": "vertical",
    "sizing": "manual",
    "minVizWidth": 100,
    "barWidthFactor": 0.5,
    "showThresholdMarkers": true,
    "textMode": "value_and_name",
    "reduceOptions": {
      "values": false,
      "calcs": ["lastNotNull"]
    }
  },
  "targets": [
    {
      "datasource": { "type": "prometheus" },
      "expr": "cpu_usage_percent",
      "legendFormat": "CPU"
    },
    {
      "datasource": { "type": "prometheus" },
      "expr": "memory_usage_percent",
      "legendFormat": "Memory"
    },
    {
      "datasource": { "type": "prometheus" },
      "expr": "disk_usage_percent",
      "legendFormat": "Disk"
    }
  ],
  "fieldConfig": {
    "defaults": {
      "unit": "percent",
      "min": 0,
      "max": 100,
      "thresholds": {
        "mode": "absolute",
        "steps": [
          { "value": 0, "color": "green" },
          { "value": 70, "color": "yellow" },
          { "value": 90, "color": "red" }
        ]
      }
    },
    "overrides": []
  }
}

Data Reduce Options

Like the Stat panel, the Gauge panel uses reduce options to convert multiple values to a single displayable value:
interface ReduceDataOptions {
  values: boolean;    // Show all values or reduce to one
  fields?: string;    // Field name pattern
  limit?: number;     // Max number of values
  calcs: string[];    // Reducer functions
}
Common reducers:
  • lastNotNull - Last non-null value (most common)
  • last - Last value
  • mean - Average
  • min - Minimum
  • max - Maximum
  • sum - Sum

Advanced Features

Thresholds and Colors

Gauges use thresholds to determine colors. Define multiple threshold steps:
{
  "thresholds": {
    "mode": "absolute",
    "steps": [
      { "value": 0, "color": "green" },
      { "value": 50, "color": "yellow" },
      { "value": 75, "color": "orange" },
      { "value": 90, "color": "red" }
    ]
  }
}
Or use percentage mode:
{
  "thresholds": {
    "mode": "percentage",
    "steps": [
      { "value": 0, "color": "green" },
      { "value": 50, "color": "yellow" },
      { "value": 80, "color": "red" }
    ]
  }
}

Field Overrides

Apply different settings to specific gauges:
{
  "fieldConfig": {
    "defaults": { /* default config */ },
    "overrides": [
      {
        "matcher": { "id": "byName", "options": "CPU" },
        "properties": [
          { "id": "max", "value": 100 },
          { "id": "unit", "value": "percent" }
        ]
      },
      {
        "matcher": { "id": "byName", "options": "Temperature" },
        "properties": [
          { "id": "min", "value": 0 },
          { "id": "max", "value": 100 },
          { "id": "unit", "value": "celsius" },
          {
            "id": "thresholds",
            "value": {
              "mode": "absolute",
              "steps": [
                { "value": 0, "color": "blue" },
                { "value": 60, "color": "green" },
                { "value": 80, "color": "red" }
              ]
            }
          }
        ]
      }
    ]
  }
}

Implementation Details

The Gauge panel uses the new v2 implementation when the newGauge feature toggle is enabled (from public/app/plugins/panel/gauge/module.tsx:6):
export const plugin = config.featureToggles.newGauge ? pluginV2 : pluginV1;
Key files:
  • public/app/plugins/panel/gauge/v2/module.tsx - Plugin definition (v2)
  • public/app/plugins/panel/gauge/v2/GaugePanel.tsx - Component implementation
  • public/app/plugins/panel/gauge/v2/EffectsEditor.tsx - Visual effects editor
  • public/app/plugins/panel/gauge/panelcfg.gen.ts - Generated types
The Gauge panel extends SingleStatBaseOptions, sharing common functionality with Stat and Bar Gauge panels.

Stat Panel

Display single values with sparklines

Graph Panel

Visualize time series data

Build docs developers (and LLMs) love