Prometheus Metrics Explained: Autoscaling Deployments with KEDA in Kubernetes

Learn how to use Prometheus metrics with TL;DR: KEDA to autoscale Kubernetes workloads. Includes installation steps, PromQL examples, best practices, and a sneak peek at Devtron’s upcoming agentic AI for smarter scaling.

Table of contents
Key Takeaways

1. Prometheus metrics provide real-time monitoring data for Kubernetes workloads.

2. KEDA integrates with Prometheus metrics to enable event-driven autoscaling

3. By leveraging PromQL queries, you can scale workloads based on specific application performance indicators.

4. Helm makes it easy to install and configure KEDA in your cluster.

What are Prometheus Metrics?

Prometheus metrics are numerical time-series data gathered by the Prometheus monitoring system. These metrics:

  • Help track the performance of applications, services, and infrastructure.
  • They are stored with timestamps for historical analysis.
  • Can be queried using PromQL for flexible, real-time insights.

Types of Prometheus metrics:

  1. Counter - Cumulative value that only increases (e.g., total HTTP requests).
  2. Gauge - Represents a value that can go up or down (e.g., CPU temperature).
  3. Histogram - Samples observations and counts in configurable buckets (e.g., request durations).
  4. Summary - Similar to a histogram, but provides quantiles.

What is Prometheus?

Prometheus is an open-source tool used for metrics-based monitoring and alerting. It is a very powerful tool for collecting and querying metric data. It collects data from application services and hosts and stores them in a time-series database. It offers a simple yet powerful data model and a query language (PromQL), and can provide detailed and actionable metrics to analyze an application's performance.

What is KEDA?

KEDA is a lightweight, event-driven autoscaler for Kubernetes that scales workloads based on metrics or events from external systems - including Prometheus metrics.
When you deploy KEDA:

  • keda-operator manages scaling logic.
  • keda-operator-metrics-apiserver exposes custom metrics to Kubernetes' Horizontal Pod Autoscaler (HPA).

Why Prometheus Metrics Matter

Prometheus metrics are critical for monitoring and scaling modern applications running on Kubernetes. They collect time-series data such as request rates, memory usage, CPU utilization, and custom business metrics, enabling proactive scaling decisions.

When paired with KEDA (Kubernetes Event-Driven Autoscaler), Prometheus metrics can trigger workload scaling dynamically — keeping applications responsive while optimizing resource usage.

Installing KEDA Using Helm

  1. Add helm repo
helm repo add kedacore https://kedacore.github.io/charts

2. Update helm repo

helm repo update

3. Install keda helm chart

Using helm2 -

helm install kedacore/keda --namespace keda --version 1.4.2 --name keda

Using helm3

kubectl create namespace keda
helm install keda kedacore/keda --version 1.4.2 --namespace keda

Autoscaling with Prometheus Metrics

Here’s an example ScaledObject configuration for autoscaling using Prometheus metrics:

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: prometheus-scaledobject
  namespace: demo3
spec:
  scaleTargetRef:
    apiVersion: argoproj.io/v1alpha1
    kind: Rollout
    name: keda-test-demo3
  triggers:
    - type: prometheus
      metadata:
      serverAddress:  http://<prometheus-host>:9090
      metricName: http_request_total
      query: envoy_cluster_upstream_rq{appId="300", cluster_name="300-0", container="envoy", namespace="demo3", response_code="200" }
      threshold: "50"
  idleReplicaCount: 0                       
  minReplicaCount: 1
  maxReplicaCount: 10
Parameters Descriptions
.spec.triggers.type Type of the metric used for scaling.
.spec.triggers.metadata Additional information about the metric used for scaling.
.spec.triggers.metadata.serverAddress URL for the prometheus server.
.spec.triggers.metadata.metricName Name of prometheus metric that is to be used for autoscaling.
.spec.triggers.metadata.query promQL query to run to get response and start autoscaling.
.spec.triggers.metadata.threshold Value to start scaling the deployment

Best Practices for Using Prometheus Metrics with KEDA

  • Optimize PromQL queries to avoid overloading Prometheus.
  • Set reasonable thresholds to prevent scaling flaps.
  • Monitor latency and query execution time.
  • Combine Prometheus metrics with business metrics for smarter scaling.

Conclusion

By combining Prometheus metrics with KEDA, Kubernetes workloads can scale intelligently and efficiently. This setup ensures applications remain responsive while optimizing cloud costs. With the right PromQL queries and configurations, autoscaling can become both predictive and cost-effective.

🚀
Coming Soon: Devtron’s agentic AI will make Prometheus metrics-based autoscaling setup as simple as answering a few guided questions. Stay tuned!

FAQ

What is Prometheus and how does it help with scaling in Kubernetes?

Prometheus is an open-source monitoring tool that collects time-series data from applications using PromQL. It provides metrics that can be used to trigger scaling actions in Kubernetes.

What is KEDA and how does it enable autoscaling in Kubernetes?

KEDA (Kubernetes Event-Driven Autoscaler) scales Kubernetes workloads based on external event metrics, like queue length or Prometheus metrics, integrating with components like HPA.

How do I install KEDA in a Kubernetes cluster using Helm?

Install KEDA by adding the Helm repository with helm repo add kedacore https://kedacore.github.io/charts, then run helm install keda kedacore/keda --namespace keda.

How can I configure KEDA to autoscale using Prometheus metrics?

Configure KEDA by defining a ScaledObject with the Prometheus URL, metric name, PromQL query, and a scaling threshold to trigger autoscaling based on Prometheus data.

Related articles

Related articles