Configure the Zabbix data source
This document explains how to configure the Zabbix data source in Grafana, including authentication, trends, Direct DB Connection, and provisioning.
Before you begin
Before configuring the data source, ensure you have:
- Grafana permissions: Organization administrator role.
- Zabbix API URL: The full URL to your Zabbix API endpoint, including the
api_jsonrpc.phppath (for example,http://zabbix.example.com/api_jsonrpc.php). - Zabbix credentials: A username and password for a Zabbix user, or an API token. Verify the user has permissions to access the host groups and hosts you want to query in Grafana.
Install and enable the Zabbix plugin
Zabbix is an app plugin, so you must install it and then enable it before the data source becomes available. Enabling the plugin is a separate step from installation.
- Click Administration > Plugins and data > Plugins in the left-side menu.
- Type
Zabbixin the search bar and select the Zabbix plugin. - If the plugin isn’t already installed, click Install. For other installation methods, refer to Install Grafana plugins.
- On the plugin page, click Enable. The data source isn’t available to add until you enable the plugin.
Note
In Grafana Cloud, the Zabbix plugin is installed and enabled for you after you add it from the plugin catalog.
Add the data source
After you enable the plugin, add the data source:
- Click Connections in the left-side menu.
- Click Add new connection.
- Type
Zabbixin the search bar. - Select Zabbix.
- Click Add new data source.
Configure connection settings
Configure authentication
The Zabbix data source supports two authentication methods. Select the method in the Auth type drop-down under the Zabbix Connection section.
Note
For Zabbix 7.0 and later, the plugin sends the authentication token (both session tokens and API tokens) in the
AuthorizationHTTP header, as Zabbix requires. If you run Zabbix 7.0 behind a reverse proxy that uses HTTP basic authentication, the plugin keeps the token in the request body instead. Zabbix 7.2 and later don’t support HTTP basic authentication for API requests. Keep the plugin up to date so it uses the correct method for your Zabbix version.
User and password
Use a Zabbix user account to authenticate with the API.
API token
Use a Zabbix API token to authenticate. API tokens are available in Zabbix 5.4 and later.
Configure per-user authentication
Per-user authentication maps each Grafana user to a Zabbix user so that queries respect the role-based access control (RBAC) already configured in Zabbix. When enabled, the plugin authenticates to the Zabbix API as the matching Zabbix user instead of using the shared credentials configured in the Auth type section. Find these settings under Additional settings > Other.
Note
You need Grafana Admin permissions to configure per-user authentication, because the plugin must list Grafana users to build the exclusion list. If you can’t list users, contact your Grafana administrator.
Configure trends
Trends store aggregated historical data (average, minimum, and maximum per hour) and are recommended for displaying long time ranges. Enable trends to improve query performance when viewing data older than your history retention period. Find these settings under Additional settings > Trends.
Configure Zabbix API settings
These settings control caching and connection behavior for the Zabbix API. Find them under Additional settings > Zabbix API.
Query timeout
Under Additional settings > Query Options, you can set the maximum execution time for database queries initiated by the plugin.
Configure Direct DB Connection
Direct DB Connection lets the plugin query history and trend data directly from the Zabbix database through an existing Grafana SQL or InfluxDB data source. This bypasses the Zabbix API for historical data, which is faster on wide time ranges and reduces the amount of data transferred.
Find these settings under Additional settings > Direct DB Connection.
Set up a database data source
Before enabling Direct DB Connection, you need a MySQL, PostgreSQL, or InfluxDB data source in Grafana that connects to your Zabbix database. The plugin uses this data source to execute history and trend queries.
To add a database data source:
- Click Connections in the left-side menu.
- Click Add new connection.
- Select MySQL, PostgreSQL, or InfluxDB.
- Configure the connection to your Zabbix database. The database name is typically
zabbix. - Click Save & test.
For detailed configuration, refer to the MySQL, PostgreSQL, or InfluxDB data source documentation.
Database security
The plugin needs only read access to the history, history_uint, trends, and trends_uint tables. To minimize data exposure, grant read access to only those tables. All queries run from the Grafana server, so you can also restrict connections to the Grafana host.
MySQL example:
GRANT SELECT ON zabbix.history TO 'grafana'@'<GRAFANA_HOST>' IDENTIFIED BY '<PASSWORD>';
GRANT SELECT ON zabbix.history_uint TO 'grafana'@'<GRAFANA_HOST>' IDENTIFIED BY '<PASSWORD>';
GRANT SELECT ON zabbix.trends TO 'grafana'@'<GRAFANA_HOST>' IDENTIFIED BY '<PASSWORD>';
GRANT SELECT ON zabbix.trends_uint TO 'grafana'@'<GRAFANA_HOST>' IDENTIFIED BY '<PASSWORD>';If you also want to use this data source for other queries, you can grant SELECT privileges to the entire Zabbix database:
GRANT SELECT ON zabbix.* TO 'grafana'@'<GRAFANA_HOST>' IDENTIFIED BY '<PASSWORD>';Configure other settings
These settings are under Additional settings > Other.
Verify the connection
Click Save & test to verify the connection. A successful test displays the message “Zabbix API version” followed by the detected version number. If Direct DB Connection is enabled, the message also includes the database connector type.
If the test fails, refer to the troubleshooting guide for common connection issues and solutions.
Connect through Private Data Source Connect
If your Zabbix server isn’t directly reachable from Grafana, for example a Grafana Cloud stack connecting to a Zabbix server on a private network, you can use Private Data Source Connect (PDC). The Zabbix data source supports PDC through the Grafana secure SOCKS proxy.
To use PDC:
- Set up a PDC connection for your Grafana Cloud stack. Refer to Private data source connect (PDC).
- Edit the Zabbix data source and select your PDC connection in the Private data source connect settings.
- Click Save & test.
PDC requires Grafana 10.0 or later. In self-managed Grafana, an administrator must enable the secure SOCKS proxy before the setting appears.
Provision the data source
You can define and configure the Zabbix data source in YAML files as part of Grafana’s provisioning system. For more information about provisioning, refer to Provision Grafana.
The following example provisions a Zabbix data source with Direct DB Connection using a MySQL database:
apiVersion: 1
datasources:
- name: Zabbix
type: alexanderzobnin-zabbix-datasource
url: http://<ZABBIX_HOST>/zabbix/api_jsonrpc.php
jsonData:
authType: userLogin
username: <ZABBIX_USERNAME>
trends: true
trendsFrom: '7d'
trendsRange: '4d'
cacheTTL: '1h'
dbConnectionEnable: true
dbConnectionDatasourceName: <DB_DATASOURCE_NAME>
dbConnectionRetentionPolicy: ''
disableReadOnlyUsersAck: false
disableDataAlignment: false
secureJsonData:
password: <ZABBIX_PASSWORD>
version: 1
editable: false
- name: MySQL Zabbix
type: mysql
url: <MYSQL_HOST>:3306
user: <MYSQL_USER>
jsonData:
database: zabbix
secureJsonData:
password: <MYSQL_PASSWORD>Provisioning configuration options
The following table lists all available jsonData and secureJsonData fields for the Zabbix data source:
For detailed MySQL and PostgreSQL provisioning options, refer to the MySQL provisioning and PostgreSQL provisioning documentation.
Provision with Terraform
You can provision the Zabbix data source using the Grafana Terraform provider. The following example creates a Zabbix data source with user and password authentication:
resource "grafana_data_source" "zabbix" {
type = "alexanderzobnin-zabbix-datasource"
name = "Zabbix"
url = "http://<ZABBIX_HOST>/zabbix/api_jsonrpc.php"
json_data_encoded = jsonencode({
username = "<ZABBIX_USERNAME>"
trends = true
trendsFrom = "7d"
trendsRange = "4d"
cacheTTL = "1h"
dbConnectionEnable = false
disableDataAlignment = false
})
secure_json_data_encoded = jsonencode({
password = "<ZABBIX_PASSWORD>"
})
}For more information about the Grafana Terraform provider, refer to the Grafana provider documentation.


