Grafana Cloud fundamentalsActive series and DPM

Active series and DPM

Grafana Cloud calculates metrics usage by looking at two components: active series and data points per minute (DPM).

  • An active series is a time series that receives new data points, or samples. When you stop updating or scraping a time series, it is no longer considered “active” for billing purposes. Specific definitions of “active” depend on the data source. To learn more, see Active series below.
  • A data point is a single measured occurrence (sample) of a metric within a time series, consisting of a unique value and timestamp.

NOTE: Click here to learn more about Synthetic Monitoring billing.

Prometheus time series

A Prometheus time series is a list of timestamp and value pairs (samples) identified by a metric name and zero or more pairs of label names and label values.

As an example, consider the following output from a Prometheus metrics exporter:


In this example, we can determine:

  • The metric name is node_cpu_seconds_total.
  • There are three labels, where:
    • The label names are host, cpu, and mode.
    • The label values are host1, 0 or 1, and user.
  • The are two total time series, since the label value of cpu is different for each time series even though host and mode are the same.

The example above represents two time series. When you scrape the metrics endpoint and a time series generates a sample, there would be a specific timestamp and measured value associated with the time series. If you scrape the exact same time series and it generates a new sample, say 1 minute later, that creates a second data point in the same time series, with a new timestamp and value (sample).

Metrics usage can ramp up quickly when a given metric has many different combinations of labels, or high cardinality. For example, with 6 different modes, 10 hosts, and say 4 cpus, node_cpu_seconds_total would count towards 6*10*4 or 240 active series of your usage. If your scrape interval is 15 seconds, this would result in a DPM of 4, or total DPM of 960 data points.

You can read a detailed explanation of the Prometheus data model in the Prometheus documentation.

What are Graphite time series?

For Graphite, unique times series are equivalent to metric paths.

For example, below is an output from Graphite with eight unique time series:


If Graphite Tags are used, then below is an output with eight unique time series:


Billing calculations

Billing is based on usage, and usage is determined by two primary factors:

  • The number of active series (95th percentile)
  • The number of data points per minute (DPM), also at the 95th percentile.

To learn more about 95th percentile usage billing, see the section below.

By default, Grafana Cloud allows you to ship samples at a rate of 6 DPM per active series. If your scrape interval is 10 seconds or more, you will get billed at the standard rate for active series.

If your average DPM per active series is greater than six, then your usage will be based on total DPM.

Active series

An active series is a time series where new samples are being generated.

The time span after which a series is no longer considered active after receiving the last data point is different for Prometheus and Graphite:

  • For Prometheus, a time series is considered active if new data points have been generated within the last 15 to 30 minutes.
  • For Graphite, a time series is considered active if new data points have been generated within the last eight hours.

Data points per minute

The second component for calculating total usage in Grafana Cloud is data points per minute (DPM).

Usage is only affected by DPM if time series have a DPM greater than 6, meaning that your metrics are being scraped more often than every 10 seconds. Grafana Cloud includes a default resolution of 6 DPM per active series, but you can decrease the scrape interval and ship data points more frequently (increase your DPM), for an additional charge.

In this case, your usage and cost would be calculated as follows (in pseudo-PromQL):

Active series:

active_series = quantile_over_time(0.95, sum by (id)(grafanacloud_instance_active_series < Inf)[30d:])


total_dpm = quantile_over_time(0.95, sum by (id)(grafanacloud_instance_samples_per_second < Inf)[30d:]) * 60

Total usage:

usage = max(active_series, total_dpm/6)

Total cost:

cost = (usage/1000)*16$

For example, suppose you have 1,000 time series and are sampling and sending data at a rate of 4 DPM per series. Your usage would be equal to 1,000 active series.

Now, suppose that you still are still sampling 1,000 time series, but have increased your scrape frequency such that you are sending 12 DPM per time series.

This is equivalent to 12,000 total DPM across all series, and you would be billed as if you were sending 2,000 time series (12,000 ÷ 6 = 2,000). In the formula above, the total_dpm/6 term would override the active_series term.

In other words, the billed usage for 1,000 time series at 12 DPM is equivalent to the billed usage for 2,000 time series at the base rate of 6 DPM.

95th percentile billing

Grafana Cloud tracks the number of active series shipped and the total DPM rate over each billing period.

For each new billing period, you are billed based on the 95th percentile of:

  • The total number of active series sent
  • The total DPM across all active series

This helps you avoid getting billed for unexpected or temporary spikes in usage, such as when intially configuring Prometheus or the Grafana Agent.

In other words, Grafana Cloud forgives the top five percent of usage “time” in each billing period (month), which is roughly the top ~36 hours of usage (0.05*720 = 36).

For example, if you normally send around 6,000 active series but spike up to 30,000 active series for a total of 24 hours in a month, you would still only be billed at the rate of 6,000 active series.