Prometheus - Open Source Monitoring System and Time Series Database
Prometheus - Open Source Monitoring System and Time Series Database |
Explore the vast realm of Prometheus, a groundbreaking project under the Cloud Native Computing Foundation, designed to be a systems and service monitoring powerhouse. Prometheus collects metrics from configured targets, evaluates rule expressions, displays results, and triggers alerts based on specified conditions.
Key Features that Set Prometheus Apart:
Multi-dimensional Data Model:
- Time series defined by metric name and a set of key/value dimensions.
PromQL:
- A powerful and flexible query language, leveraging the multi-dimensional nature of the data model.
Autonomous Single Server Nodes:
- No dependency on distributed storage; single server nodes are autonomous.
HTTP Pull Model:
- Time series collection is facilitated through an HTTP pull model.
Support for Pushing Time Series:
- Pushing time series is supported via an intermediary gateway for batch jobs.
Service Discovery:
- Targets are discovered via service discovery or static configuration.
Graphing and Dashboarding Support:
- Multiple modes of graphing and dashboarding support for enhanced visualization.
Hierarchical and Horizontal Federation:
- Support for hierarchical and horizontal federation for flexible scalability.
Architecture Overview:
Installation Options:
1. Precompiled Binaries:
Get the latest production release binary from the download section on prometheus.io.
2. Docker Images:
Docker images are available on Quay.io or Docker Hub.
Launch a Prometheus container for a quick trial:
docker run --name prometheus -d -p 127.0.0.1:9090:9090 prom/prometheus
Access Prometheus at http://localhost:9090/.
3. Building from Source:
To build Prometheus from source, you need Go (version 1.17 or greater), NodeJS (version 16 or greater), and npm (version 7 or greater). Follow the instructions in the Installing chapter of the documentation.
Service Discovery Plugins:
Prometheus comes bundled with various service discovery plugins. Adjust the plugins.yml file during source build to enable/disable service discoveries.
Docker Image Building:
Use the make docker
target for CI systems. Locally, build a docker image with:
make promu
promu crossbuild -p linux/amd64
make npm_licenses
make common-docker-amd64
Using Prometheus as a Go Library:
1. Remote Write:
Prometheus publishes its Remote Write protobuf at buf.build.
Use it as a library:
go get go.buf.build/protocolbuffers/go/prometheus/prometheus
2. Prometheus Code Base:
For Go module compatibility, Prometheus uses v0.y.z tags for v2.y.z releases. For example, to use Prometheus v2.35.0 as a library:
go get github.com/prometheus/prometheus@v0.35.0
React UI Development:
Refer to the React app's README.md for details on building, running, and developing the React-based UI.
More Information:
- Godoc documentation: pkg.go.dev.
- Community page for communication channels.
Contributing:
Refer to CONTRIBUTING.md.
License:
Apache License 2.0, see LICENSE.