Skip to content

Grafana Dashboards

Connect HolmesGPT to Grafana for dashboard analysis, visual rendering, query extraction, and understanding your monitoring setup. When the Grafana Image Renderer is installed, HolmesGPT can visually render dashboards and panels to detect anomalies like spikes, trends, and outliers.

Prerequisites

A Grafana service account token with the following permissions:

  • Basic role → Viewer

For visual rendering, the Grafana Image Renderer plugin must be installed on your Grafana instance and enable_rendering: true must be set in the config. HolmesGPT auto-detects the renderer — if it's not installed, visual rendering tools are simply not registered and everything else works normally.

Configuration

Add the following to ~/.holmes/config.yaml. Create the file if it doesn't exist:

toolsets:
  grafana/dashboards:
    enabled: true
    config:
      api_key: <your grafana service account token>
      api_url: <your grafana url>  # e.g. https://acme-corp.grafana.net or http://localhost:3000
      # Optional: Additional headers for all requests
      # additional_headers:
      #   X-Custom-Header: "custom-value"

After making changes to your configuration, run:

holmes toolset refresh

To test, run:

holmes ask "Show me all dashboards tagged with 'kubernetes'"
holmes:
  toolsets:
    grafana/dashboards:
      enabled: true
      config:
        api_key: <your grafana API key>
        api_url: <your grafana url>  # e.g. https://acme-corp.grafana.net
        # Optional: Additional headers for all requests
        # additional_headers:
        #   X-Custom-Header: "custom-value"

Visual Rendering

When the Grafana Image Renderer is available, HolmesGPT can take screenshots of dashboards and panels and analyze them using the LLM's vision capabilities. This is useful for:

  • Spotting anomalous spikes or patterns across many panels at once
  • Analyzing visual dashboard layouts without parsing raw query data
  • Investigating dashboards that use complex visualizations (heatmaps, gauges, etc.)

The LLM controls all rendering parameters — time range, dimensions, theme, timezone, and template variables — so it can zoom in on specific time windows or adjust the view as needed during investigation.

Rendering is disabled by default. To enable it, add enable_rendering: true to your config:

toolsets:
  grafana/dashboards:
    enabled: true
    config:
      api_url: <your grafana url>
      api_key: <your api key>
      enable_rendering: true
toolsets:
  grafana/dashboards:
    enabled: true
    config:
      api_url: <your grafana url>
      api_key: <your api key>
      enable_rendering: true
holmes:
  toolsets:
    grafana/dashboards:
      enabled: true
      config:
        api_url: <your grafana url>
        api_key: <your api key>
        enable_rendering: true

When rendering a full dashboard, HolmesGPT captures the entire page (all rows) so that panels at the bottom are not cropped.

Advanced Configuration

SSL Verification

For self-signed certificates, you can disable SSL verification:

toolsets:
  grafana/dashboards:
    enabled: true
    config:
      api_url: https://grafana.internal
      api_key: <your api key>
      verify_ssl: false  # Disable SSL verification (default: true)
toolsets:
  grafana/dashboards:
    enabled: true
    config:
      api_url: https://grafana.internal
      api_key: <your api key>
      verify_ssl: false
holmes:
  toolsets:
    grafana/dashboards:
      enabled: true
      config:
        api_url: https://grafana.internal
        api_key: <your api key>
        verify_ssl: false

External URL

If HolmesGPT accesses Grafana through an internal URL but you want clickable links in results to use a different URL:

toolsets:
  grafana/dashboards:
    enabled: true
    config:
      api_url: http://grafana.internal:3000  # Internal URL for API calls
      external_url: https://grafana.example.com  # URL for links in results
      api_key: <your api key>
toolsets:
  grafana/dashboards:
    enabled: true
    config:
      api_url: http://grafana.internal:3000
      external_url: https://grafana.example.com
      api_key: <your api key>
holmes:
  toolsets:
    grafana/dashboards:
      enabled: true
      config:
        api_url: http://grafana.internal:3000
        external_url: https://grafana.example.com
        api_key: <your api key>

Common Use Cases

holmes ask "Find all dashboards tagged with 'production' or 'kubernetes'"
holmes ask "Show me what metrics the 'Node Exporter' dashboard monitors"
holmes ask "Get the CPU usage queries from the Kubernetes cluster dashboard and check if any nodes are throttling"
holmes ask "Look at the Platform Services dashboard and tell me if any panels show anomalous spikes"
holmes ask "Render the checkout latency panel from the last 24 hours and analyze the trend"