2022-10-09 02:42:28 -07:00
< h1 align = "center" style = "border-bottom: none" >
< a href = "//prometheus.io" target = "_blank" > < img alt = "Prometheus" src = "/documentation/images/prometheus-logo.svg" > < / a > < br > Prometheus
< / h1 >
< p align = "center" > Visit < a href = "//prometheus.io" target = "_blank" > prometheus.io< / a > for the full documentation,
examples and guides.< / p >
< div align = "center" >
2015-12-21 09:09:38 -08:00
2022-11-17 02:18:38 -08:00
[![CI ](https://github.com/prometheus/prometheus/actions/workflows/ci.yml/badge.svg )](https://github.com/prometheus/prometheus/actions/workflows/ci.yml)
2016-04-26 08:23:41 -07:00
[![Docker Repository on Quay ](https://quay.io/repository/prometheus/prometheus/status )][quay]
[![Docker Pulls ](https://img.shields.io/docker/pulls/prom/prometheus.svg?maxAge=604800 )][hub]
2016-09-14 20:09:26 -07:00
[![Go Report Card ](https://goreportcard.com/badge/github.com/prometheus/prometheus )](https://goreportcard.com/report/github.com/prometheus/prometheus)
2018-02-05 11:39:32 -08:00
[![CII Best Practices ](https://bestpractices.coreinfrastructure.org/projects/486/badge )](https://bestpractices.coreinfrastructure.org/projects/486)
2020-08-14 08:23:55 -07:00
[![Gitpod ready-to-code ](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod )](https://gitpod.io/#https://github.com/prometheus/prometheus)
2021-02-07 11:51:02 -08:00
[![Fuzzing Status ](https://oss-fuzz-build-logs.storage.googleapis.com/badges/prometheus.svg )](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened& can=1& q=proj:prometheus)
2012-11-24 03:14:12 -08:00
2022-10-09 02:42:28 -07:00
< / div >
2016-04-12 18:01:09 -07:00
2016-07-27 15:15:03 -07:00
Prometheus, a [Cloud Native Computing Foundation ](https://cncf.io/ ) project, is a systems and service monitoring system. It collects metrics
2014-12-06 16:23:01 -08:00
from configured targets at given intervals, evaluates rule expressions,
2020-10-27 02:50:37 -07:00
displays the results, and can trigger alerts when specified conditions are observed.
2014-12-06 16:23:01 -08:00
2020-10-27 02:50:37 -07:00
The features that distinguish Prometheus from other metrics and monitoring systems are:
2014-12-06 15:05:10 -08:00
2022-05-03 01:59:09 -07:00
* A **multi-dimensional** data model (time series defined by metric name and set of key/value dimensions)
* PromQL, a **powerful and flexible query language** to leverage this dimensionality
* No dependency on distributed storage; **single server nodes are autonomous**
* An HTTP **pull model** for time series collection
* **Pushing time series** is supported via an intermediary gateway for batch jobs
* Targets are discovered via **service discovery** or **static configuration**
* Multiple modes of **graphing and dashboarding support**
* Support for hierarchical and horizontal **federation**
2014-12-06 15:05:10 -08:00
2014-12-06 16:29:56 -08:00
## Architecture overview
2014-12-06 16:23:01 -08:00
2023-02-26 18:05:27 -08:00
![Architecture overview ](documentation/images/architecture.svg )
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
2015-05-22 04:31:59 -07:00
### Precompiled binaries
2012-11-24 03:33:34 -08:00
2015-05-22 04:31:59 -07:00
Precompiled binaries for released versions are available in the
2016-09-07 05:32:48 -07:00
[*download* section ](https://prometheus.io/download/ )
on [prometheus.io ](https://prometheus.io ). Using the latest production release binary
2016-09-14 20:09:26 -07:00
is the recommended way of installing Prometheus.
See the [Installing ](https://prometheus.io/docs/introduction/install/ )
2016-04-25 02:31:38 -07:00
chapter in the documentation for all the details.
2015-05-22 04:31:59 -07:00
2016-09-07 05:32:48 -07:00
### Docker images
2016-07-01 01:16:49 -07:00
2018-11-16 03:26:10 -08:00
Docker images are available on [Quay.io ](https://quay.io/repository/prometheus/prometheus ) or [Docker Hub ](https://hub.docker.com/r/prom/prometheus/ ).
2013-01-24 15:33:16 -08:00
2017-03-13 03:37:25 -07:00
You can launch a Prometheus container for trying it out with
2022-05-03 01:59:09 -07:00
```bash
docker run --name prometheus -d -p 127.0.0.1:9090:9090 prom/prometheus
```
2017-03-13 03:37:25 -07:00
2022-05-03 01:59:09 -07:00
Prometheus will now be reachable at < http: / / localhost:9090 / > .
2017-03-13 03:37:25 -07:00
2015-09-17 09:20:38 -07:00
### Building from source
2013-01-24 15:33:16 -08:00
2021-10-18 03:47:31 -07:00
To build Prometheus from source code, You need:
2022-05-03 01:59:09 -07:00
2022-05-31 04:37:05 -07:00
* Go [version 1.17 or greater ](https://golang.org/doc/install ).
2021-10-18 03:47:31 -07:00
* NodeJS [version 16 or greater ](https://nodejs.org/ ).
* npm [version 7 or greater ](https://www.npmjs.com/ ).
2015-04-10 04:53:32 -07:00
2022-06-13 13:00:27 -07:00
Start by cloning the repository:
```bash
git clone https://github.com/prometheus/prometheus.git
cd prometheus
```
You can use the `go` tool to build and install the `prometheus`
2017-10-12 15:15:29 -07:00
and `promtool` binaries into your `GOPATH` :
2013-04-13 21:59:55 -07:00
2022-05-03 01:59:09 -07:00
```bash
GO111MODULE=on go install github.com/prometheus/prometheus/cmd/...
prometheus --config.file=your_config.yml
```
2013-04-13 21:59:55 -07:00
2021-08-27 02:08:21 -07:00
*However*, when using `go install` to build Prometheus, Prometheus will expect to be able to
2019-10-17 05:38:09 -07:00
read its web assets from local filesystem directories under `web/ui/static` and
`web/ui/templates` . In order for these assets to be found, you will have to run Prometheus
from the root of the cloned repository. Note also that these directories do not include the
2022-04-27 05:18:12 -07:00
React UI unless it has been built explicitly using `make assets` or `make build` .
2019-10-17 05:38:09 -07:00
2021-02-22 11:19:08 -08:00
An example of the above configuration file can be found [here. ](https://github.com/prometheus/prometheus/blob/main/documentation/examples/prometheus.yml )
2019-11-09 00:48:09 -08:00
2022-06-13 13:00:27 -07:00
You can also build using `make build` , which will compile in the web assets so that
Prometheus can be run from anywhere:
2013-04-13 21:59:55 -07:00
2022-05-03 01:59:09 -07:00
```bash
make build
./prometheus --config.file=your_config.yml
```
2013-04-13 21:59:55 -07:00
2015-09-18 00:34:17 -07:00
The Makefile provides several targets:
2013-04-13 21:59:55 -07:00
2022-05-03 01:59:09 -07:00
* *build*: build the `prometheus` and `promtool` binaries (includes building and compiling in web assets)
* *test*: run the tests
* *test-short*: run the short tests
* *format*: format the source code
* *vet*: check the source code for common errors
* *assets*: build the React UI
2013-06-13 06:17:03 -07:00
2022-03-29 06:48:48 -07:00
### Service discovery plugins
Prometheus is bundled with many service discovery plugins.
When building Prometheus from source, you can edit the [plugins.yml ](./plugins.yml )
file to disable some service discoveries. The file is a yaml-formated list of go
import path that will be built into the Prometheus binary.
After you have changed the file, you
need to run `make build` again.
If you are using another method to compile Prometheus, `make plugins` will
generate the plugins file accordingly.
If you add out-of-tree plugins, which we do not endorse at the moment,
additional steps might be needed to adjust the `go.mod` and `go.sum` files. As
always, be extra careful when loading third party code.
2021-02-09 06:50:36 -08:00
### Building the Docker image
The `make docker` target is designed for use in our CI system.
You can build a docker image locally with the following commands:
2022-05-03 01:59:09 -07:00
```bash
make promu
promu crossbuild -p linux/amd64
make npm_licenses
make common-docker-amd64
```
2021-02-09 06:50:36 -08:00
2022-04-14 13:23:47 -07:00
## Using Prometheus as a Go Library
### Remote Write
We are publishing our Remote Write protobuf independently at
[buf.build ](https://buf.build/prometheus/prometheus/assets ).
You can use that as a library:
```shell
2022-05-03 01:59:09 -07:00
go get go.buf.build/protocolbuffers/go/prometheus/prometheus
2022-04-14 13:23:47 -07:00
```
This is experimental.
### Prometheus code base
In order to comply with [go mod ](https://go.dev/ref/mod#versions ) rules,
Prometheus release number do not exactly match Go module releases. For the
Prometheus v2.y.z releases, we are publishing equivalent v0.y.z tags.
Therefore, a user that would want to use Prometheus v2.35.0 as a library could do:
2022-05-03 01:59:09 -07:00
```shell
go get github.com/prometheus/prometheus@v0.35.0
2022-04-14 13:23:47 -07:00
```
This solution makes it clear that we might break our internal Go APIs between
minor user-facing releases, as [breaking changes are allowed in major version
zero](https://semver.org/#spec-item-4).
2019-11-14 10:53:10 -08:00
## React UI Development
2022-04-27 05:18:12 -07:00
For more information on building, running, and developing on the React-based UI, see the React app's [README.md ](web/ui/README.md ).
2019-11-14 10:53:10 -08:00
2014-11-21 04:27:28 -08:00
## More information
2013-05-06 01:54:27 -07:00
2022-05-03 01:59:09 -07:00
* Godoc documentation is available via [pkg.go.dev ](https://pkg.go.dev/github.com/prometheus/prometheus ). Due to peculiarities of Go Modules, v2.x.y will be displayed as v0.x.y.
* See the [Community page ](https://prometheus.io/community ) for how to reach the Prometheus developers and users on various communication channels.
2013-03-28 07:54:40 -07:00
2013-04-13 21:59:55 -07:00
## Contributing
2021-02-22 11:19:08 -08:00
Refer to [CONTRIBUTING.md ](https://github.com/prometheus/prometheus/blob/main/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
2021-02-22 11:19:08 -08:00
Apache License 2.0, see [LICENSE ](https://github.com/prometheus/prometheus/blob/main/LICENSE ).
2015-12-21 09:09:38 -08:00
[hub]: https://hub.docker.com/r/prom/prometheus/
2016-04-26 08:23:41 -07:00
[quay]: https://quay.io/repository/prometheus/prometheus