Use New Relic's metrics API service to define rules for creating metrics from your other types of data, such as events, logs, or spans. Recommendation: Before you begin, review our requirements and tips for creating rules.
To create a rule for creating metrics from events, logs, or spans:
- Construct the metrics rule using NRQL.
- Construct a NerdGraph (GraphQL format) API request that contains your NRQL rule.
- Create the metric by making the API request.
Once a metric is created, you can query and chart it using NRQL.
The most important part of creating a metrics rule is constructing the NRQL query that defines the metric for your data from events, logs, or spans. You can create up to 10 metrics with a single NRQL query by following this procedure:
Using New Relic's NRQL interface, construct a query for the metric you want to create. For example:FROM ProcessSample SELECT average(ioTotalReadBytes)WHERE nr.entityType = 'HOST'
Edit the query to use one of the three available metric types:
summary: Use if the query's function is
uniqueCount: Use if the query's function is
This example query uses
average, so use
summary:FROM ProcessSample SELECT summary(ioTotalReadBytes)WHERE nr.entityType = 'HOST'
This example query uses
counton a non-numeric field:FROM ProcessSample SELECT count(hostname)WHERE hostname LIKE '%prod%'
summaryon a non-numeric field use
summary(1):FROM ProcessSample SELECT summary(1)WHERE hostname LIKE '%prod%'
For more detailed information on using these metric types in rules, see Creating metric rules: requirements and tips.
Decide on the attributes you want to attach to the metric, following the limits on the cardinality of unique metric-name/attribute-value combinations.
Recommendation: Run a separate query to ensure the maximum cardinality isn't over 50,000 for a 30 second window. For example, the following query will find the maximum cardinality encountered in a 30 second period over the last 3 hours for the
ProcessSampleevent when including the
commandNameattributes:FROM (FROM ProcessSampleSELECT rate(uniqueCount(awsRegion, awsAvailabilityZone, commandName), 30 seconds) AS 'cardinalityRate'WHERE nr.entityType = 'HOST' TIMESERIES 30 seconds) SELECT max(cardinalityRate) AS 'maxCardinalityRate' SINCE 3 hours AGO
To be able to aggregate and filter your metrics, add the attributes you want to attach to the metric using the
FACETclause. For example:FROM ProcessSampleSELECT summary(ioTotalReadBytes) WHERE nr.entityType = 'HOST'FACET awsRegion, awsAvailabilityZone, commandName
Set the name of the metric using the
ASfunction. For example:FROM ProcessSample SELECT summary(ioTotalReadBytes) AS 'io.totalread.bytes'WHERE nr.entityType = 'HOST' FACET awsRegion, awsAvailabilityZone, commandName
Once your NRQL rule is complete, use it to create the API request.
After you build the NRQL rule to convert data from events, logs, or spans to metrics, continue with building the API request. You can use our NerdGraph API tool to explore the data structure and to construct and make your request.
When your API request is ready, you can use the NerdGraph API to make the request, which will create the metrics.
After you create a metrics rule to convert data for your events, logs, or spans, you can view the new metric data in the New Relic UI. To view your data:
Run the following query to see the name of all your metrics:SELECT uniques(metricName) FROM Metric
Pick the metric of interest, then run the following query to see the available attributes:SELECT * FROM Metric where metricName = 'yourMetric'
If you don't see expected data, follow the troubleshooting procedures.
If your NerdGraph call is not constructed correctly, you may receive a message like this:
Cannot parse the unexpected character "\u201C”
Verify the quotes in the NerdGraph call are not smart quotes (curly quotes). Our NerdGraph API only accepts straight quotes.