Your data. Anywhere you go.

New Relic for iOS or Android


Download on the App Store    Android App on Google play


New Relic Insights App for iOS


Download on the App Store


Learn more

Close icon

Synthetics Dashboard - Investigate Slow Resources

synthetics
shared-dashboards

#1

Dashboard of the Day: Synthetics Dashboard - Investigate Slow Resources

Motivation

Synthetics is the perfect tool for monitoring the accessibility of your pages and identifying problems occurring before your customers are impacted. Synthetics is not only useful for monitoring uptime, but can also reveal performance issues and trends on page resources that might not be immediately clear through SyntheticRequest events.

Is a 3rd party tool slowing load time by getting stuck during DNS lookup? Do certain resources load slower in different parts of the world? This and more can be found by using this Synthetics focused dashboard!


Screenshot

Dashboard Details

Required Products: Synthetics
Level of Effort: Low
This dashboard will work on the standard New Relic data models and does not require any custom attributes or events.

Settings
Use the gear button to edit your dashboard and configure the following settings:

  • Dashboard Filter: Enabled
  • Enabled Event Types: SyntheticRequest , SyntheticCheck
  • Enabled Attributes: all

Chart Details

In this section, we’ll go into the details on the purpose of each of the charts you see above. We’ll also show you the query (NRQL) that you can cut/paste into your Insights query bar.

Average Duration by Region

SELECT average(duration) FROM SyntheticRequest since 24 hours ago facet location

Average load duration of resources observed by Synthetics monitors for a given location and for the given time period. Helps you identify the performance of page resources when being viewed from different locations, which can help you ensure a consistent visitor experience around the world. Adding a Chart Facet here will allow you to quickly see all monitor ID’s, IP addresses/domains, and Request Breakdown details scoped to a selected region.

Add a Chart Facet for extra functionality!

Chart Facets expands the ability to quickly scope down into data by being able to click on an attribute and have the entire dashboard facet by that data point. Add this to the chart by doing the following:

  1. Run the NRQL query and save the chart to your dashboard.
  2. Open the menu in the newly created chart by clicking the ellipses in the top right corner and select “Edit Chart”.
  3. Click the blue button labeled “Link facets to a dashboard”, select the “current dashboard” option, and click Save.

Region Duration

Line Chart

SELECT average(duration) FROM SyntheticRequest since 24 hours ago facet location TIMESERIES

A visual representation of the Average Duration by Region chart. Gives an idea of what the average load duration of a page resource is across a period of time by location, showing duration trends and pointing out anomalous times visually. Use this to confirm if current load times in a region are consistently occurring in your acceptable range.

Average Duration by Monitor ID

SELECT average(duration) FROM SyntheticRequest since 24 hours ago facet monitorId

Average load duration of resources for a given monitor within the given time period. Helps you identify the performance of page resources based on the monitor that is running. Adding a Chart Facet here will allow you to quickly see all regions, IP addresses/domains, and Request Breakdown details scoped to a selected monitor ID.

Add a Chart Facet for extra functionality!

Chart Facets expands the ability to quickly scope down into data by being able to click on an attribute and have the entire dashboard facet by that data point. Add this to the chart by doing the following:

  1. Run the NRQL query and save the chart to your dashboard.
  2. Open the menu in the newly created chart by clicking the ellipses in the top right corner and select “Edit Chart”.
  3. Click the blue button labeled “Link facets to a dashboard”, select the “current dashboard” option, and click Save.

Monitor Name/ID Duration

Line Chart

SELECT average(duration) FROM SyntheticRequest facet monitorName, monitorId since 24 hours ago TIMESERIES

A visual representation of the Average Duration by Monitor ID chart. This chart will display performance trends over the given time period, enabling the easy identification of trends or patterns in the duration of specific monitors. This also includes the monitor name in addition to the ID, so you can quickly find which Synthetics monitor belongs to which ID.

IP Address Duration

SELECT average(duration) FROM SyntheticRequest since 24 hours ago facet serverIPAddress

This chart displays the average load duration of resources based on the corresponding server’s IP address that processed the request. When you have identified that resources are causing issues on your site, you can use this chart to identify the exact IP address of a troublesome resource. Adding a Chart Facet here will allow you to quickly see all regions, monitors, domains, and Request Breakdown details scoped to a selected resource IP address.

Add a Chart Facet for extra functionality!

Chart Facets expands the ability to quickly scope down into data by being able to click on an attribute and have the entire dashboard facet by that data point. Add this to the chart by doing the following:

  1. Run the NRQL query and save the chart to your dashboard.
  2. Open the menu in the newly created chart by clicking the ellipses in the top right corner and select “Edit Chart”.
  3. Click the blue button labeled “Link facets to a dashboard”, select the “current dashboard” option, and click Save.

IP Duration

Line Chart

SELECT average(duration) FROM SyntheticRequest since 24 hours ago facet serverIPAddress TIMESERIES

A visual representation of the IP Address Duration chart. Using this chart, you can discover performance trends of consistently slow resources coming from specific IP addresses, as well as see any recent increases that would be good to investigate. A 3rd party resource told that they have slow response time from a specific IP may enable them to correct the issue and improve your own site’s performance.

Domain Duration

SELECT average(duration) FROM SyntheticRequest since 24 hours ago facet domain

This chart displays the average load duration of resources based on the domain portion of the request URL for that resource. Helps you identify the overall performance of resources coming from a specific domain, highlighting trends in resource load time based on the service providing the resource. Adding a Chart Facet here will allow you to quickly see all regions, monitors, IP addresses, and Request Breakdown details scoped to a selected resource domain.

Add a Chart Facet for extra functionality!

Chart Facets expands the ability to quickly scope down into data by being able to click on an attribute and have the entire dashboard facet by that data point. Add this to the chart by doing the following:

  1. Run the NRQL query and save the chart to your dashboard.
  2. Open the menu in the newly created chart by clicking the ellipses in the top right corner and select “Edit Chart”.
  3. Click the blue button labeled “Link facets to a dashboard”, select the “current dashboard” option, and click Save.

Domain Duration

Line Chart

SELECT average(duration) FROM SyntheticRequest since 24 hours ago facet domain TIMESERIES

A visual representation of the Domain Duration chart from above. Gives an idea of what the average load duration of a page resource is across a period of time by the domain the resource is being requested from, showing duration trends and pointing out anomalous times visually. Use this to confirm if current resource load times from a specific domain are consistently occurring in your acceptable range.

Request Time Breakdown(Durations)

Attribute Sheet

SELECT average(duration) as 'Total Duration', average(durationDNS) as 'DNS Time', average(durationConnect) as 'Connect Time', average(durationSSL) as 'SSL Time', average(durationWait) as 'Wait Time', average(durationReceive) as 'Receive Time' FROM SyntheticRequest since 24 hours ago

Shows the average duration of individual components of the load time process of resources. Using this helps to break down where specifically that load times are experiencing a slowdown, which can help in investigating where to start when troubleshooting an issue. When used with facet charts mentioned on other charts in this dashboard, the data will also adjust to the scope you have chosen, letting you quickly deep dive into issues.

Request Time Breakdown(Visual)

Line Graph

SELECT average(duration) as 'Total Duration', average(durationDNS) as 'DNS Time', average(durationConnect) as 'Connect Time', average(durationSSL) as 'SSL Time', average(durationWait) as 'Wait Time', average(durationReceive) as 'Receive Time' FROM SyntheticRequest TIMESERIES since 24 hours ago

A visual representation of the _Request Time Breakdown(Duration) chart. This is useful for being able to quickly see how each of the individual components are contributing to the overall load duration of a resource. When used with facet charts mentioned on other charts in this dashboard, the data will also adjust to the scope you have chosen, letting you quickly deep dive into issues.

Request Time Breakdown(Percentage)

Attribute Sheet

SELECT average(duration)/average(duration)*100 as '% - Total Duration', average(durationDNS)/average(duration)*100 as '% - DNS Time', average(durationConnect)/average(duration)*100 as '% - Connect Time', average(durationSSL)/average(duration)*100 as '% - SSL Time', average(durationWait)/average(duration)*100 as '% - Wait Time', average(durationReceive)/average(duration)*100 as '% - Receive Time' FROM SyntheticRequest since 24 hours ago

Shows the percentage of load time on a resource that individual components were responsible for. Using this helps to break down which components of a load time are contributing to load time, which can help in investigating where to start when troubleshooting an issue. When used with facet charts mentioned on other charts in this dashboard, the data will also adjust to the scope you have chosen, letting you quickly deep dive into issues.

Failures by Monitor Name

Facet Pie Chart (linked)

SELECT count(*) from SyntheticCheck where result ='FAILED' FACET monitorName since 24 hours ago

Shows how many failures have occurred across all monitors within the specified time period, sorted by the associated monitor name. This will let you quickly see at a glance which monitors are experiencing the most failures, indicating which monitors should be investigated to have the most positive impact in fixing.

Failures by Error Message

Facet Pie Chart (linked)

SELECT count(*) from SyntheticCheck where result ='FAILED' FACET error since 24 hours ago

Shows how many failures have occurred across all monitors within the specified time period, sorted by the associated error message. Similar to the other “Failures” charts, this gives a good indication into error message trends across all of your monitors, especially useful if a large spike occurs suggesting that it could be impacting multiple or all pages on your site that monitors are checking.

Failures by Monitor Type

Facet Pie Chart (linked)

SELECT count(*) from SyntheticCheck where result ='FAILED' FACET typeLabel since 24 hours ago

Shows how many failures have occurred across all monitors within the specified time period, sorted by the type of monitor that the failure occurred on. This chart is specifically good for checking the overall health of the monitors on your account and for finding trends around the performance of different monitor types. For example, a large percentage of failures in Scripted Browser monitors might indicate that monitor scripts need to be updated or are targeting something that has moved on your monitored pages.


Extra Credit - Share your dashboard with the community!

Want to be a super “NeRD” (New Relic Developer)?
Use the API Explorer (or our Postman collection) to load the dashboard definition below into Insights or share the definition of your dashboard and increase your international NeRD cred! (And you’ll earn a cool badge for your community profile!)
Here’s some quick tips on how to do this.

Dashboard Definition

{
  "dashboard": {
    "title": "Synthetics Investigative Dashboard",
    "description": null,
    "icon": "bar-chart",
    "visibility": "all",
    "editable": "editable_by_all",
    "metadata": {
      "version": 1
    },
    "widgets": [
      {
        "visualization": "markdown",
        "layout": {
          "width": 3,
          "height": 1,
          "row": 1,
          "column": 1
        },
        "data": [
          {
            "source": "# Motivation\n---\nSynthetics is the perfect tool for monitoring the accessibility of your pages and identifying problems occurring before your customers are impacted. Synthetics is not only useful for monitoring uptime, but can also reveal performance issues and trends on page resources that might not be immediately clear through SyntheticRequest events.\n\nIs a 3rd party tool slowing load time by getting stuck during DNS lookup? Do certain resources load slower in different parts of the world? This and more can be found by using this Synthetics focused dashboard!\n\nhttps://discuss.newrelic.com/t/synthetics-dashboard-investigate-slow-resources/61052"
          }
        ],
        "presentation": {
          "title": "",
          "notes": null
        }
      },
      {
        "visualization": "facet_table",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 1,
          "column": 1
        },
        
        "data": [
          {
            "nrql": "SELECT average(duration) FROM SyntheticRequest since 24 hours ago facet location"
          }
        ],
        "presentation": {
          "title": "Average Duration by Region",
          "notes": "Average load duration of resources observed by Synthetics monitors for a given location and for the given time period."
        }
      },
      {
        "visualization": "faceted_line_chart",
        "layout": {
          "width": 2,
          "height": 1,
          "row": 1,
          "column": 2
        },
        
        "data": [
          {
            "nrql": "SELECT average(duration) FROM SyntheticRequest since 24 hours ago facet location TIMESERIES"
          }
        ],
        "presentation": {
          "title": "Region Duration",
          "notes": "A visual representation of the Average Duration by Region chart."
        }
      },
      {
        "visualization": "facet_table",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 2,
          "column": 1
        },
        
        "data": [
          {
            "nrql": "SELECT average(duration) FROM SyntheticRequest since 24 hours ago facet monitorId"
          }
        ],
        "presentation": {
          "title": "Average Duration by Monitor ID",
          "notes": "Average load duration of resources for a given monitor within the given time period."
        }
      },
      {
        "visualization": "faceted_line_chart",
        "layout": {
          "width": 2,
          "height": 1,
          "row": 2,
          "column": 2
        },
        
        "data": [
          {
            "nrql": "SELECT average(duration) FROM SyntheticRequest facet monitorName, monitorId since 24 hours ago TIMESERIES"
          }
        ],
        "presentation": {
          "title": "Monitor Name/ID Duration",
          "notes": "A visual representation of the Average Duration by Monitor ID chart. "
        }
      },
      {
        "visualization": "facet_table",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 3,
          "column": 1
        },
        
        "data": [
          {
            "nrql": "SELECT average(duration) FROM SyntheticRequest since 24 hours ago facet serverIPAddress"
          }
        ],
        "presentation": {
          "title": "IP Address Duration",
          "notes": "This chart displays the average load duration of resources based on the corresponding server’s IP address that processed the request."
        }
      },
      {
        "visualization": "faceted_line_chart",
        "layout": {
          "width": 2,
          "height": 1,
          "row": 3,
          "column": 2
        },
        
        "data": [
          {
            "nrql": "SELECT average(duration) FROM SyntheticRequest since 24 hours ago facet serverIPAddress TIMESERIES"
          }
        ],
        "presentation": {
          "title": "IP Duration",
          "notes": "A visual representation of the IP Address Duration chart. "
        }
      },
      {
        "visualization": "facet_table",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 4,
          "column": 1
        },
        
        "data": [
          {
            "nrql": "SELECT average(duration) FROM SyntheticRequest since 24 hours ago facet domain"
          }
        ],
        "presentation": {
          "title": "Domain Duration",
          "notes": "This chart displays the average load duration of resources based on the domain portion of the request URL for that resource."
        }
      },
      {
        "visualization": "faceted_line_chart",
        "layout": {
          "width": 2,
          "height": 1,
          "row": 4,
          "column": 2
        },
        
        "data": [
          {
            "nrql": "SELECT average(duration) FROM SyntheticRequest since 24 hours ago facet domain  TIMESERIES"
          }
        ],
        "presentation": {
          "title": "Domain Duration",
          "notes": "A visual representation of the Domain Duration chart from above."
        }
      },
      {
        "visualization": "attribute_sheet",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 5,
          "column": 1
        },
        
        "data": [
          {
            "nrql": "SELECT average(duration) as 'Total Duration', average(durationDNS) as 'DNS Time', average(durationConnect) as 'Connect Time', average(durationSSL) as 'SSL Time', average(durationWait) as 'Wait Time', average(durationReceive) as 'Receive Time' FROM SyntheticRequest since 24 hours ago"
          }
        ],
        "presentation": {
          "title": "Request Time Breakdown(Durations)",
          "notes": "Shows the average duration of individual components of the load time process of resources. "
        }
      },
      {
        "visualization": "line_chart",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 5,
          "column": 2
        },
        
        "data": [
          {
            "nrql": "SELECT average(duration) as 'Total Duration', average(durationDNS) as 'DNS Time', average(durationConnect) as 'Connect Time', average(durationSSL) as 'SSL Time', average(durationWait) as 'Wait Time', average(durationReceive) as 'Receive Time' FROM SyntheticRequest  TIMESERIES since 24 hours ago"
          }
        ],
        "presentation": {
          "title": "Request Time Breakdown(Visual)",
          "notes": "A visual representation of the _Request Time Breakdown(Duration) chart."
        }
      },
      {
        "visualization": "attribute_sheet",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 5,
          "column": 3
        },
        
        "data": [
          {
            "nrql": "SELECT average(duration)/average(duration)*100 as '% - Total Duration', average(durationDNS)/average(duration)*100 as '% - DNS Time', average(durationConnect)/average(duration)*100 as '% - Connect Time', average(durationSSL)/average(duration)*100 as '% - SSL Time', average(durationWait)/average(duration)*100 as '% - Wait Time', average(durationReceive)/average(duration)*100 as '% - Receive Time' FROM SyntheticRequest since 24 hours ago"
          }
        ],
        "presentation": {
          "title": "Request Time Breakdown(Percentage)",
          "notes": "Shows the percentage of load time on a resource that individual components were responsible for."
        }
      },
      {
        "visualization": "facet_pie_chart",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 6,
          "column": 1
        },
        
        "data": [
          {
            "nrql": "SELECT count(*) from SyntheticCheck where result ='FAILED' FACET monitorName since 24 hours ago"
          }
        ],
        "presentation": {
          "title": "Failures by Monitor Name",
          "notes": "Shows how many failures have occurred across all monitors within the specified time period, sorted by the associated monitor name."
        }
      },
      {
        "visualization": "facet_pie_chart",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 6,
          "column": 2
        },
        
        "data": [
          {
            "nrql": "SELECT count(*) from SyntheticCheck where result ='FAILED' FACET error since 24 hours ago"
          }
        ],
        "presentation": {
          "title": "Failures by Error Message",
          "notes": "Shows how many failures have occurred across all monitors within the specified time period, sorted by the associated error message."
        }
      },
      {
        "visualization": "facet_pie_chart",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 6,
          "column": 3
        },
        
        "data": [
          {
            "nrql": "SELECT count(*) from SyntheticCheck where result ='FAILED' FACET typeLabel  since 24 hours ago"
          }
        ],
        "presentation": {
          "title": "Failures by Monitor Type",
          "notes": "Shows how many failures have occurred across all monitors within the specified time period, sorted by the type of monitor that the failure occurred on."
        }
      }
    ],
    "filter": {
      "event_types": [
        "SyntheticRequest",
        "SyntheticCheck"
      ],
      "attributes": []
    }
  }
}

December 2018 Coffee Chat: Insights & Dashboards & NRQL - OH MY!