Grafana Error Guide: 'Datasource type not exist' — Fix Provisioning and Plugin Datasources
Fix Grafana 'datasource type does not exist' provisioning errors: install the missing plugin, correct the type field, allow unsigned plugins, and reload.
- #grafana
- #observability
- #troubleshooting
- #errors
Fixing errors like this? Get 500 free DevOps AI prompts
500 copy-paste AI prompts for the stack you actually run — one PDF, free.
Overview
Grafana raises this at startup or provisioning reload when a datasources.yaml file (or an API call) declares a datasource whose type isn’t a registered plugin. The provisioning step fails and the log reads:
Datasource provisioning error: datasource.type "grafana-x-datasource" does not exist
A closely related variant appears when the plugin exists but wasn’t loaded:
Registering plugin failed: plugin "grafana-x-datasource" is not signed
Both mean the same practical thing: Grafana can’t map the type string in your provisioning to an installed, loaded datasource plugin — so the datasource is never created and dashboards that reference it show “Datasource not found”.
Symptoms
- Grafana logs
datasource.type "..." does not existat boot; the datasource never appears under Connections. - Dashboards referencing that datasource UID show
Datasource <uid> was not found. - The problem started after a version upgrade, a plugin removal, or copying provisioning between instances.
- Built-in types (prometheus, loki) work; only a plugin-based type (Zabbix, Infinity, a cloud plugin) fails.
grafana-cli plugins lsdoesn’t list the expected plugin, or it’s present but unsigned/blocked.
Common Root Causes
- Missing plugin — the datasource is a plugin (not a core type) that was never installed, or was dropped on upgrade.
- Typo or wrong
typestring indatasources.yaml(e.g.postgresvsgrafana-postgresql-datasource, or a renamed plugin ID). - Unsigned/blocked plugin not in
allow_loading_unsigned_plugins, so it fails to register even though its files exist. - Plugin installed in the wrong path — a custom
GF_PATHS_PLUGINSthat Grafana isn’t reading. - Version incompatibility — the plugin doesn’t support the running Grafana version and won’t load.
- Air-gapped install where the plugin couldn’t be fetched at build time.
Diagnostic Workflow
1. Read the exact type string Grafana rejected. The log quotes it verbatim:
journalctl -u grafana-server --since '10 min ago' | grep -i 'does not exist\|plugin'
2. List installed plugins and compare the type. Confirm whether the plugin is present and loaded:
grafana-cli plugins ls
# In a container
docker exec grafana grafana-cli plugins ls
If the type in your YAML isn’t in this list, it’s not installed (or not loaded).
3. Verify the correct plugin ID / type. Datasource type must equal the plugin ID, not a friendly name:
# Search the catalog for the real plugin id
grafana-cli plugins list-remote | grep -i infinity
For example, the JSON/API datasource is yesoreyeram-infinity-datasource, PostgreSQL is grafana-postgresql-datasource.
4. Install the missing plugin and restart.
grafana-cli plugins install yesoreyeram-infinity-datasource
sudo systemctl restart grafana-server
5. If it’s unsigned, allow it explicitly in grafana.ini (only for trusted plugins):
[plugins]
allow_loading_unsigned_plugins = yesoreyeram-infinity-datasource
6. Confirm the provisioning type matches. Corrected datasources.yaml:
apiVersion: 1
datasources:
- name: JSON API
type: yesoreyeram-infinity-datasource
uid: infinity-prod
access: proxy
url: https://api.example.com
Reload provisioning (restart, or POST /api/admin/provisioning/datasources/reload) and check the log is clean.
Example Root Cause Analysis
A platform team promoted their Grafana provisioning repo to a new cluster built from a slim custom image. Boot logs showed datasource.type "yesoreyeram-infinity-datasource" does not exist, and every Infinity-backed dashboard reported “Datasource not found.” The identical provisioning had worked on the old instance.
grafana-cli plugins ls on the new pod listed only core plugins — the Infinity datasource wasn’t installed. The old image had baked the plugin in during its build; the new slim image’s Dockerfile omitted the grafana-cli plugins install step, so the type string had nothing to bind to.
Fix: added grafana-cli plugins install yesoreyeram-infinity-datasource to the image build (and pinned its version), rebuilt, and redeployed. Provisioning applied cleanly and the datasource appeared. The provisioning YAML was correct all along — the plugin behind its type was simply absent.
Prevention Best Practices
- Bake required plugins into the image (or set
GF_INSTALL_PLUGINS) so provisioningtypes always have a backing plugin. - Pin plugin versions alongside the Grafana version to avoid load failures after upgrades.
- Use the exact plugin ID as
typein provisioning; keep a documented map of friendly name → plugin ID. - Validate provisioning in CI by booting Grafana against the config and failing on
does not existlog lines. - Scope
allow_loading_unsigned_pluginsnarrowly to specific trusted IDs, never blanket-allow. - Keep provisioning and installed plugins in the same source of truth so promoting config between environments carries its dependencies.
Quick Command Reference
# See the rejected type
journalctl -u grafana-server --since '10 min ago' | grep -i 'does not exist'
# List installed plugins
grafana-cli plugins ls
# Find the correct plugin id
grafana-cli plugins list-remote | grep -i <name>
# Install and restart
grafana-cli plugins install <plugin-id> && sudo systemctl restart grafana-server
# Reload provisioning without full restart
curl -s -X POST -H "Authorization: Bearer $GRAFANA_TOKEN" \
http://localhost:3000/api/admin/provisioning/datasources/reload
Conclusion
datasource type does not exist means Grafana has no installed plugin matching the type in your provisioning — usually a missing plugin, a wrong plugin ID, or an unsigned plugin that failed to load. Read the exact type from the log, compare it to grafana-cli plugins ls, install (and pin) the right plugin ID, and reload. Bake plugin dependencies into your image so provisioning promoted between environments never arrives without the plugins it needs.
More Grafana prompts & error guides
Every Grafana AI prompt and troubleshooting guide, in one place.
Get 500 Battle-Tested DevOps AI Prompts — Free
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.