View and query your Prometheus OpenMetrics data

To query and visualize the metrics collected for your Prometheus OpenMetrics integration with New Relic, you can use NRQL. You can also translate your Prometheus metrics to NRQL.

All metrics for Docker and Kubernetes are stored in the Metric type.

Default attributes

By default, the following attributes will be added to all metrics for Docker and Kubernetes integrations:

Default attributes
(all integrations)
Description
clusterName The name of the cluster provided in the scraper configuration.
integrationName The name of this integration (nri-prometheus).
integrationVersion The version of the integration; for example, 0.2.0.
metricName The name of the metric itself.
nrMetricType The type of the New Relic Metric type; for example, Gauges.
promMetricType The metric type of the Prometheus metric
scrapedEndpoint The URL of the endpoint is being scraped.

img-integration-k8s@2x.png Kubernetes: If the scraper is running in Kubernetes, New Relic also adds the following attributes to all the metrics:

Additional Kubernetes attributes Description
deploymentName Name of the deployment, if scraping a pod.
label The Kubernetes labels of the object being scraped, prefixed by "label".
namespaceName Name of the namespace.
nodeName Name of the node where the pod being scraped is running, if applicable.
podName Name of the pod being scraped, if applicable.
serviceName Name of the service being scraped, if applicable

NRQL query examples

When you build queries, be aware that there is no linking between the metrics, entities, and attributes. Use the following NRQL queries to find out which metrics are available and which attributes are present on these metrics:

Get metric names

To get all metric names:

FROM Metric SELECT uniques(metricName)

To get metric names for a specific endpoint:

FROM Metric SELECT uniques(metricName) WHERE scrapedEndpoint='<ep>'

To get metric names for a specific cluster, namespace, or pod:

FROM Metric SELECT uniques(metricName) WHERE clusterName='<cn>'
FROM Metric SELECT uniques(metricName) WHERE namespaceName='<ns>'
FROM Metric SELECT uniques(metricName) WHERE podName='<pod>'
Get the attributes for a metric

To get all attributes for the selected metric:

FROM Metric SELECT keyset() WHERE metricName='<mn>'
Get the values for an attribute

The autocomplete will show all values of the attribute, regardless of the pod. To determine the attribute values for a specific pod:

FROM Metric SELECT uniques(<attribute>) WHERE metricName='<mn>' AND podName='<pod>'

Build the query

Using the metric name and attributes that you query, you can query your data. For more information about facets, time series, and time selection, see the NRQL documentation.

Get metric values

To get raw metric values:

FROM Metric SELECT <metricName> WHERE <attribute>='<value>'
Get a chart of the metric

To get a chart of the metric with an aggregator of average, min, max, or sum:

FROM Metric SELECT <aggregator>(<metricname>) WHERE <attribute>='<value>' TIMESERIES
Query counter metrics (deltas)

Currently the integration calculates the deltas for counter metrics. This is why queries on counter metrics will show the deltas of the counter instead of the absolute value of the counter.

View connected Redis clients per pod

Docker icon Docker: This example assumes you are scraping Redis exporters. To view the number of connected Redis clients per endpoint in a cluster:

FROM Metric SELECT latest(redis_connected_clients) WHERE clusterName='my-cluster' FACET scrapedEndpoint TIMESERIES

img-integration-k8s@2x.png Kubernetes: This example assumes that you have Redis pods with the Redis exporter installed. To view the number of connected Redis clients per pod in the default namespace:

FROM Metric SELECT latest(redis_connected_clients) WHERE namespaceName='default' FACET podName TIMESERIES
Docker iconDocker: View average memory free for scraped endpoints

This example assumes you are scraping node exporters for Docker. To view average memory free for all scraped endpoints in a cluster:

FROM Metric SELECT average(node_memory_MemFree_bytes) WHERE clusterName='my-cluster'
img-integration-k8s@2x.png Kubernetes: View average memory usage for pods in a deployment

To view average memory usage for all pods in a Kubernetes deployment:

FROM Metric SELECT average(container_memory_usage_bytes) WHERE deploymentName='my-app-deployment' AND namespaceName='default'

View data in New Relic

After you query the data, you can view the results in the New Relic UI. You can also visualize the data as charts, histograms, etc.

To view the NRQL query results for your Prometheus integration's data: Go to one.newrelic.com > Chart builder. For more information, see New Relic's chart builder documentation.

Create histograms and summaries

With version 1.2.0 or higher of the Prometheus OpenMetrics integration, you can create histograms and percentiles (summaries) of your data. These are based on New Relic's guidelines in GitHub for higher level metric abstractions.

Data presentation Comments
Histograms

A bucket <basename>_bucket{le="42"} will be sent as this:

<basename>_buckets

The dimension will be this:

{histogram.bucket.upperBound="42"}

Percentiles

Quantiles (summaries) are transformed into percentiles.

A metric <basename>{quantile="0.3"} will be sent to New Relic as <basename>.percentiles.

The dimension will be this:

{percentile="30"}

To better support visualization of histograms, percentiles are calculated based on the histogram metrics and sent to New Relic. To configure the calculated percentiles, use the percentiles configuration option.

For more help

Recommendations for learning more: