Open source monitoring system and time series database written in Go.
Prometheus servers scrape metrics from instrumented jobs, either directly or via an intermediary push gateway for short-lived jobs. They store all scraped samples locally and run rules over this data to either record new timeseries from existing data or generate alerts. PromDash (a web-based dashboard builder) or other API consumers can be used to visualize the collected data.
Prometheus's main features are:
- A multi-dimensional data model.
- A flexible query language to leverage this dimensionality.
- No reliance on distributed storage; single server nodes are autonomous.
- Time series collection happens via a pull model over HTTP.
- Pushing time series is supported via an intermediary gateway.
- Targets are discovered via service discovery or static configuration.
- Multiple modes of graphing and dashboarding support.
Ranked in these QuestionsQuestion Ranking
Pro Docker image
Available as Docker images on Quay.io or Docker Hub, read article Monitoring Containerized Application Health with Docker.
Pro Powerful query language
The Prometheus query language allows you to slice and dice the dimensional data for ad-hoc exploration, graphing, and alerting.
Alerts are defined using the same powerful query language described above. A separate binary, the Alertmanager, handles alert notifications and aggregations and enables silencing by any label set. If an alert fires, Alertmanager can send an email or page you through an external alerting service like PagerDuty.
Nagios plugin is also offered as a bridge from the parts that are already monitored by Prometheus to the existing Nagios alerting set-up that many companies have in place.
The one-stop solution for the fanciest dashboards is PromDash, a GUI-based dashboard builder with a SQL backend. It talks to any number of Prometheus servers via an HTTP API and graphs their data in highly configurable dashboards. Even Graphite graphs can be included.
Pro Scalable data collection and decentralized architecture
You can reliably monitor the many instances of your services, and independent teams can set up independent monitoring servers.
You can spin up a monitoring server where and when you want, even on your local workstation, without setting up a distributed storage backend or reconfiguring the world.
Pro A multi-dimensional data model, so that data can be sliced and diced at will, along dimensions like instance, service, endpoint, and method.
Prometheus fundamentally stores all data as time series: streams of timestamped values belonging to the same metric and the same set of labeled dimensions. Timestamps have a millisecond resolution, while values are always 64-bit floats.
The metric name specifies the general feature of a system that is measured. For example, a metric to count the total number of HTTP requests received by an API server might be called api_http_requests_total. Adding labels (key/value pairs) to this metric enables Prometheus's dimensional data model: any given combination of labels for the same metric name results in a separate time series.
Con Needs configuration
Not as easy to deploy as some other tools.