Prometheus is a comprehensive, independent, free standalone open source project, which is part of the CNCF (Cloud Native Computing Foundation). Prometheus.io is written in “Go” and has been open-source from the very beginning. Prometheus began its life at SoundCloud in 2012 and became part of the CNCF in 2016.
The CNCF is dedicated to maintaining and integrating open source technologies and builds sustainable open source online ecosystems. The Prometheus open-source landscape is continually being improved to enhance the user experience.
Prometheus.io is a shining example of one of the CNCF’s “Graduated” and Currently Hosted Projects. Alongside their other Graduated project “Kubernetes” which is an automated container deployment, scaling, and management open-source system. The CNCF also has a plethora of other projects in the works.
Prometheus began in 2012 as an open-source systems monitoring and alerting toolkit that SoundCloud built in-house. Prometheus was created (as SoundCloud’s monitoring system) to provide a solution that had all of the features that SoundCloud required in one application. SoundCloud announced Prometheus in 2015 when they felt that the system had reached a certain level of maturity.
Prometheus is used across a wide cross-section of organizations as a central piece for extracting and exposing mission-critical metrics. Allowing users to pull real-time, actionable data from their applications to enhance and improve their systems. Users can expose, collect, aggregate, alert and visualize metrics with the help of Prometheus.
Prometheus has well-commented source code and a great library of documentation in the “docs” resource section on their website that walks you through the whole process of setting everything up. Additionally, Prometheus has a lot of useful input from global users on StackOverflow (a free resource used by independent computer programmers from around the world).
How People are using Prometheus
To find out more about how various organizations are implementing Prometheus, you can check out their blog section. In there you will find a variety of articles and interviews that explain how companies like “Presslabs”, “EuroPace” and “DataWire” use Prometheus. You can find out all about how companies used to monitor their systems prior to Prometheus and how they have implemented various systems to enhance and strengthen their tech ecosystems.
Below is a diagram that illustrates the overall architecture of Prometheus as well as some of its ecosystem components:
Prometheus servers work by scraping metrics from instrumented jobs. For short-lived jobs, via an intermediary push gateway, or alternatively by directly scraping data. The samples are then used to generate new alerts or record a new time series. Consumers can use various API’s to visualize and chart the data gathered by Prometheus.
Prometheus Key Features:
- Offering a multi-dimensional data model with time series data, identified by metric name and key/value pairs
- 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
Multiple Components of Prometheus
The Prometheus ecosystem consists of multiple components, many of which are optional, these components include:
- The main Prometheus server which scrapes and stores time series data
- Client libraries for instrumenting application code
- Push gateway for supporting short-lived jobs
- Special-purpose exporters for services like HAProxy, StatsD, Graphite, etc.
- Alert manager to handle alerts
- Various support tools
- Most Prometheus components are written in Go, making them easy to build and deploy as static binaries
A Reliable Multi-dimensional Data Collection Solution
Prometheus is designed to quickly provide data and diagnose problems when they arise in a project, especially during an outage. It drives internal monitoring, facilitates firefighting during outages and provides further insight into them for post-mortems. Being a stand-alone server means that Prometheus can be relied on even when other parts of your infrastructure are not working.
You can quickly access records of any purely numeric time series from both machine-centric monitoring as well as monitoring of highly dynamic service-oriented architectures. Prometheus holds its own when it comes to multi-dimensional data collection and querying. However Prometheus is not designed to provide billing or 100% accurate data, it is more suited to providing reliable data during an outage.
Presenting the Prometheus Data
To chart the data gathered from a Prometheus server you can use software such as PromDash. Prometheus uses powerful query language to separate and aggregate data. PromDash works by talking to any number of Prometheus servers via an HTTP API. Graphite graphs can be used to clearly demonstrate all of the data that has been gathered by Prometheus.
Getting involved with Prometheus.io
The Prometheus Community is available via a wide variety of channels. The whole project is developed in the open and developers are invited to contribute. Below are some of the channels you can use if you want to get involved:
- IRC: #prometheus on irc.freenode.net (join via Riot)
- Usage mailing list: prometheus-users – for discussions around Prometheus usage and community support
- Twitter: @PrometheusIO
- Issue tracker: Use the GitHub issue tracker for the various Prometheus repositories to file bugs and features request. If you need support, please send your questions to the prometheus-users mailing list rather than filing a GitHub issue.
Prometheus requests for users to not ask individual project members questions, but instead, get involved via the above channels. This ensures that the community as a whole can get involved.
Developers wishing to contribute to Prometheus
As an open source project, Prometheus welcomes community contributions.
To contribute, check out the CONTRIBUTING.md file in the respective Prometheus repository for instructions on how to submit changes. For programmers that wish to make more elaborate or controversial changes, they ask that you discuss it with them on their development mailing list before sending a pull request.
Prometheus.io Developer Summits
There are a variety of ways that developers can get involved with Prometheus, not least at their annual “Developer Summits” know as “PromCon”. That is where programmers get a chance to hear their in-person meetings. People who want to attend can contact Prometheus and they can go along provided that there is enough space available. All meeting notes are recorded and publicly available via their website after the summit event.
Prometheus.io is utilized by a variety of companies to enhance and strengthen their tech ecosystem. Prometheus is used to firefight any system outages and provide in-depth information on what happened. As a stand-alone system, it is available even in times of outages to allow a thorough analysis of the issue. The features and architecture are continually being enhanced by the community to fulfill the needs of a variety of companies. The open source system is used by systems engineers in organizations that have complex architecture that needs to be monitored in depth.