mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
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
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