2022-10-09 17:42:28 +08:00
< h1 align = "center" style = "border-bottom: none" >
2024-06-08 22:53:46 +08:00
< a href = "https://prometheus.io" target = "_blank" > < img alt = "Prometheus" src = "/documentation/images/prometheus-logo.svg" > < / a > < br > Prometheus
2022-10-09 17:42:28 +08:00
< / h1 >
2024-06-08 22:53:46 +08:00
< p align = "center" > Visit < a href = "https://prometheus.io" target = "_blank" > prometheus.io< / a > for the full documentation,
2022-10-09 17:42:28 +08:00
examples and guides.< / p >
< div align = "center" >
2015-12-22 01:09:38 +08:00
2022-11-17 18:18:38 +08:00
[](https://github.com/prometheus/prometheus/actions/workflows/ci.yml)
2016-04-26 23:23:41 +08:00
[][quay]
[][hub]
2016-09-15 11:09:26 +08:00
[](https://goreportcard.com/report/github.com/prometheus/prometheus)
2018-02-06 03:39:32 +08:00
[](https://bestpractices.coreinfrastructure.org/projects/486)
2024-01-25 14:29:48 +08:00
[](https://securityscorecards.dev/viewer/?uri=github.com/prometheus/prometheus)
[](https://clomonitor.io/projects/cncf/prometheus)
2020-08-14 23:23:55 +08:00
[](https://gitpod.io/#https://github.com/prometheus/prometheus)
2021-02-08 03:51:02 +08:00
[](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened& can=1& q=proj:prometheus)
2012-11-24 19:14:12 +08:00
2022-10-09 17:42:28 +08:00
< / div >
2016-04-13 09:01:09 +08:00
2016-07-28 06:15:03 +08:00
Prometheus, a [Cloud Native Computing Foundation ](https://cncf.io/ ) project, is a systems and service monitoring system. It collects metrics
2014-12-07 08:23:01 +08:00
from configured targets at given intervals, evaluates rule expressions,
2020-10-27 17:50:37 +08:00
displays the results, and can trigger alerts when specified conditions are observed.
2014-12-07 08:23:01 +08:00
2020-10-27 17:50:37 +08:00
The features that distinguish Prometheus from other metrics and monitoring systems are:
2014-12-07 07:05:10 +08:00
2022-05-03 16:59:09 +08: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-07 07:05:10 +08:00
2014-12-07 08:29:56 +08:00
## Architecture overview
2014-12-07 08:23:01 +08:00
2023-02-27 10:05:27 +08:00

2014-11-18 02:20:39 +08:00
2014-11-21 20:27:28 +08:00
## Install
2014-11-18 02:20:39 +08:00
2014-11-21 20:27:28 +08:00
There are various ways of installing Prometheus.
2014-11-18 02:20:39 +08:00
2015-05-22 19:31:59 +08:00
### Precompiled binaries
2012-11-24 19:33:34 +08:00
2015-05-22 19:31:59 +08:00
Precompiled binaries for released versions are available in the
2016-09-07 20:32:48 +08:00
[*download* section ](https://prometheus.io/download/ )
on [prometheus.io ](https://prometheus.io ). Using the latest production release binary
2016-09-15 11:09:26 +08:00
is the recommended way of installing Prometheus.
See the [Installing ](https://prometheus.io/docs/introduction/install/ )
2016-04-25 17:31:38 +08:00
chapter in the documentation for all the details.
2015-05-22 19:31:59 +08:00
2016-09-07 20:32:48 +08:00
### Docker images
2016-07-01 16:16:49 +08:00
2018-11-16 19: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-25 07:33:16 +08:00
2017-03-13 18:37:25 +08:00
You can launch a Prometheus container for trying it out with
2022-05-03 16:59:09 +08:00
```bash
docker run --name prometheus -d -p 127.0.0.1:9090:9090 prom/prometheus
```
2017-03-13 18:37:25 +08:00
2022-05-03 16:59:09 +08:00
Prometheus will now be reachable at < http: / / localhost:9090 / > .
2017-03-13 18:37:25 +08:00
2015-09-18 00:20:38 +08:00
### Building from source
2013-01-25 07:33:16 +08:00
2021-10-18 18:47:31 +08:00
To build Prometheus from source code, You need:
2022-05-03 16:59:09 +08:00
2025-07-04 18:57:08 +08:00
* Go: Version specified in [go.mod ](./go.mod ) or greater.
* NodeJS: Version specified in [.nvmrc ](./web/ui/.nvmrc ) or greater.
* npm: Version 8 or greater (check with `npm --version` and [here ](https://www.npmjs.com/ )).
2015-04-10 19:53:32 +08:00
2022-06-14 04:00:27 +08: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-13 06:15:29 +08:00
and `promtool` binaries into your `GOPATH` :
2013-04-14 12:59:55 +08:00
2022-05-03 16:59:09 +08:00
```bash
GO111MODULE=on go install github.com/prometheus/prometheus/cmd/...
prometheus --config.file=your_config.yml
```
2013-04-14 12:59:55 +08:00
2021-08-27 17:08:21 +08:00
*However*, when using `go install` to build Prometheus, Prometheus will expect to be able to
2019-10-17 20:38:09 +08: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 20:18:12 +08:00
React UI unless it has been built explicitly using `make assets` or `make build` .
2019-10-17 20:38:09 +08:00
2021-02-23 03: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 16:48:09 +08:00
2022-06-14 04:00:27 +08: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-14 12:59:55 +08:00
2022-05-03 16:59:09 +08:00
```bash
make build
./prometheus --config.file=your_config.yml
```
2013-04-14 12:59:55 +08:00
2015-09-18 15:34:17 +08:00
The Makefile provides several targets:
2013-04-14 12:59:55 +08:00
2022-05-03 16:59:09 +08: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 21:17:03 +08:00
2022-03-29 21:48:48 +08: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 )
2024-09-11 04:32:03 +08:00
file to disable some service discoveries. The file is a yaml-formatted list of go
2022-03-29 21:48:48 +08:00
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 22:50:36 +08:00
### Building the Docker image
You can build a docker image locally with the following commands:
2022-05-03 16:59:09 +08:00
```bash
make promu
promu crossbuild -p linux/amd64
make npm_licenses
make common-docker-amd64
```
2021-02-09 22:50:36 +08:00
2025-03-25 22:22:36 +08:00
The `make docker` target is intended only for use in our CI system and will not
produce a fully working image when run locally.
2022-04-15 04:23:47 +08: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
2024-02-15 19:12:36 +08:00
go get buf.build/gen/go/prometheus/prometheus/protocolbuffers/go@latest
2022-04-15 04:23:47 +08:00
```
This is experimental.
### Prometheus code base
In order to comply with [go mod ](https://go.dev/ref/mod#versions ) rules,
2024-11-20 23:46:11 +08:00
Prometheus release number do not exactly match Go module releases.
For the
Prometheus v3.y.z releases, we are publishing equivalent v0.3y.z tags. The y in v0.3y.z is always padded to two digits, with a leading zero if needed.
Therefore, a user that would want to use Prometheus v3.0.0 as a library could do:
```shell
go get github.com/prometheus/prometheus@v0.300.0
```
For the
Prometheus v2.y.z releases, we published the equivalent v0.y.z tags.
2022-04-15 04:23:47 +08:00
Therefore, a user that would want to use Prometheus v2.35.0 as a library could do:
2022-05-03 16:59:09 +08:00
```shell
go get github.com/prometheus/prometheus@v0.35.0
2022-04-15 04:23:47 +08: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-15 02:53:10 +08:00
## React UI Development
2022-04-27 20:18:12 +08: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-15 02:53:10 +08:00
2014-11-21 20:27:28 +08:00
## More information
2013-05-06 16:54:27 +08:00
2024-11-20 23:46:11 +08:00
* Godoc documentation is available via [pkg.go.dev ](https://pkg.go.dev/github.com/prometheus/prometheus ). Due to peculiarities of Go Modules, v3.y.z will be displayed as v0.3y.z (the y in v0.3y.z is always padded to two digits, with a leading zero if needed), while v2.y.z will be displayed as v0.y.z.
2022-05-03 16:59:09 +08:00
* See the [Community page ](https://prometheus.io/community ) for how to reach the Prometheus developers and users on various communication channels.
2013-03-28 22:54:40 +08:00
2013-04-14 12:59:55 +08:00
## Contributing
2021-02-23 03:19:08 +08:00
Refer to [CONTRIBUTING.md ](https://github.com/prometheus/prometheus/blob/main/CONTRIBUTING.md )
2013-04-14 12:59:55 +08:00
2013-01-25 04:56:08 +08:00
## License
2012-11-27 03:11:34 +08:00
2021-02-23 03:19:08 +08:00
Apache License 2.0, see [LICENSE ](https://github.com/prometheus/prometheus/blob/main/LICENSE ).
2015-12-22 01:09:38 +08:00
[hub]: https://hub.docker.com/r/prom/prometheus/
2016-04-26 23:23:41 +08:00
[quay]: https://quay.io/repository/prometheus/prometheus