About this project
Prometheus is a systems and service monitoring system, developed as a Cloud Native Computing Foundation project. It collects metrics from configured targets at given intervals, evaluates rule expressions, displays the results, and can trigger alerts when specified conditions are observed.
Key characteristics described in the README include a multi-dimensional data model in which time series are defined by a metric name plus a set of key/value dimensions; PromQL, a query language built to exploit that dimensionality; no dependency on distributed storage, so single server nodes are autonomous; an HTTP pull model for collecting time series; support for pushing time series through an intermediary gateway for batch jobs; target discovery through service discovery or static configuration; multiple modes of graphing and dashboarding; and support for hierarchical and horizontal federation. An architecture overview diagram is included in the repository documentation.
Installation paths cover precompiled binaries from the project's download section, Docker images published on Quay.io and Docker Hub (a container can be started with a single docker run command and reached on localhost port 9090), and building from source. Source builds require Go, NodeJS and npm at the versions pinned in the repository, plus cloning the repository; the go tool can install the prometheus and promtool binaries, but assets are then read from local filesystem directories and the React UI is not included unless built explicitly. A make build target compiles the web assets in so the binary can run from anywhere. Other Makefile targets include test, test-short, format, vet and assets for the React UI.
Prometheus bundles many service discovery plugins, and the build supports Go build tags to customise which are included, such as removing all optional discovery mechanisms and re-enabling a specific one. Instructions are also provided for building the Docker image locally, noting that the make docker target is intended for the project's CI system and does not produce a fully working image when run locally.
The README explains library use: repositories such as prometheus/common and prometheus/client-golang are designed as reusable libraries, while this repository builds a stand-alone program and is not designed for use as a library, so errors may surface only in that context. The Remote Write protobuf is published independently on buf.build and can be fetched with a go get command, described as experimental. Because of Go module versioning rules, release tags do not match module tags: v3.y.z releases correspond to v0.3y.z module tags and v2.y.z releases to v0.y.z tags, so internal Go APIs may break between minor releases. Godoc documentation, a community page, contribution guidelines, React UI documentation and the Apache License 2.0 are also referenced.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.