DEV Community

Cover image for Prometheus - Architecture - Part 1
Unni P
Unni P

Posted on • Originally published at iamunnip.hashnode.dev

Prometheus - Architecture - Part 1

In the first part of the series we will look Prometheus introduction, features and its components

Introduction

  • Prometheus is an open-source monitoring and alerting tool

  • Originally built by SoundCloud in 2012

  • Donated to Cloud Native Computing Foundation in 2016

  • Second project hosted by CNCF after Kubernetes

  • CNCF graduated project

  • Collects and stores its metrics as time series data

  • Metrics information is stored with the timestamp at which it was recorded

  • Optional key-value pairs called labels are also stored

Features

  • Multi-dimensional data model — allows to define and store time-series data with multiple dimensions

  • PromQL — a query language to perform complex queries and calculations on metrics data

  • Time-series collection — can collect metrics data from a wide range of sources, including servers, applications, and databases

  • Data retention — can set retention policies on the metrics data

  • Service discovery — can automatically discover and monitor new services in a dynamic infrastructure

  • Exporters — different types of agents available for collecting metrics from different types of sources

  • Grafana integration — can easily be integrated with Grafana for visualization and custom dashboards

  • Alerting — can alert stakeholders when an issue occurs

Architecture

prometheus architecture

Prometheus Server

  • The main component of Prometheus

  • Collects, stores and serves metrics data

  • Follows a pull-based model for collecting metric data

  • Periodically queries the targets configured in the scrape configuration

  • Uses HTTP or HTTPS protocol

  • Stores the data in a time-series database

  • Time-series database allows Prometheus to do operations like querying, aggregation and visualization

Exporters

  • Agents that collect and expose metrics data from applications or third-party systems

  • Written in a wide variety of programming languages

  • Designed to be lightweight and easy to deploy

  • Scrape metrics data from a target and expose it on an HTTP endpoint

  • Metrics data is returned in a text-based format such as plain text, JSON, or protobuf

  • Official exporters are maintained by Prometheus GitHub Organization like Node Exporter, MySQL Exporter etc

  • Unofficial exporters are externally contributed and maintained like Apache Exporter, PostgreSQL Exporter etc

Alertmanager

  • Manages alerts generated by Prometheus

  • Receives alerts from Prometheus and groups them based on criteria like severity

  • Based on routing rules, it sends a notification to various receivers like Email, Slack, Pagerduty etc

  • Applies a set of deduplication rules to ensure that alerts are not sent multiple times for the same issue

  • Provides web interface that allows users to view and manage alerts

Pushgateway

  • Prometheus follows a pull-based model for collecting metrics data

  • Sometimes we need to push metrics to Prometheus which cannot be scraped

  • Helps to push metrics to Prometheus instead of pulling metric

  • Best suitable for short-lived jobs

  • Provides an HTTP API for pushing metrics from short-lived jobs

Service Discovery

  • Process of identifying and monitoring systems automatically

  • Helps Prometheus to keep track of different services which are running

  • Supports a variety of service discovery options for discovering scrape targets like Kubernetes, Consul, Docker etc

  • If you need a service discovery system that is currently not supported, we can use file-based service discovery

  • Enables you to list scrape targets in a JSON file along with metadata

  • Metadata is a piece of useful information about targets, like the name of the service, description etc

  • HTTP service discovery helps to discover targets over an HTTP endpoint an alternative to file-based service discovery

Client Libraries

  • Set of libraries that allows developers to instrument their applications to expose metrics to Prometheus

  • It exposes an HTTP endpoint and Prometheus can scrape metrics from these HTTP endpoints and store them in a time-series database

  • Once the metrics are stored, Prometheus can generate graphs, reports and alerts based on the data

  • Helps developers to get insights into their application performance

  • Official client libraries are available in many programming languages like Go, Python, Java etc

  • Unofficial client libraries are also available for C, C++, Node.js etc

Reference

https://prometheus.io/docs/introduction/overview/

Image of Datadog

The Future of AI, LLMs, and Observability on Google Cloud

Datadog sat down with Google’s Director of AI to discuss the current and future states of AI, ML, and LLMs on Google Cloud. Discover 7 key insights for technical leaders, covering everything from upskilling teams to observability best practices

Learn More

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay