2019-08-19 16:03:49 +03:00
# [Grafana](https://grafana.com) [](https://circleci.com/gh/grafana/grafana) [](https://goreportcard.com/report/github.com/grafana/grafana)
2019-05-08 16:50:21 +02:00
2017-03-13 21:32:28 +01:00
[Website ](https://grafana.com ) |
2015-03-25 12:17:22 +01:00
[Twitter ](https://twitter.com/grafana ) |
2017-03-13 23:05:47 +01:00
[Community & Forum ](https://community.grafana.com )
2013-01-25 20:10:28 -08:00
2015-03-25 12:03:20 +01:00
Grafana is an open source, feature rich metrics dashboard and graph editor for
2015-11-12 13:50:57 +01:00
Graphite, Elasticsearch, OpenTSDB, Prometheus and InfluxDB.
2014-07-14 20:53:20 +02:00
2019-02-11 10:57:32 +01:00
<!-- -
2017-03-13 21:32:28 +01:00

2019-02-11 10:57:32 +01:00
-->
2015-03-29 13:39:51 +02:00
2014-08-12 09:24:58 +02:00
## Installation
2019-05-08 16:50:21 +02:00
2019-02-11 10:57:32 +01:00
Head to [docs.grafana.org ](http://docs.grafana.org/installation/ ) for documentation or [download ](https://grafana.com/get ) to get the latest release.
2014-04-09 12:36:35 +02:00
2014-08-12 09:24:58 +02:00
## Documentation & Support
2019-05-08 16:50:21 +02:00
2015-03-29 13:30:03 +02:00
Be sure to read the [getting started guide ](http://docs.grafana.org/guides/gettingstarted/ ) and the other feature guides.
2014-01-20 10:57:59 +01:00
2014-08-12 09:24:58 +02:00
## Run from master
2019-05-08 16:50:21 +02:00
2019-01-28 15:58:32 +00:00
If you want to build a package yourself, or contribute - here is a guide for how to do that. You can always find
2017-03-13 21:32:28 +01:00
the latest master builds [here ](https://grafana.com/grafana/download )
2015-03-29 13:30:03 +02:00
### Dependencies
2018-10-17 16:39:03 +02:00
- Go (Latest Stable)
2018-12-04 17:16:08 +01:00
- Node.js LTS
2019-02-01 12:51:40 +01:00
- yarn [`npm install -g yarn` ]
### Get the project
**The project located in the go-path will be your working directory.**
2015-03-29 13:30:03 +02:00
2016-02-10 12:08:04 +01:00
```bash
2017-09-07 15:26:08 +02:00
go get github.com/grafana/grafana
2018-03-07 15:03:10 +03:00
cd $GOPATH/src/github.com/grafana/grafana
2019-02-01 12:51:40 +01:00
```
### Run and rebuild on source change
#### Backend
To run the backend and rebuild on source change:
```bash
2019-06-07 16:42:08 +03:00
make run
2019-02-01 12:51:40 +01:00
```
#### Frontend
2019-08-08 08:51:46 +02:00
Install front-end dependencies first:
```bash
yarn install --pure-lockfile
```
2019-02-01 12:51:40 +01:00
Rebuild on file change, and serve them by Grafana's webserver (http://localhost:3000):
```bash
2019-02-19 21:15:36 +01:00
yarn start
2017-10-01 20:02:25 +02:00
```
2018-04-18 15:01:36 +02:00
Build the assets, rebuild on file change with Hot Module Replacement (HMR), and serve them by webpack-dev-server (http://localhost:3333):
2019-02-01 12:51:40 +01:00
2018-04-18 15:01:36 +02:00
```bash
2019-02-19 21:15:36 +01:00
yarn start:hot
2018-04-18 15:01:36 +02:00
# OR set a theme
2019-02-19 21:15:36 +01:00
env GRAFANA_THEME=light yarn start:hot
2018-04-18 15:01:36 +02:00
```
2019-05-08 16:50:21 +02:00
_Note: HMR for Angular is not supported. If you edit files in the Angular part of the app, the whole page will reload._
2017-10-01 20:02:25 +02:00
2019-02-01 12:51:40 +01:00
Run tests and rebuild on source change:
2017-10-02 10:55:56 +02:00
2016-02-10 12:08:04 +01:00
```bash
2019-02-01 12:51:40 +01:00
yarn jest
2015-03-29 13:30:03 +02:00
```
2019-02-01 12:51:40 +01:00
**Open grafana in your browser (default: e.g. `http://localhost:3000` ) and login with admin user (default: `user/pass = admin/admin` ).**
2015-03-29 13:30:03 +02:00
2019-06-07 16:42:08 +03:00
### Building
#### The backend
```bash
go run build.go setup
go run build.go build
```
#### Frontend assets
_For this you need Node.js (LTS version)._
```bash
yarn install --pure-lockfile
```
2018-10-18 10:42:12 +02:00
### Building a Docker image
2018-08-06 14:04:41 +02:00
2019-01-28 15:58:32 +00:00
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.
2018-10-18 10:42:12 +02:00
Run the image you have built using: `docker run --rm -p 3000:3000 grafana/grafana:dev`
#### Building on linux/amd64 (fast)
2018-08-06 14:04:41 +02:00
1. Build the frontend `go run build.go build-frontend`
2. Build the docker image `make build-docker-dev`
The resulting image will be tagged as `grafana/grafana:dev`
2018-10-18 10:42:12 +02:00
#### Building anywhere (slower)
Choose this option to build on platforms other than linux/amd64 and/or not have to setup the Grafana development environment.
1. `make build-docker-full` or `docker build -t grafana/grafana:dev .`
The resulting image will be tagged as `grafana/grafana:dev`
2019-01-28 15:58:32 +00:00
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.
2018-11-30 12:59:10 +08:00
2019-03-25 21:14:24 +01:00
## Development
2015-03-29 13:30:03 +02:00
### 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:
1. grafana.ini
2017-05-21 15:07:21 +07:00
1. custom.ini
2015-03-29 13:30:03 +02:00
2017-10-02 10:55:56 +02:00
In your custom.ini uncomment (remove the leading `;` ) sign. And set `app_mode = development` .
2017-10-22 07:03:26 +02:00
### Running tests
2018-02-09 13:31:37 +01:00
#### Frontend
2019-05-08 16:50:21 +02:00
2018-02-09 13:31:37 +01:00
Execute all frontend tests
2019-05-08 16:50:21 +02:00
2018-02-09 13:31:37 +01:00
```bash
2018-08-14 12:40:07 +02:00
yarn test
2018-02-09 13:31:37 +01:00
```
2017-10-22 07:03:26 +02:00
2018-08-14 09:28:08 +02:00
Writing & watching frontend tests
2017-10-22 07:03:26 +02:00
2018-08-14 12:40:07 +02:00
- Start watcher: `yarn jest`
- Jest will run all test files that end with the name ".test.ts"
2017-10-22 07:03:26 +02:00
2018-02-09 13:31:37 +01:00
#### Backend
2019-05-08 16:50:21 +02:00
2018-02-09 13:31:37 +01:00
```bash
# Run Golang tests using sqlite3 as database (default)
2018-05-08 12:14:38 -04:00
go test ./pkg/...
2019-07-11 09:33:53 +01:00
```
##### Running the MySQL or Postgres backend tests:
Run these by setting `GRAFANA_TEST_DB` in your environment.
- `GRAFANA_TEST_DB=mysql` to test MySQL
- `GRAFANA_TEST_DB=postgres` to test Postgres
Follow the instructions in `./devenv` to spin up test containers running the appropriate databases with `docker-compose`
- Use `docker/blocks/mysql_tests` or `docker/blocks/postgres_tests` as appropriate
2018-02-09 13:31:37 +01:00
2019-07-11 09:33:53 +01:00
```bash
# 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.
2019-08-08 08:51:46 +02:00
./scripts/circle-test-mysql.sh
2019-07-11 09:33:53 +01:00
```
```bash
# 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/...
2018-02-09 13:31:37 +01:00
2019-07-11 09:33:53 +01:00
# 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
2018-02-09 13:31:37 +01:00
```
2019-05-08 16:50:21 +02:00
#### End-to-end
Execute all end-to-end tests
```bash
yarn e2e-tests
```
Execute all end-to-end tests using using a specific url
```bash
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)
```bash
ENV BROWSER=1 SLOWMO=1 yarn e2e-tests
```
2019-03-25 21:14:24 +01:00
### Datasource and dashboard provisioning
[Here ](https://github.com/grafana/grafana/tree/master/devenv ) you can find helpful scripts and docker-compose setup
that will populate your dev environment for quicker testing end experimenting.
2015-04-29 16:35:03 -04:00
## Contribute
2017-10-12 11:30:01 +02:00
2019-01-28 15:58:32 +00:00
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
2019-02-19 21:15:36 +01:00
the kickass metrics & devops dashboard we all dream about!
2019-01-10 08:37:40 +01:00
Read the [contributing ](https://github.com/grafana/grafana/blob/master/CONTRIBUTING.md ) guide then check the [`beginner friendly` ](https://github.com/grafana/grafana/issues?q=is%3Aopen+is%3Aissue+label%3A%22beginner+friendly%22 ) label to find issues that are easy and that we would like help with.
2014-01-20 10:57:59 +01:00
2017-10-12 11:30:01 +02:00
## Plugin development
2017-10-22 07:03:26 +02:00
Checkout the [Plugin Development Guide ](http://docs.grafana.org/plugins/developing/development/ ) and checkout the [PLUGIN_DEV.md ](https://github.com/grafana/grafana/blob/master/PLUGIN_DEV.md ) file for changes in Grafana that relate to
plugin development.
2017-10-12 11:30:01 +02:00
2014-08-12 09:24:58 +02:00
## License
2017-10-12 11:30:01 +02:00
2019-03-22 09:52:09 +01:00
Grafana is distributed under [Apache 2.0 License ](https://github.com/grafana/grafana/blob/master/LICENSE ).