• /
  • EnglishEspañol日本語한국어Português
  • Log inStart now

Translate PromQL queries to NRQL

Do you have a PromQL query you'd like to convert to NRQL? This document provides examples that show you how to convert some common PromQL queries to NRQL queries. You can use our PromQL-style query language to explore your Prometheus OpenMetrics integration data along with other data sent to New Relic.

Tip

To run PromQL-style queries in New Relic One, go to the query builder advanced PromQL-style mode.

Prometheus and New Relic metric types

The different metric types supported by Prometheus and New Relic are related to each other:

New Relic

Prometheus

Description

Count

Counter

The Prometheus counter is a cumulative sum while the New Relic count is a delta sum.

For example, if you see 2 requests in the first reporting period and 3 requests in the second reporting period. The Prometheus counter will report 2 and then 5, while the New Relic count will report 2 and then 3.

Gauge

Gauge

A Prometheus gauge is similar to a New Relic gauge.

Multiple counts

Histogram

Prometheus automatically maps a histogram to a set of counters. In New Relic, these counters should be changed to deltas and reported as counts.

Gauges and counts

Summary

Prometheus represents a Summary with a given basename as the following time series:

  • a basename_sum

  • a basename_count

  • and 0 or more of basename{quantile=".xx"...} metrics

    New Relic maps the _sum as a Summary, the _count as a Counter, and each quantile metric as a Gauge.

Summary

(No equivalent in Prometheus)

New Relic has a distinct metric type called a summary that is different than the Prometheus summary. It is designed for reporting aggregated discrete events so that you can query the count, sum, min, max, and average values.

To learn how to convert from a PromQL query to an NRQL alert condition that can be used with New Relic, watch this short video (approx. 5:45 minutes).

Mapping between NRQL and our PromQL-style queries

Tip

To see how New Relic translates PromQL-style queries to NRQL, write a query in the query builder PromQL-style tab, then switch to the NRQL tab.

This table shows the mapping between NRQL and our PromQL-style queries when exploring data. For more contextual information, see the examples.

Description

Mapping between NRQL and PromQL-style queries

Search for attributes:

Explore the attributes on the container_memory_usage_bytes metric.

  • PromQL:

    container_memory_usage_bytes
  • NRQL:

    FROM Metric SELECT keyset() WHERE metricName = 'container_memory_usage_bytes'

Find attribute's value:

Explore the current value of the container_memory_usage_bytes metric for unique id attributes.

  • PromQL:

    sum(container_memory_usage_bytes) by (id)
  • NRQL:

    FROM Metric SELECT sum(container_memory_usage_bytes) FACET id

Visualize the attribute's value:

Chart the value of the container_memory_usage_bytes metric with the given id attribute value.

  • PromQL:

    container_memory_usage_bytes{id="/"}
  • NRQL:

    FROM Metric SELECT latest(container_memory_usage_bytes) WHERE id = '/' TIMESERIES

Filter examples

Both our PromQL-style query language and NRQL provide syntax to filter down the number of unique metric time series.

  • PromQL-style uses brackets to filter.
  • NRQL uses a WHERE clause.

Here are some example queries:

Description

PromQL-style and NRQL queries

Select data with specific values.

  • PromQL:

    go_memstats_heap_alloc_bytes{job="apiserver", instance="1234"})
  • NRQL:

    To only select data with specific values in NRQL, use the WHERE clause with =. In this example, all data must have the selected value for job and handler.

    FROM Metric SELECT latest(go_memstats_heap_alloc_bytes) WHERE job = 'apiserver' AND instance = '1234' TIMESERIES

Select data with multiple values.

  • PromQL:

    go_memstats_heap_alloc_bytes{environment=~"staging|testing|development",method!="GET"}
  • NRQL:

    In NRQL use the in clause to select multiple values for an attribute and the != sign to select all values but the one listed. In this example, the environment can be staging, testing, or development, and the method cannot be GET.

    FROM Metric SELECT latest(go_memstats_heap_alloc_bytes)
    WHERE environment IN ('staging', 'testing', 'development')
    AND method != 'GET' TIMESERIES

Select data using partial string values.

  • PromQL:

    go_memstats_heap_alloc_bytes{job=~"api.*"}
  • NRQL:

    In NRQL use the LIKE clause to match part of a string value. In this example, all data will be returned where the job attributes start with api.

    FROM Metric SELECT latest(go_memstats_heap_alloc_bytes) WHERE job LIKE 'api%' TIMESERIES

PromQL-style to NRQL query examples

You can simulate the following PromQL-style queries with NRQL queries:

Description

PromQL-style and NRQL queries

Measure the per second rate over the last minute of the http_request_total metric.

  • PromQL:

    sum(rate(http_requests_total[1m]))
  • NRQL:

    FROM Metric SELECT rate(sum(http_request_total), 1 second) TIMESERIES 1 minute

Chart the difference of the two metrics, then divide by 1024.

  • PromQL:

    (instance_memory_limit_bytes - instance_memory_usage_bytes) / 1024
  • NRQL:

    FROM Metric SELECT (latest(instance_memory_limit_bytes) - latest(instance_memory_usage_bytes)) / 1024 TIMESERIES

Provide the summed rate per 30-second interval by each handler.

  • PromQL:

    sum(rate(http_requests_total[30s])) by (handler)
  • NRQL:

    FROM Metric SELECT rate(sum(http_requests_total), 30 seconds) FACET handler TIMESERIES

Chart the difference in the two metrics where the instance is named foo and the fstype is either ext4 or xfs.

  • PromQL:

    (node_filesystem_free_bytes{instance='foo',fstype=~"ext4|xfs"} / node_filesystem_size_bytes{instance='foo',fstype=~"ext4|xfs"})
  • NRQL:

    FROM Metric SELECT latest(node_filesystem_free_bytes) / latest(node_filesystem_size_bytes)
    WHERE instance = 'foo' AND fstype IN ('ext4', 'xfs')
Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.