Building a Grafana Backend Plugin

The QueryData method on this struct is where the data fetching happens for a data source plugin. Grafana will release new major versions of the plugin protocol alongside new major Grafana releases. When this happens, we’ll support both the old and the new plugin protocol for some time to make sure existing backend plugins continue to work. Grafana create-plugin tool is a CLI application that simplifies Grafana plugin development, so that you can focus on code. The tool scaffolds a starter plugin and all the required configuration for you. It has a pluggable structure for the backends as also for the frontends.This allows a variety of data sources to be used as source for queries & visualizations.

The app combines the panel and data source plugins to provide a more custom and cohesive monitoring experience. It enables Grafana to easily integrate with other systems, additional data sources, and visualizations. Typical plugins include the Grafana App for Kubernetes, Sensu, Zabbix, and more.


Being included in that catalog is also what enables your plugin to be installed on Grafana Cloud instances which are being used more and more today. The only real reference on the docs site you will find to this requirement is on the Sign a plugin under plugin signature levels. We had seen that callout, and were fully prepared to pay a fee for that license but you won’t find mention of the fee itself anywhere on the Grafana site.

grafana plugin development

This is the user’s way to control what will be returned from the data source. The secure part can be set or reset, but once configured it will not be sent back to the frontend. This will run a compatibility check for the latest release of grafana plugins API in your project everytime a new push or pull request is open. If it reports an error you will see a message indicating you have an incompatibility. Implementing authentication allows your plugin to access protected resources like databases or APIs.

Best Grafana dashboard for Graphite Metrics

It also enables users to look for specific values beyond the high and low points and understand the behavior of the chart and infer insights. To build a backend for your data source plugin, Grafana requires a binary that it can execute when it loads the plugin during start-up. In this guide, we will build a binary using the Grafana plugin SDK for Go. The streaming capability allows a backend plugin to handle data source queries that are streaming. For more information, refer to Build a streaming data source plugin. To access a specific data source, you often need to configure things like hostname, credentials, or authentication method.

An important principle at Metrist is that we want to ensure our data is available to people where they already work. Having Metrist data available directly within Grafana follows that same philosophy. Alternatively, you can book a demo and tell us about your monitoring needs. While the Grafana eases the exploration work, successful setup and management require careful planning and integration.

What are Panel Plugins in Terms of Development?

You can find access manifests to create one in the plugin’s source code. Make sure you change your-datasource to the data source id you are using, in my case this is scylla-scylla-datasource. Go back up to the directory that holds the script, under the provisioning directory we already created a datasource directory. I have been looking into grafana plugin development but I was missing an easy to follow guide. As a PMM user I would love to have a page where I can see the incidents in my databases; similar to OEM incident manager. A connector for a data source (for example, Clickhouse-datasource,  Elastic-datasource, Prometheus-datasource).

grafana plugin development

To learn more about how to authenticate using a backend plugin, refer to our documentation. In this sample data source, there is a 50% chance that the health check will be successful. Make sure to return appropriate error messages to the users, informing them about what is misconfigured in the data source. The resources capability allows a backend plugin to handle custom HTTP requests sent to the Grafana HTTP API and respond with custom HTTP responses. For example, you can use JSON, plain text, HTML, or static resources such as images and files, and so on.

Volkov Labs App 2.5.0 supports Grafana 10

Besides the explanations you can follow the commits in the repository here. For example, in the combination of running Grafana with Prometheus as a metric server, the data is collected in the user browser and then displayed. If your plugin uses typescript you can use @grafana/levitate to test if the Grafana APIs your plugin is using are compatible with a certain version of Grafana. All of the examples use grafana/create-plugin instead of @grafana/toolkit.

  • Sensu provides abundant data on the performance of infra resources such as Client data, event metrics, and results in Grafana to analyze and present insights to users.
  • If you’re interested in building your own plugin, we’ll walk you through our process and hopefully it can help set you up for success.
  • Metrist ended up with a fully functional and complete Grafana data source plugin.
  • The resources capability allows a backend plugin to handle custom HTTP requests sent to the Grafana HTTP API and respond with custom HTTP responses.
  • By making a plugin for your organization, you can connect Grafana to other data sources, ticketing tools, and CI/CD tooling.
  • Without it, you will not be able to sign your plugin for public distribution or include it in the catalog.
  • Compile with mage and restart Grafana for the change would take effect.

Amnon holds a BA and MSc in Computer Science from the Technion-Machon Technologi Le’ Israel and an MBA from Tel Aviv University. Here we check if a user and password were set, if they are, we use them to create a CQL authenticator. You can see that we first loop over the columns and add each of the fields without values. We then iterate over the CQL results and use the AppendRow method to add the information to the dataFrame.

Deploy AWS Managed Prometheus (AMP) and AWS Managed Grafana (AMG) With Terraform for scalable…

When an admin configures a data source (in our case, a ScyllaDB database) to be able connect to it securely, we need a username and a password. Once we configure the username and password, we don’t want other users to be exposed to it. Other parts of configurations can be public and we would like users to be able to see them (for example the host it will be connected to).

The true power of Grafana for us involved using many of those existing Datasource plugins to do exactly these things with plugins such as Prometheus, Postgres, and AWS Cloudwatch Metrics. This plugin integrates Grafana with several data sources of AWS services and non-AWS service and provides a single monitoring tool for managing the cross-application environment. In this post I will explain how to build a simple data source plugin for Grafana 7, using ScyllaDB as an example. I’ll focus on how to create a new data source plugin and specifically on backend plugins.

Backend plugins

Although the Grafana ships with several features, there is a huge collection of plugins to extend functionalities and support additional applications, panels, and data sources. It deals with additional features on managing multiple types of graphs for different time series data using flexible visual settings to design attractive dashboards. Draw options such as Point, line, and bar can be used to plot different time series graphs to have clear data readability and best visualization. It is a bundle of panels, data sources, new UI pages, and dashboards. It is a combination of the above two types of plugins along with new attractive features.

Leave a Reply