Grafana is an open source, feature rich metrics dashboard and graph editor for Graphite, Elasticsearch, OpenTSDB, Prometheus and InfluxDB.
Documentation & Support
Be sure to read the getting started guide and the other feature guides.
Run from master
If you want to build a package yourself, or contribute - here is a guide for how to do that. You can always find the latest master builds here
- Go (Latest Stable)
- Node.js LTS
- yarn [
npm install -g yarn]
- yarn [
Get the project
The project located in the go-path will be your working directory.
go get github.com/grafana/grafana cd $GOPATH/src/github.com/grafana/grafana
Run and rebuild on source change
To run the backend and rebuild on source change:
Rebuild on file change, and serve them by Grafana's webserver (http://localhost:3000):
Build the assets, rebuild on file change with Hot Module Replacement (HMR), and serve them by webpack-dev-server (http://localhost:3333):
yarn start:hot # OR set a theme env GRAFANA_THEME=light yarn start:hot
Note: HMR for Angular is not supported. If you edit files in the Angular part of the app, the whole page will reload.
Run tests and rebuild on source change:
Open grafana in your browser (default: e.g.
http://localhost:3000) and login with admin user (default:
user/pass = admin/admin).
go run build.go setup go run build.go build
For this you need Node.js (LTS version).
yarn install --pure-lockfile
Building a Docker image
There are two different ways to build a Grafana docker image. If your machine is setup for Grafana development and you run linux/amd64 you can build just the image. Otherwise, there is the option to build Grafana completely within Docker.
Run the image you have built using:
docker run --rm -p 3000:3000 grafana/grafana:dev
Building on linux/amd64 (fast)
- Build the frontend
go run build.go build-frontend
- Build the docker image
The resulting image will be tagged as
Building anywhere (slower)
Choose this option to build on platforms other than linux/amd64 and/or not have to setup the Grafana development environment.
docker build -t grafana/grafana:dev .
The resulting image will be tagged as
Notice: If you are using Docker for MacOS, be sure to set the memory limit to be larger than 2 GiB (at docker -> Preferences -> Advanced), otherwise
grunt build may fail.
Create a custom.ini in the conf directory to override default configuration options. You only need to add the options you want to override. Config files are applied in the order of:
In your custom.ini uncomment (remove the leading
;) sign. And set
app_mode = development.
Execute all frontend tests
Writing & watching frontend tests
- Start watcher:
- Jest will run all test files that end with the name ".test.ts"
# Run Golang tests using sqlite3 as database (default) go test ./pkg/...
Running the MySQL or Postgres backend tests:
Run these by setting
GRAFANA_TEST_DB in your environment.
GRAFANA_TEST_DB=mysqlto test MySQL
GRAFANA_TEST_DB=postgresto test Postgres
Follow the instructions in
./devenv to spin up test containers running the appropriate databases with
# MySQL # Tests can only be ran in one Go package at a time due to clashing db queries. To run MySQL tests for the "pkg/services/sqlstore" package, run: GRAFANA_TEST_DB=mysql go test ./pkg/services/sqlstore/... # Or run all the packages using the circle CI scripts. This method will be slower as the scripts will run all the tests, including the integration tests. ./scripts/circle-test-mysql.sh
# Postgres # Tests can only be ran in one Go package at a time due to clashing db queries. To run Postgres tests for the "pkg/services/sqlstore" package, run: GRAFANA_TEST_DB=postgres go test ./pkg/services/sqlstore/... # Or run all the packages using the circle CI scripts. This method will be slower as the scripts will run all the tests, including the integration tests. ./scripts/circle-test-postgres.sh
Execute all end-to-end tests
Execute all end-to-end tests using using a specific url
ENV BASE_URL=http://localhost:3333 yarn e2e-tests
Debugging all end-to-end tests (BROWSER=1 will start the browser and SLOWMO=1 will delay each puppeteer operation by 100ms)
ENV BROWSER=1 SLOWMO=1 yarn e2e-tests
Datasource and dashboard provisioning
Here you can find helpful scripts and docker-compose setup that will populate your dev environment for quicker testing end experimenting.
If you have any ideas for improvement or have found a bug, do not hesitate to open an issue. And if you have time, clone this repo and submit a pull request to help me make Grafana the kickass metrics & devops dashboard we all dream about!
Grafana is distributed under Apache 2.0 License.