From f6aec3bfaa7df4c14b8b09e712864dbabe86a94d Mon Sep 17 00:00:00 2001 From: Amir Zarrinkafsh Date: Mon, 18 Nov 2019 21:15:07 +1100 Subject: [PATCH] Update grafana to v6.5.0-beta1 and utilise provisioning system --- docker-compose.yml | 7 +- grafana/datasources/Prometheus.json | 7 -- grafana/provisioning/dashboards/dashboard.yml | 12 +++ .../dashboards/docker_containers.json | 4 +- .../dashboards/docker_host.json | 4 +- .../dashboards/monitor_services.json | 4 +- .../dashboards/nginx_container.json | 4 +- .../provisioning/datasources/datasource.yml | 11 +++ grafana/setup.sh | 82 ------------------- 9 files changed, 33 insertions(+), 102 deletions(-) delete mode 100644 grafana/datasources/Prometheus.json create mode 100644 grafana/provisioning/dashboards/dashboard.yml rename grafana/{ => provisioning}/dashboards/docker_containers.json (99%) rename grafana/{ => provisioning}/dashboards/docker_host.json (99%) rename grafana/{ => provisioning}/dashboards/monitor_services.json (99%) rename grafana/{ => provisioning}/dashboards/nginx_container.json (99%) create mode 100644 grafana/provisioning/datasources/datasource.yml delete mode 100755 grafana/setup.sh diff --git a/docker-compose.yml b/docker-compose.yml index 06b712b..5ffc00f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -85,14 +85,11 @@ services: org.label-schema.group: "monitoring" grafana: - image: grafana/grafana:6.3.6 + image: grafana/grafana:6.5.0-beta1 container_name: grafana volumes: - grafana_data:/var/lib/grafana - - ./grafana/datasources:/etc/grafana/datasources - - ./grafana/dashboards:/etc/grafana/dashboards - - ./grafana/setup.sh:/setup.sh - entrypoint: /setup.sh + - ./grafana/provisioning:/etc/grafana/provisioning environment: - GF_SECURITY_ADMIN_USER=${ADMIN_USER:-admin} - GF_SECURITY_ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin} diff --git a/grafana/datasources/Prometheus.json b/grafana/datasources/Prometheus.json deleted file mode 100644 index db1e308..0000000 --- a/grafana/datasources/Prometheus.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name":"Prometheus", - "type":"prometheus", - "url":"http://prometheus:9090", - "access":"proxy", - "basicAuth":false - } \ No newline at end of file diff --git a/grafana/provisioning/dashboards/dashboard.yml b/grafana/provisioning/dashboards/dashboard.yml new file mode 100644 index 0000000..d83b43c --- /dev/null +++ b/grafana/provisioning/dashboards/dashboard.yml @@ -0,0 +1,12 @@ +apiVersion: 1 + +providers: + - name: 'Prometheus' + orgId: 1 + folder: '' + type: file + disableDeletion: false + editable: true + allowUiUpdates: true + options: + path: /etc/grafana/provisioning/dashboards \ No newline at end of file diff --git a/grafana/dashboards/docker_containers.json b/grafana/provisioning/dashboards/docker_containers.json similarity index 99% rename from grafana/dashboards/docker_containers.json rename to grafana/provisioning/dashboards/docker_containers.json index 93a03e6..5ac83a6 100644 --- a/grafana/dashboards/docker_containers.json +++ b/grafana/provisioning/dashboards/docker_containers.json @@ -1,4 +1,4 @@ -{"dashboard": { +{ "id": null, "title": "Docker Containers", "description": "Containers metrics", @@ -1267,4 +1267,4 @@ "version": 8, "links": [], "gnetId": null -}} +} \ No newline at end of file diff --git a/grafana/dashboards/docker_host.json b/grafana/provisioning/dashboards/docker_host.json similarity index 99% rename from grafana/dashboards/docker_host.json rename to grafana/provisioning/dashboards/docker_host.json index 3ce03dc..91eb4ac 100644 --- a/grafana/dashboards/docker_host.json +++ b/grafana/provisioning/dashboards/docker_host.json @@ -1,4 +1,4 @@ -{"dashboard": { +{ "id": null, "title": "Docker Host", "description": "Docker host metrics", @@ -1438,4 +1438,4 @@ "version": 2, "links": [], "gnetId": null -}} +} \ No newline at end of file diff --git a/grafana/dashboards/monitor_services.json b/grafana/provisioning/dashboards/monitor_services.json similarity index 99% rename from grafana/dashboards/monitor_services.json rename to grafana/provisioning/dashboards/monitor_services.json index d916175..3d955a4 100644 --- a/grafana/dashboards/monitor_services.json +++ b/grafana/provisioning/dashboards/monitor_services.json @@ -1,4 +1,4 @@ -{"dashboard": { +{ "id": null, "title": "Monitor Services", "tags": [ @@ -3409,4 +3409,4 @@ "version": 22, "links": [], "gnetId": null -}} \ No newline at end of file +} \ No newline at end of file diff --git a/grafana/dashboards/nginx_container.json b/grafana/provisioning/dashboards/nginx_container.json similarity index 99% rename from grafana/dashboards/nginx_container.json rename to grafana/provisioning/dashboards/nginx_container.json index bd63491..0a35d2b 100644 --- a/grafana/dashboards/nginx_container.json +++ b/grafana/provisioning/dashboards/nginx_container.json @@ -1,4 +1,4 @@ -{"dashboard": { +{ "id": null, "title": "Nginx", "description": "Nginx exporter metrics", @@ -395,4 +395,4 @@ "version": 9, "links": [], "gnetId": null -}} +} \ No newline at end of file diff --git a/grafana/provisioning/datasources/datasource.yml b/grafana/provisioning/datasources/datasource.yml new file mode 100644 index 0000000..bb37f13 --- /dev/null +++ b/grafana/provisioning/datasources/datasource.yml @@ -0,0 +1,11 @@ +apiVersion: 1 + +datasources: + - name: Prometheus + type: prometheus + access: proxy + orgId: 1 + url: http://prometheus:9090 + basicAuth: false + isDefault: true + editable: true \ No newline at end of file diff --git a/grafana/setup.sh b/grafana/setup.sh deleted file mode 100755 index a5c6142..0000000 --- a/grafana/setup.sh +++ /dev/null @@ -1,82 +0,0 @@ -#!/bin/bash - -# Taken from https://github.com/grafana/grafana-docker/issues/74 - -# Script to configure grafana datasources and dashboards. -# Intended to be run before grafana entrypoint... -# Image: grafana/grafana:4.1.2 -# ENTRYPOINT [\"/run.sh\"]" - -GRAFANA_URL=${GRAFANA_URL:-http://$GF_SECURITY_ADMIN_USER:$GF_SECURITY_ADMIN_PASSWORD@localhost:3000} -#GRAFANA_URL=http://grafana-plain.k8s.playground1.aws.ad.zopa.com -DATASOURCES_PATH=${DATASOURCES_PATH:-/etc/grafana/datasources} -DASHBOARDS_PATH=${DASHBOARDS_PATH:-/etc/grafana/dashboards} - -# Generic function to call the Vault API -grafana_api() { - local verb=$1 - local url=$2 - local params=$3 - local bodyfile=$4 - local response - local cmd - - cmd="curl -L -s --fail -H \"Accept: application/json\" -H \"Content-Type: application/json\" -X ${verb} -k ${GRAFANA_URL}${url}" - [[ -n "${params}" ]] && cmd="${cmd} -d \"${params}\"" - [[ -n "${bodyfile}" ]] && cmd="${cmd} --data @${bodyfile}" - echo "Running ${cmd}" - eval ${cmd} || return 1 - return 0 -} - -wait_for_api() { - while ! grafana_api GET /api/user/preferences - do - sleep 5 - done -} - -install_datasources() { - local datasource - - for datasource in ${DATASOURCES_PATH}/*.json - do - if [[ -f "${datasource}" ]]; then - echo "Installing datasource ${datasource}" - if grafana_api POST /api/datasources "" "${datasource}"; then - echo "installed ok" - else - echo "install failed" - fi - fi - done -} - -install_dashboards() { - local dashboard - - for dashboard in ${DASHBOARDS_PATH}/*.json - do - if [[ -f "${dashboard}" ]]; then - echo "Installing dashboard ${dashboard}" - - if grafana_api POST /api/dashboards/db "" "${dashboard}"; then - echo "installed ok" - else - echo "install failed" - fi - - fi - done -} - -configure_grafana() { - wait_for_api - install_datasources - install_dashboards -} - -echo "Running configure_grafana in the background..." -configure_grafana & -/run.sh -exit 0 \ No newline at end of file