Skip to content

bakins/kubernetes-grafana-updater

Repository files navigation

kubernetes-grafana-updater

kubernetes-grafana-updater creates/updates Grafana dashboards and datasources from Kubernetes ConfigMaps and Services.

Status

kubernetes-grafana-updater is functional. It is under active development and features are subject to change at anytime.

Motivation

We run multiple Prometheus instances in Kubernetes clusters and want to automatically add those as datasources to Grafana. Also, we have many dashboards. Some other tools[https://github.com/coreos/prometheus-operator/tree/master/contrib/grafana-watcher] allow one to add dashboards using a ConfigMap, however, we wanted to use multiple ConfigMaps owned by multiple teams.

Installation

This requires a working local Go evironment.

Clone this repository into your GOPATH and run ./script/build;

$ mkdir -p $GOPATH/src/github.com/bakins
$ cd $GOPATH/src/github.com/bakins
$ git clone https://github.com/bakins/kubernetes-grafana-updater.git
$ cd kubernetes-grafana-updater
$ ./script/build
$ ls kubernetes-grafana-updater.*
kubernetes-grafana-updater.darwin.amd64	kubernetes-grafana-updater.linux.amd64

Binary releases are availible under Releases.

This is also availible as a Docker image.

Usage

$ ./kubernetes-grafana-updater.darwin.amd64 --help
update grafana datasources and dashboards

Usage:
  kubernetes-grafana-updater [command]

Available Commands:
  dashboards  syncronize dashboards
  datasources syncronize datasources
  help        Help about any command

Flags:
  -h, --help                 help for kubernetes-grafana-updater
  -l, --log-level logLevel   log level (default info)

Use "kubernetes-grafana-updater [command] --help" for more information about a command.

Datasources

kubernetes-grafana-updater datasources will search for all services within a Kubernetes cluster that match the label selector and add them as datasources in Grafana. It will watch the Kubernetes API and ensure new services are added.

./kubernetes-grafana-updater.darwin.amd64 datasources --help
syncronize datasources

Usage:
  kubernetes-grafana-updater datasources [flags]

Flags:
      --apiserver string     override Kubernetes API server. default is to use value from kubeconfig or in cluster value
      --grafana-url string   grafana url (default "http://localhost:3000")
  -h, --help                 help for datasources
      --kubeconfig string    path to kubeconfig. default is in cluster.
      --namespace string     namespace to search. Default is all namespaces
      --selector string      label selector (default "app=prometheus")

Global Flags:
  -l, --log-level logLevel   log level (default info)

Dashboards

kubernetes-grafana-updater dashboards will search for all configmaps within a Kubernetes cluster that match the label selector and add each item in each configmap as a dashboard in Grafana. It will watch the Kubernetes API and ensure new dashboards are added.

$ ./kubernetes-grafana-updater.darwin.amd64 dashboards --help
syncronize dashboards

Usage:
  kubernetes-grafana-updater dashboards [flags]

Flags:
      --apiserver string     override Kubernetes API server. default is to use value from kubeconfig or in cluster value
      --grafana-url string   grafana url (default "http://localhost:3000")
  -h, --help                 help for dashboards
      --kubeconfig string    path to kubeconfig. default is in cluster.
      --namespace string     namespace to search. Default is all namespaces
      --selector string      label selector (default "type=grafana-dashboard")

Global Flags:
  -l, --log-level logLevel   log level (default info)

Typical Usage

kubernetes-grafana-updater is usually ran as two side-cars in a Pod with Grafana. One side car is ran in datasource mode and the other in dashboard mode.

Issues/TODO

  • ConfigMaps or keys within ConfigMaps that are deleted do not cause the corresponding dashboard to be deleted. Modifications to existing dashbaords are handled.

LICENSE

See [./LICENSE]

About

Update grafana dasboards and datasources from data in Kubernetes

Resources

License

Stars

Watchers

Forks

Packages

No packages published