Grafana Error Guide: 'Panel plugin not found: <id>' — Fix Missing or Removed Plugins
Fix 'Panel plugin not found' in Grafana: diagnose uninstalled or removed panel plugins, unsigned plugin blocks, angular deprecation, and version upgrade breakage.
- #grafana
- #troubleshooting
- #errors
- #plugins
Overview
Every Grafana panel is rendered by a plugin, identified by a plugin ID (timeseries, piechart, grafana-worldmap-panel). When a dashboard references a plugin that is not installed, has been removed from Grafana core, or was blocked at startup, the panel cannot render.
The literal error shown in place of the panel:
Panel plugin not found: grafana-worldmap-panel
Panel plugin not found: natel-discrete-panel
You may also see it in the log at startup as a plugin that failed to load. The panel area is replaced with a placeholder while the rest of the dashboard renders normally — the tell that this is a plugin availability problem, not a data problem.
Symptoms
- A single panel shows “Panel plugin not found:
” while other panels work. - After a Grafana upgrade, previously working panels break (deprecated/removed plugins).
- A freshly imported community dashboard has broken panels for exotic visualizations.
- The plugins list does not contain the referenced ID.
Common Root Causes
1. Plugin never installed
The dashboard uses a third-party panel (e.g. grafana-worldmap-panel, grafana-piechart-panel on old versions) that was never installed on this instance.
2. Plugin removed from core in an upgrade
Grafana promoted or removed built-ins across versions; some legacy Angular panels were dropped, so upgrading breaks dashboards built on them.
3. Unsigned plugin blocked
Grafana refuses to load unsigned plugins by default, so an unsigned panel silently fails to register and reads as “not found.”
4. Angular plugin disabled
Newer Grafana disables Angular-based plugins by default (angular_support_enabled = false), so older Angular panels never load.
5. Wrong plugins directory / permissions
The plugin is installed in a path Grafana does not scan, or the container image lacks it.
Diagnostic Workflow
Step 1: Identify the missing plugin ID
The ID is in the error text and in the panel JSON ("type": "grafana-worldmap-panel"). Confirm what is installed:
grafana-cli plugins ls
# Container / Kubernetes
kubectl exec deploy/grafana -n monitoring -- grafana-cli plugins ls
curl -s -H "Authorization: Bearer $GRAFANA_TOKEN" \
http://localhost:3000/api/plugins | jq '.[] | select(.type=="panel") | .id'
Step 2: Check the startup log for load/signature errors
sudo journalctl -u grafana-server --no-pager | grep -iE "plugin|signature|angular" | tail -20
kubectl logs deploy/grafana -n monitoring | grep -iE "plugin|unsigned|angular" | tail -20
grep -iE "plugin|signature" /var/log/grafana/grafana.log | tail -20
Look for plugin disabled due to signature, Angular support is disabled, or error loading plugin.
Step 3: Install the missing plugin
grafana-cli plugins install grafana-worldmap-panel
sudo systemctl restart grafana-server
# Verify
grafana-cli plugins ls | grep worldmap
In Kubernetes, add it to the GF_INSTALL_PLUGINS env var or bake it into the image so it survives pod restarts.
Step 4: Handle unsigned or Angular plugins deliberately
# grafana.ini
[plugins]
allow_loading_unsigned_plugins = my-custom-panel
[angular]
angular_support_enabled = true # only if a legacy Angular panel is required
Prefer migrating to a maintained, signed replacement over re-enabling Angular long term.
Example Root Cause Analysis
After upgrading Grafana, a NOC dashboard shows:
Panel plugin not found: grafana-worldmap-panel
grafana-cli plugins ls does not list it, and the log shows nothing at startup — because the plugin was never installed on the new instance (the old one had it manually installed and the upgrade used a clean image).
Fix: grafana-cli plugins install grafana-worldmap-panel and restart. Since Worldmap is a deprecated Angular plugin, the durable fix is to rebuild the panel as a native Geomap panel (signed, React-based) so the next upgrade cannot break it again. The root cause was an install that lived outside version control and did not carry over.
Prevention Best Practices
- Declare required plugins in config management or
GF_INSTALL_PLUGINS, never install ad hoc; see more Grafana guides. - Bake plugins into your container image so pods do not depend on runtime downloads.
- Before upgrading Grafana, cross-check every dashboard’s panel
typeagainst the target version’s removed/deprecated list. - Migrate legacy Angular panels (Worldmap, Discrete, old Piechart) to native successors (Geomap, State timeline, Pie chart) proactively.
- Keep
allow_loading_unsigned_pluginsscoped to specific IDs, not a blanket enable.
Quick Command Reference
# What is installed vs. what the panel needs
grafana-cli plugins ls
curl -s -H "Authorization: Bearer $GRAFANA_TOKEN" \
http://localhost:3000/api/plugins | jq '.[] | select(.type=="panel") | .id'
# Startup plugin/signature/angular errors
sudo journalctl -u grafana-server | grep -iE "plugin|signature|angular" | tail -20
kubectl logs deploy/grafana -n monitoring | grep -iE "plugin|unsigned" | tail -20
# Install and restart
grafana-cli plugins install grafana-worldmap-panel
sudo systemctl restart grafana-server
# Kubernetes: persist via env
# GF_INSTALL_PLUGINS=grafana-worldmap-panel
Conclusion
“Panel plugin not found:
- Read the plugin ID from the error and compare with
grafana-cli plugins ls. - Check the startup log for signature or Angular-disabled blocks.
- Install/persist the plugin via config management or the image.
- Migrate deprecated Angular panels to signed native successors so upgrades stay clean.
Manage plugins declaratively and this error stops surviving upgrades and pod restarts.
Download the Free 500-Prompt DevOps AI Toolkit
500 battle-tested, copy-paste AI prompts engineered by a senior systems engineer — every one with fill-in placeholders and safety/back-out notes. Drop your email and it's yours.
- 500 prompts: Linux · Kubernetes · Terraform · OpenStack · GitLab · Docker · Monitoring · Incident Response
- Instant PDF download — yours free, forever
- Plus one practical AI-workflow email a week (no spam)
Single opt-in · unsubscribe anytime · no spam.