As the previous blog explained the concept of Prometheus and how it was adopted and made a popular monitoring tool. The biggest assets of Prometheus is its multidimensional data model and a powerful Query language called PromQL used for slice and dice of dimensional data. In 2016, Prometheus joined the Cloud Native Computing Foundation as the second hosted project.
There are various components in the Prometheus system. It consists of the main server which scrapes and stores data in time series. Client libraries are used for instrumenting application code. There are popular client libraries in all languages and runtimes. Kubernetes and Docker have already instrumented with Prometheus client libraries. There are special-purpose exporters for conversion services and an alert manager to handle alerts. It also contains a dashboard for storing and visualizing time series data.
Service Library: In order for Prometheus to know what to monitor, the applications must be instrumented and the exporters should be running. With dynamic environments, you cannot simply provide a list of applications and exporters once, as it will get out of date. This is where service discovery comes in. Prometheus has integrations with many service discovery mechanisms, such as Kubernetes, EC2 etc.
Scraping: Service directory lists the targets to be monitored. For monitoring, Prometheus has to fetch metrics which is done by sending an HTTP request called a scrape. The response to this scrape is parsed and stored. There are two approaches on how Prometheus collects metrics, Push & Pull. Prometheus uses the pull approach in which a request is made for collecting metrics. This approach is in the core function of Prometheus.
Client Libraries: Before monitoring the services, an instrumentation must be added to their code via one of the client libraries. Client libraries are available for all the major languages and runtimes. There are official and non-official client libraries.
Exporters: It is a software which takes requests from Prometheus, gathers data from the application and transforms them into a format understood by the Prometheus system, and returns them back in a response.
Dashboards: In Prometheus, a dashboard is a tool used for monitoring time series data metrics of the Prometheus system. Grafana is the commonly used visualization tool because of its wide variety of features, including official support for Prometheus as a data source.
Rules and Alerts: Since Prometheus system monitors so much data from many applications, certain recording rules are implemented in which the PromQL expressions are evaluated on regular basis and stored also alert rules are similar to recording rules but the difference is that during evaluation if the expressions are alerts, it is passed on to alert manager.
Alert Manager: This part is responsible for turning alerts generated from Prometheus to notifications. It can also group similar alerts to one notification and can also make alerts silenced.
Storage: The monitored data is stored locally on a custom database. The storage mechanism of Prometheus is improved with newer versions such that it can monitor thousands of machines with a single Prometheus server.
Prometheus was developed as a pool of features that existed in different monitoring systems under one single system. The open source nature, a multidimensional data model and a powerful query language made it popular enough to adopt it as a monitoring tool for cloud services.
Urolime is one of the leading DevOps consulting company with a handful of experience in supporting customers around the globe in adopting DevOps practices. As an AWS and Cloud consulting partner, Urolime not only has experience in Cloud Migrations but also support the vast customer base to enable scalable and highly available architecture on AWS, Azure, and GCP. The customers benefit from our expert involvement in Deployment Automation (CI/CD), Infrastructure Automation, Dockerization, Security, Disaster Recovery Planning & Implementation and 24/7 Managed Services with 10 Minutes SLA. Urolime is one of the companies which deals with a bunch of Kubernetes solution build for the customer on AWS, Azure, and GCP.