Grafana
Grafana is an open source, feature rich metrics dashboard and graph editor for Graphite, Elasticsearch, OpenTSDB, Prometheus and InfluxDB.
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
Dependencies
- Go (Latest Stable)
- bra [
go get github.com/Unknwon/bra
]
- bra [
- 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
Building
The backend
go run build.go setup
go run build.go build
Frontend assets
For this you need Node.js (LTS version).
yarn install --pure-lockfile
Run and rebuild on source change
Backend
To run the backend and rebuild on source change:
$GOPATH/bin/bra run
Frontend
Rebuild on file change, and serve them by Grafana's webserver (http://localhost:3000
):
yarn start
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:
yarn jest
Open grafana in your browser (default: e.g. http://localhost:3000
) and login with admin user (default: user/pass = admin/admin
).
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
make build-docker-dev
The resulting image will be tagged as grafana/grafana:dev
Building anywhere (slower)
Choose this option to build on platforms other than linux/amd64 and/or not have to setup the Grafana development environment.
make build-docker-full
ordocker build -t grafana/grafana:dev .
The resulting image will be tagged as grafana/grafana:dev
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.
Development
Dev config
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:
- grafana.ini
- custom.ini
In your custom.ini uncomment (remove the leading ;
) sign. And set app_mode = development
.
Running tests
Frontend
Execute all frontend tests
yarn test
Writing & watching frontend tests
- Start watcher:
yarn jest
- Jest will run all test files that end with the name ".test.ts"
Backend
# Run Golang tests using sqlite3 as database (default)
go test ./pkg/...
# Run Golang tests using mysql as database - convenient to use /docker/blocks/mysql_tests
GRAFANA_TEST_DB=mysql go test ./pkg/...
# Run Golang tests using postgres as database - convenient to use /docker/blocks/postgres_tests
GRAFANA_TEST_DB=postgres go test ./pkg/...