grafana/devenv/docker/ha_test
Marcus Efraimsson 3555997f98
devenv: update ha test and load test
better ha setup for many mysql connections
prometheus now scrapes mysql metrics in ha setup
ha setup provisions mysql dashboard
adds configurable virtual users for load test run script
2019-02-06 22:33:48 +01:00
..
grafana/provisioning devenv: update ha test and load test 2019-02-06 22:33:48 +01:00
prometheus devenv: update ha test and load test 2019-02-06 22:33:48 +01:00
.gitignore devenv: grafana high availability (ha) test setup 2018-09-27 09:24:40 +02:00
alerts.sh devenv: grafana high availability (ha) test setup 2018-09-27 09:24:40 +02:00
docker-compose.yaml devenv: update ha test and load test 2019-02-06 22:33:48 +01:00
README.md devenv: grafana high availability (ha) test setup 2018-09-27 09:24:40 +02:00

Grafana High Availability (HA) test setup

A set of docker compose services which together creates a Grafana HA test setup with capability of easily scaling up/down number of Grafana instances.

Included services

  • Grafana
  • Mysql - Grafana configuration database and session storage
  • Prometheus - Monitoring of Grafana and used as datasource of provisioned alert rules
  • Nginx - Reverse proxy for Grafana and Prometheus. Enables browsing Grafana/Prometheus UI using a hostname

Prerequisites

Build grafana docker container

Build a Grafana docker container from current branch and commit and tag it as grafana/grafana:dev.

$ cd <grafana repo>
$ make build-docker-full

Virtual host names

Alternative 1 - Use dnsmasq

$ sudo apt-get install dnsmasq
$ echo 'address=/loc/127.0.0.1' | sudo tee /etc/dnsmasq.d/dnsmasq-loc.conf > /dev/null
$ sudo /etc/init.d/dnsmasq restart
$ ping whatever.loc
PING whatever.loc (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.076 ms
--- whatever.loc ping statistics ---
1 packet transmitted, 1 received, 0% packet loss, time 1998ms

Alternative 2 - Manually update /etc/hosts

Update your /etc/hosts to be able to access Grafana and/or Prometheus UI using a hostname.

$ cat /etc/hosts
127.0.0.1       grafana.loc
127.0.0.1       prometheus.loc

Start services

$ docker-compose up -d

Browse

Check for any errors

$ docker-compose logs | grep error

Scale Grafana instances up/down

Scale number of Grafana instances to <instances>

$ docker-compose up --scale grafana=<instances> -d
# for example 3 instances
$ docker-compose up --scale grafana=3 -d

Test alerting

Create notification channels

Creates default notification channels, if not already exists

$ ./alerts.sh setup

Slack notifications

Disable

$ ./alerts.sh slack -d

Enable and configure url

$ ./alerts.sh slack -u https://hooks.slack.com/services/...

Enable, configure url and enable reminders

$ ./alerts.sh slack -u https://hooks.slack.com/services/... -r -e 10m

Provision alert dashboards with alert rules

Provision 1 dashboard/alert rule (default)

$ ./alerts.sh provision

Provision 10 dashboards/alert rules

$ ./alerts.sh provision -a 10

Provision 10 dashboards/alert rules and change condition to gt > 100

$ ./alerts.sh provision -a 10 -c 100

Pause/unpause all alert rules

Pause

$ ./alerts.sh pause

Unpause

$ ./alerts.sh unpause