2013-01-24 12:56:08 -08:00
# Prometheus
2012-11-24 03:14:12 -08:00
2014-12-06 15:05:10 -08:00
Prometheus is a systems and service monitoring system. Prometheus' main
distinguishing features as compared to other monitoring systems are:
- a **multi-dimensional** data model (timeseries defined by metric name and set of key/value dimensions)
- a **flexible query language** to leverage this dimensionality
- no dependency on distributed storage; **single server nodes are autonomous**
- timeseries collection happens via a **pull model** over HTTP
- **pushing timeseries** is supported via an intermediary gateway
- targets are discovered via **service discovery** or **static configuration**
- multiple modes of **graphing and dashboarding support**
- **federation support** coming soon
Prometheus collects metrics from configured targets at given intervals,
evaluates rule expressions, displays the results, and can trigger alerts
if some condition is observed to be true.
2014-11-17 10:20:39 -08:00
2014-11-21 04:27:28 -08:00
## Install
2014-11-17 10:20:39 -08:00
2014-11-21 04:27:28 -08:00
There are various ways of installing Prometheus.
2014-11-17 10:20:39 -08:00
2014-11-21 04:27:28 -08:00
### Precompiled packages
2012-11-24 03:33:34 -08:00
2014-11-21 04:27:28 -08:00
We plan to provide precompiled binaries for various platforms and even
2014-12-06 15:09:09 -08:00
packages for common Linux distributions soon. Once those are offered,
2014-11-21 04:27:28 -08:00
it will be the recommended way of installing Prometheus.
2013-01-24 15:33:16 -08:00
2014-11-21 04:27:28 -08:00
### Use `make`
2013-01-24 15:33:16 -08:00
2014-11-21 04:27:28 -08:00
In most cirumstances, the following should work:
2013-04-13 21:59:55 -07:00
2014-12-06 14:52:19 -08:00
$ make build
$ ./prometheus -config.file=documentation/examples/prometheus.conf
2013-04-13 21:59:55 -07:00
2014-11-21 04:27:28 -08:00
The above requires a number of common tools to be installed, namely
`curl` , `git` , `gzip` , `hg` (Mercurial CLI), `sed` , `xxd` . Should you
need to change any of the protocol buffer definition files
(`*.proto`), you also need the protocol buffer compiler
[`protoc` ](http://code.google.com/p/protobuf/](http://code.google.com/p/protobuf/ ),
v2.5.0 or higher, in your `$PATH` .
2013-04-13 21:59:55 -07:00
2014-11-21 04:27:28 -08:00
Everything else will be downloaded and installed into a staging
environment in the `.build` sub-directory. That includes a Go
development environment of the appropriate version.
2013-04-13 21:59:55 -07:00
2014-11-21 04:27:28 -08:00
The `Makefile` offers a number of useful targets. Some examples:
2013-04-13 21:59:55 -07:00
2014-11-21 04:27:28 -08:00
* `make test` runs tests.
2014-12-06 14:52:19 -08:00
* `make tarball` creates a tarball with the binary for distribution.
* `make race_condition_run` compiles and runs a binary with the race detector enabled. To pass arguments when running Prometheus this way, set the `ARGUMENTS` environment variable (e.g. `ARGUMENTS=-config.file=./prometheus.conf make race_condition_run` ).
2013-04-13 21:59:55 -07:00
2014-11-21 04:27:28 -08:00
### Use your own Go development environment
2013-03-28 07:54:40 -07:00
2014-11-21 04:27:28 -08:00
Using your own Go development environment with the usual tooling is
possible, too, but you have to take care of various generated files
(usually by running `make` in the respective sub-directory):
2013-04-13 21:59:55 -07:00
2014-11-21 04:27:28 -08:00
* Compiling the protocol buffer definitions in `config` (only if you have changed them).
* Generating the parser and lexer code in `rules` (only if you have changed `parser.y` or `lexer.l` ).
* The `files.go` blob in `web/blob` , which embeds the static web content into the binary.
2013-06-13 06:17:03 -07:00
2014-11-21 04:27:28 -08:00
Furthermore, the build info (see `build_info.go` ) will not be
populated if you simply run `go build` . You have to pass in command
line flags as defined in `Makefile.INCLUDE` (see `${BUILDFLAGS}` ) to
do that.
2013-06-13 06:17:03 -07:00
2014-11-21 04:27:28 -08:00
## More information
2013-05-06 01:54:27 -07:00
2014-11-21 04:27:28 -08:00
* The source code is periodically indexed: [Prometheus Core ](http://godoc.org/github.com/prometheus/prometheus ).
* You will find a Travis CI configuration in `.travis.yml` .
2014-12-06 14:52:19 -08:00
* All of the core developers are accessible via the [Prometheus Developers Mailinglist ](https://groups.google.com/forum/?fromgroups#!forum/prometheus-developers ) and the `#prometheus` channel on `irc.freenode.net` .
2013-03-28 07:54:40 -07:00
2013-04-13 21:59:55 -07:00
## Contributing
2013-10-23 13:26:39 -07:00
Refer to [CONTRIBUTING.md ](CONTRIBUTING.md )
2013-04-13 21:59:55 -07:00
2013-01-24 12:56:08 -08:00
## License
2012-11-26 11:11:34 -08:00
2014-11-21 04:27:28 -08:00
Apache License 2.0, see [LICENSE ](LICENSE ).