A Grafana backend plugin for automatic synchronization of dashboard between multiple Grafana instances.

Overview

Grafana Dashboard Synchronization Backend Plugin

A Grafana backend plugin for automatic synchronization of dashboard between multiple Grafana instances.

This plugin can be used to synchronize dashboards via a Git repository.
A possible use case is: One Grafana instance is using the plugin to push dashboards to a Git repository, another Grafana instance is using it to pull the dashboards.
As an example this is useful to stage dashboards from "dev" to "prod" environments.

Getting started

A data source backend plugin consists of both frontend and backend components.

Frontend

  1. Install dependencies

    yarn install
  2. Build plugin in development mode or run in watch mode

    yarn dev

    or

    yarn watch
  3. Build plugin in production mode

    yarn build

Backend

  1. Update Grafana plugin SDK for Go dependency to the latest minor version:

    go get -u github.com/grafana/grafana-plugin-sdk-go
    go mod tidy
  2. Build backend plugin binaries for Linux, Windows and Darwin:

    mage -v
  3. List all available Mage targets for additional commands:

    mage -l

Learn more

Comments
  • Dashboards are pushed to a configured Git repository

    Dashboards are pushed to a configured Git repository

    It should be possible that dashboards which cotnains a specific tag, are pushed into a configured Git repository.

    • The tag should be kept according to the configuration used.
    • The folder structure should be kept as well.

    This task should be triggerd as soon as the datasource configuration is updated and the push task has been enabled.

    opened by mariusoe 1
  • Dashboards are pulled from the configured Git repository

    Dashboards are pulled from the configured Git repository

    It should be possible that dashboards are pulled from a configured Git repository and inserted into Grafana the specified Grafana instance.

    • Dashboards should only be imported when they have been modified since the last import.

    This task should be triggerd as soon as the datasource configuration is updated and the pull task has been enabled.

    opened by mariusoe 0
  • Finalize the configuration UI of the datasource

    Finalize the configuration UI of the datasource

    In order to properly configure the datasource, the configuration UI has to be finalized.

    The following properties should be able to configure:

    • grafanaUrl - The URL to reach the API of the current Grafana instance
    • grafanaApiToken - An API token for the current Grafana instance
    • gitUrl - The SSH URL for the Git repository to use
    • privateSshKey - The private key which should be used to interact with the specified Git repository

    The following properties should be configurable in the scope of pushing and pulling dashboards. They should be nested withing the properties pullConfiguration and pullConfiguration:

    • enable - Whether the task is enabled or not
    • gitBranch - The branch name to use
    • syncInterval - The interval when the task should be triggered
    • filter - The filter to use for selecting specific dashboard. (Whitelist)

    The push configuration has the following additonal configuration property:

    • tagPattern: The pattern of tags used to determine whether a dashboard should be pushed to the Git repository
    • pushTags: Whether the "selector tag" should be removed when pushed
    opened by mariusoe 0
  • Finalize the UI for the query editor of the datasource

    Finalize the UI for the query editor of the datasource

    Due to the fact that this is a datasource plugin, users are able to use it in their panels. When the plugin is used in a panel, it should display a note that it cannot be used as a normal datasource

    opened by mariusoe 0
  • add support for gitlab token

    add support for gitlab token

    This pr:

    • Updates go-git and go-billy to v5
    • Adds support for gitlab token (should also work with github but haven't tested that)

    I first thought I would have to use http.TokenAuth but this except was present in go-git:

    // IMPORTANT: If you are looking to use OAuth tokens with popular servers (e.g.
    // GitHub, Bitbucket, GitLab) you should use BasicAuth instead. These servers
    // use basic HTTP authentication, with the OAuth token as user or password.
    // Check the documentation of your git server for details.
    
    opened by obeleh 0
  • Find a way to prevent the use of an API token

    Find a way to prevent the use of an API token

    Currently, it is neccessary that an API URL and API token have to be created and configured for the current Grafana instance. It would be good when users does not need this. Instead the plugin should be able to access dashboard information without the need of configuring an API token and the API URL.

    opened by mariusoe 0
  • Use a whitelisting filter to narrow down the synchronized dashboards

    Use a whitelisting filter to narrow down the synchronized dashboards

    Instead of considering all dashboards in the synchronization proces (according to the sync-tag), it should be able to specify a whitelist-filter. Only dashboard matching this filter, should be considered in the sync process.

    • It should be able to use the whitelist filter for folders or dashboards
    opened by mariusoe 0
  • The pull and push logic should be triggered according to the specified interval

    The pull and push logic should be triggered according to the specified interval

    Instead of triggering the push and pull logic when updating the datasource configuration, it should be triggered in a specific interval, e.g. 1 minute.

    It would be better when cron-expressions could be used instead of a fixed interval (e.g. 5 4 * * * to sync each day at 04:05).

    opened by mariusoe 0
Owner
Novatec Consulting GmbH
Novatec Consulting GmbH
Snowflake grafana datasource plugin allows Snowflake data to be visually represented in Grafana dashboards.

Snowflake Grafana Data Source With the Snowflake plugin, you can visualize your Snowflake data in Grafana and build awesome chart. Get started with th

Michelin 39 Dec 29, 2022
Kubernetes-native automatic dashboard for Ingress

ingress-dashboard Automatic dashboard generation for Ingress objects. Features: No JS Supports OIDC (Keycloak, Google, Okta, ...) and Basic authorizat

Aleksandr Baryshnikov 59 Oct 20, 2022
Grafana DB2 Data Source Backend Plugin

Grafana DB2 Data Source Backend Plugin This template is a starting point for building Grafana Data Source Backend Plugins What is Grafana Data Source

null 2 Dec 13, 2021
Grafana Data Source Backend Plugin Template

Grafana Data Source Backend Plugin Template This template is a starting point for building Grafana Data Source Backend Plugins What is Grafana Data So

null 0 Jan 16, 2022
Grafana Data Source Backend Plugin

Grafana Data Source Backend Plugin This plugin allows you to receive telemetry i

Khmelev Anton 3 Sep 18, 2022
Grafana Dashboard Manager

Grafana dash-n-grab Grafana Dash-n-Grab (GDG) -- Dashboard/DataSource Manager. The purpose of this project is to provide an easy to use CLI to interac

NetSage 160 Dec 31, 2022
Simple wrapper around multiple fs.FS instances, recursively merging them together dynamically.

go-layerfs This is a simple wrapper around multiple fs.FS instances, recursively merging them together dynamically. If you have two directories, of wh

Dominik Schmidt 22 Aug 9, 2022
Cloud-Z gathers information and perform benchmarks on cloud instances in multiple cloud providers.

Cloud-Z Cloud-Z gathers information and perform benchmarks on cloud instances in multiple cloud providers. Cloud type, instance id, and type CPU infor

CloudSnorkel 16 Jun 8, 2022
grafana-sync Keep your grafana dashboards in sync.

grafana-sync Keep your grafana dashboards in sync. Table of Contents grafana-sync Table of Contents Installing Getting Started Pull Save all dashboard

Maksym Postument 169 Dec 14, 2022
Grafana-threema-forwarder - Alert forwarder from Grafana webhooks to Threema wire messages

Grafana to Threema alert forwarder Although Grafana has built in support for pus

Péter Szilágyi 4 Nov 11, 2022
This plugin helps you to use the AWS Command Line Interface (AWS CLI) to start and end sessions to your managed instances

Session Manager Plugin This plugin helps you to use the AWS Command Line Interface (AWS CLI) to start and end sessions to your managed instances. Sess

Amazon Web Services 180 Dec 28, 2022
Container Registry Synchronization made easy and fast

?? booster - Makes synchronization of container images between registries faster.

Silvio Moioli 11 May 12, 2022
Grafana Tempo is a high volume, minimal dependency distributed tracing backend.

Grafana Tempo is an open source, easy-to-use and high-scale distributed tracing backend. Tempo is cost-efficient, requiring only object storage to ope

Grafana Labs 2.6k Jan 8, 2023
S3pd - CLI utility that downloads multiple s3 objects at a time, with multiple range-requests issued per object

S3 Parallel Downloader CLI utility that downloads multiple s3 objects at a time,

Colin Bookman 2 May 13, 2022
Taina backend Backend service With Golang

taina-backend Backend service Getting Started Essential steps to get your backend service deployed A helloworld example has been shipped with the temp

Commit App Playground 0 Nov 17, 2021
Acropolis Backend is the Go backend for Acropolis - the central management system for Full Stack at Brown

Acropolis Backend Acropolis Backend is the Go backend for Acropolis — the centra

Full Stack at Brown 1 Dec 25, 2021
Go-backend-test - Creating backend stuff & openid connect authentication stuff in golang

Go Backend Coding Practice This is my practice repo to learn about creating back

Pratik Raut 2 Feb 5, 2022
Austin See 1 Oct 7, 2022
A kubectl plugin to query multiple namespace at the same time.

kubemulti A kubectl plugin to query multiple namespace at the same time. $ kubemulti get pods -n cdi -n default NAMESPACE NAME

R0CKSTAR 3 Mar 1, 2022