Create performance benchmarks with service levels


By the end of this tutorial, you will:

  • Understand service level indicators (SLIs) and service level obectives (SLOs).
  • Have created and defined SLIs and SLOs for your front-end experience.
  • Have alerts set up to warn of any SLI or SLO breaches so you can react before they impact your users.

Why create performance benchmarks

Now that you've remdiated the root cause of your app's performance issues, let's set up service levels so you can respond quickly if any slowness appears again.

Let's look at the difference between service levels, SLOs and SLIs. Service levels describe services provided to users within a given period of time, in measurable terms. Service level objectives (SLOs) are the goals set for the availability expected out of a system. *Service level indicators (SLIs) are the key measurements and metrics to determine the availability of a system.

Tying all these together allows you to:

  • Ease future setup now that you've establish a baseline of performance and reliability for your app.
  • Define reliability across teams with SLO and SLI recommendations that help you determine service boundaries.
  • Standardize reliability: Cross-organizational teams have a unified, transparent view of service reliability, and can better comply with customer-facing SLAs.

Create performance benchmarks

Let's get started with creating your application performance benchmarks:

Step 1 of 4

While there are a large amount of SLIs you could use to define your performance benchmarks, the following are some we specifically reccomend. Each collapser has an explanation of when you should choose that SLI and a corresponding NRQL query (which you'll use in step 2).

For now, just select one of the following:

SLIs for APM services instrumented with the New Relic agent: Based on Transaction events, these SLIs are the most common for request-driven services:


Your organization should define SLOs and SLIs based on your specific needs, your user's expectations, and resources available. After completing this tutorial, we recommend you learn more about how to define granular custom service levels.

Step 2 of 4
  1. Navigate to > All capabilities > Service levels management. This UI shows all your service levels and allows you to define, monitor, and edit them.
  2. Select + Add a service level in the top right of the UI.
Step 3 of 4

Choose the corresponding entity that you want to create a service level for. This could be an entire workload, a specific service, a synthetic monitor, or even a specific transaction. Once you've selected your entity, click Continue on the left side of the UI pane.

Step 4 of 4

Define the SLI you chose in step one in this pane. For example if you chose to define an SLI for service success, you would use the following queries:

Valid events fields

FROM: Transaction
WHERE: entityGuid = '{entityGuid}'

Where {entityGuid} is the service's GUID.

Bad events fields

FROM: TransactionError
WHERE: entityGuid = '{entityGuid}' AND error.expected IS FALSE

Where {entityGuid} is the service's GUID.

Select Continue in the left pane once you've confirmed your queries are correct to complete the creation of your service levels.

Next steps

Congratulations! You've completed our journey on how to use New Relic to improve your app's performance! Ready to learn more about New Relic features? Take a deeper dive:

1Prepare to triage your application

2Identify problematic transactions