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

Relic Dashboard: Availability and Uptime - SLA Overview

apm
insights
synthetics

#1

Availability and Uptime - SLA Overview

Motivation

This Service Level Agreement dashboard isn’t just an application’s uptime, it’s a holistic view of application health and accessibility. By combining Synthetic monitor uptime checks with APM and Infrastructure performance trends, we can get a full overview of performance over time and better understand how performance issues, uptime, and availability relate to each other.


Screenshot

Dashboard Details

Required Products: Synthetics, APM, Infrastructure
Level of Effort: Medium
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: SyntheticCheck, SystemSample
  • Enabled Attributes: monitorName, locationLabel

Chart Details

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

1 Day Uptime

Facet Table

SELECT percentage(count(*), WHERE result='SUCCESS') FROM SyntheticCheck WHERE monitorName LIKE '%Check%' SINCE 1 day ago FACET monitorName

The percentage of successful synthetics checks made in the last day for a specific monitor.

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.

1 Week Uptime

Facet Table

SELECT percentage(count(*), WHERE result='SUCCESS') FROM SyntheticCheck WHERE monitorName LIKE '%Check%' SINCE 1 week ago FACET monitorName

The percentage of successful synthetics checks made in the last week for a specific monitor.

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.

1 Month Uptime

Facet Table

SELECT percentage(count(*), WHERE result='SUCCESS') FROM SyntheticCheck WHERE monitorName LIKE '%Check%' SINCE 1 month ago FACET monitorName

The percentage of successful synthetics checks made in the last month for a specific monitor.

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.

Synthetics Full Details

Facet Table

SELECT count(*),average(duration), percentage(count(*), WHERE result='SUCCESS') as 'Uptime' FROM SyntheticCheck FACET monitorName SINCE 1 month ago

The number of, average duration (ms), and percentage of successful Synthetics checks made in the last month faceted by monitor name.

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.

Uptime

Faceted Line Chart

SELECT percentage(count(*), WHERE result='SUCCESS') FROM SyntheticCheck facet monitorName SINCE 1 month ago TIMESERIES

Timeseries chart of the percentage of successful Synthetics checks faceted by monitor name.

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.

Location Uptime

Facet Table

SELECT count(*), percentage(count(*), WHERE result ='SUCCESS') as 'Uptime' FROM SyntheticCheck SINCE today FACET locationLabel LIMIT 100

The count and percent of successful Synthetics checks faceted by monitor location.

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.

Apdex

Faceted Line Chart

SELECT apdex(duration, t: 500) FROM SyntheticCheck SINCE last week FACET monitorName TIMESERIES AUTO

Timeseries chart of Apdex scores faceted by monitor name.

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.

Average Duration

Faceted Line Chart

SELECT average(duration) FROM SyntheticCheck FACET monitorName SINCE 1 month ago TIMESERIES

Average duration of each monitor’s Synthetic checks over the last month.

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.

__

APM Health

Gauge

SELECT percentage(count(*), WHERE error is false) from Transaction since 1 day ago

Percent of transactions without errors over the last day.

Apdex

Gauge

SELECT apdex(duration, t: 0.4) from Transaction since 1 day ago

Apdex score over last day.

Apdex over Time

Faceted Line Chart

SELECT apdex(duration, t: 0.4) from Transaction since 1 week ago TIMESERIES facet name

Apdex score faceted by application name over the last week

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.

Server CPU

Gauge

SELECT average(cpuPercent) FROM SystemSample since 3 hours ago

Average CPU Utilization Percentage over the last 3 hours.

Disk Utilization

Gauge

SELECT max(diskUsedPercent) as 'Percent Full' FROM StorageSample since 1 minute ago

Maximum disk usage percentage over the last minute.

Memory Utilization

Chart Type

SELECT average(memoryUsedBytes) / average(memoryFreeBytes) * 100 as 'Memory Utilization' FROM SystemSample since 10 minutes ago

Average percentage of memory in use over the last 10 minutes.

Server CPU List

Facet Bar Chart

SELECT average(cpuPercent) FROM SystemSample since 3 hours ago facet hostname limit 400

Average CPU utilization over the last 3 hours faceted by host name.

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.

Disk I/O

Line Chart

SELECT average(readBytesPerSecond), average(writeBytesPerSecond) FROM StorageSample SINCE 30 MINUTES AGO TIMESERIES AUTO

Average disk read and write (bytes per second) over the last 30 minutes.

Average Memory Usage

Attribute Sheet

SELECT latest(memoryUsedBytes) /1000000 AS 'Avg MB Used', latest(memoryFreeBytes)/1000000 AS 'Avg MB Free' FROM SystemSample since 10 minutes ago

Average memory used and free (MB) over the last 10 minutes.


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": "Availability and Uptime - SLA Overview",
    "description": null,
    "icon": "bar-chart",
    "visibility": "all",
    "editable": "editable_by_all",
    "metadata": {
      "version": 1
    },
    "widgets": [
      {
        "visualization": "markdown",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 1,
          "column": 2
        },
        "data": [
          {
            "source": "Visit [this forum post](https://discuss.newrelic.com/t/availability-and-uptime-sla-overview/61561) for more info!"
          }
        ],
        "presentation": {
          "title": "",
          "notes": null
        }
      },
      {
        "visualization": "markdown",
        "layout": {
          "width": 3,
          "height": 1,
          "row": 2,
          "column": 1
        },
        "data": [
          {
            "source": "# Synthetics"
          }
        ],
        "presentation": {
          "title": "",
          "notes": null
        }
      },
      {
        "visualization": "facet_table",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 3,
          "column": 1
        },
        "data": [
          {
            "nrql": "SELECT percentage(count(*), WHERE result='SUCCESS') FROM SyntheticCheck WHERE monitorName LIKE '%Check%' SINCE 1 day ago FACET monitorName"
          }
        ],
        "presentation": {
          "title": "1 Day Uptime",
          "notes": "The percentage of successful synthetics checks made in the last day for a specific monitor.",
          "drilldown_dashboard_id": null
        }
      },
      {
        "visualization": "facet_table",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 3,
          "column": 2
        },
        "data": [
          {
            "nrql": "SELECT percentage(count(*), WHERE result='SUCCESS') FROM SyntheticCheck WHERE monitorName LIKE '%Check%' SINCE 1 week ago FACET monitorName"
          }
        ],
        "presentation": {
          "title": "1 Week Uptime",
          "notes": "The percentage of successful synthetics checks made in the last week for a specific monitor.",
          "drilldown_dashboard_id": null
        }
      },
      {
        "visualization": "facet_table",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 3,
          "column": 3
        },
        "data": [
          {
            "nrql": "SELECT percentage(count(*), WHERE result='SUCCESS') FROM SyntheticCheck WHERE monitorName LIKE '%Check%' SINCE 1 month ago FACET monitorName"
          }
        ],
        "presentation": {
          "title": "1 Month Uptime",
          "notes": "The percentage of successful synthetics checks made in the last month for a specific monitor.",
          "drilldown_dashboard_id": null
        }
      },
      {
        "visualization": "facet_table",
        "layout": {
          "width": 2,
          "height": 1,
          "row": 4,
          "column": 1
        },
        "data": [
          {
            "nrql": "SELECT count(*),average(duration), percentage(count(*), WHERE result='SUCCESS') as 'Uptime' FROM SyntheticCheck FACET monitorName SINCE 1 month ago"
          }
        ],
        "presentation": {
          "title": "Synthetics Full Details",
          "notes": "The number of, average duration (ms), and percentage of successful Synthetics checks made in the last month faceted by monitor name.",
          "drilldown_dashboard_id": null
        }
      },
      {
        "visualization": "faceted_line_chart",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 4,
          "column": 3
        },
        "data": [
          {
            "nrql": "SELECT percentage(count(*), WHERE result='SUCCESS') FROM SyntheticCheck facet monitorName  SINCE 1 month ago TIMESERIES"
          }
        ],
        "presentation": {
          "title": "Uptime",
          "notes": "Timeseries chart of the percentage of successful Synthetics checks faceted by monitor name."
        }
      },
      {
        "visualization": "facet_table",
        "layout": {
          "width": 2,
          "height": 1,
          "row": 5,
          "column": 1
        },
        "data": [
          {
            "nrql": "SELECT count(*), percentage(count(*), WHERE result ='SUCCESS')  as 'Uptime' FROM SyntheticCheck SINCE today FACET locationLabel LIMIT 100"
          }
        ],
        "presentation": {
          "title": "Location Uptime",
          "notes": "The count and percent of successful Synthetics checks faceted by monitor location.",
          "drilldown_dashboard_id": null
        }
      },
      {
        "visualization": "faceted_line_chart",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 5,
          "column": 3
        },
        "data": [
          {
            "nrql": "SELECT apdex(duration, t: 500) FROM SyntheticCheck SINCE last week FACET monitorName TIMESERIES AUTO"
          }
        ],
        "presentation": {
          "title": "Apdex",
          "notes": "Timeseries chart of Apdex scores faceted by monitor name."
        }
      },
      {
        "visualization": "faceted_line_chart",
        "layout": {
          "width": 3,
          "height": 1,
          "row": 6,
          "column": 1
        },
        "data": [
          {
            "nrql": "SELECT average(duration) FROM SyntheticCheck FACET monitorName SINCE 1 month ago TIMESERIES"
          }
        ],
        "presentation": {
          "title": "Average Duration",
          "notes": "Average duration of each monitor’s Synthetic checks over the last month."
        }
      },
      {
        "visualization": "markdown",
        "layout": {
          "width": 3,
          "height": 1,
          "row": 7,
          "column": 1
        },
        "data": [
          {
            "source": "# APM"
          }
        ],
        "presentation": {
          "title": "",
          "notes": null
        }
      },
      {
        "visualization": "gauge",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 8,
          "column": 1
        },
        "data": [
          {
            "nrql": "SELECT percentage(count(*), WHERE error is false) from Transaction since 1 day ago"
          }
        ],
        "presentation": {
          "title": "APM Health",
          "notes": "Percent of transactions without errors over the last day.",
          "threshold": {
            "red": 100
          }
        }
      },
      {
        "visualization": "gauge",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 8,
          "column": 2
        },
        "data": [
          {
            "nrql": "SELECT apdex(duration, t: 0.4) from Transaction since 1 day ago"
          }
        ],
        "presentation": {
          "title": "Apdex",
          "notes": "Duration, T: 0.4\n\nApdex score over last day.",
          "threshold": {
            "red": 1
          }
        }
      },
      {
        "visualization": "faceted_line_chart",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 8,
          "column": 3
        },
        "data": [
          {
            "nrql": "SELECT apdex(duration, t: 0.4) from Transaction since 1 week ago TIMESERIES facet name"
          }
        ],
        "presentation": {
          "title": "Apdex over Time",
          "notes": "Apdex score faceted by application name over the last week"
        }
      },
      {
        "visualization": "markdown",
        "layout": {
          "width": 3,
          "height": 1,
          "row": 9,
          "column": 1
        },
        "data": [
          {
            "source": "# Infrastructure\n"
          }
        ],
        "presentation": {
          "title": "",
          "notes": null
        }
      },
      {
        "visualization": "gauge",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 10,
          "column": 1
        },
        "data": [
          {
            "nrql": "SELECT average(cpuPercent) FROM SystemSample since 3 hours ago"
          }
        ],
        "presentation": {
          "title": "Server CPU",
          "notes": "Average CPU Utilization Percentage over the last 3 hours.",
          "threshold": {
            "red": 100
          }
        }
      },
      {
        "visualization": "gauge",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 10,
          "column": 2
        },
        "data": [
          {
            "nrql": "SELECT max(diskUsedPercent) as 'Percent Full' FROM StorageSample since 1 minute ago"
          }
        ],
        "presentation": {
          "title": "Disk Utilization",
          "notes": "Maximum disk usage percentage over the last minute.",
          "threshold": {
            "red": 100
          }
        }
      },
      {
        "visualization": "gauge",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 10,
          "column": 3
        },
        "data": [
          {
            "nrql": "SELECT average(memoryUsedBytes) / average(memoryFreeBytes) * 100 as 'Memory Utilization' FROM SystemSample since 10 minutes ago"
          }
        ],
        "presentation": {
          "title": "Memory Utilization",
          "notes": "Average percentage of memory in use over the last 10 minutes.",
          "threshold": {
            "red": 100
          }
        }
      },
      {
        "visualization": "facet_bar_chart",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 11,
          "column": 1
        },
        "data": [
          {
            "nrql": "SELECT average(cpuPercent) FROM SystemSample since 3 hours ago facet hostname limit 400"
          }
        ],
        "presentation": {
          "title": "Server CPU List",
          "notes": "Average CPU utilization over the last 3 hours faceted by host name.",
          "drilldown_dashboard_id": null
        }
      },
      {
        "visualization": "line_chart",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 11,
          "column": 2
        },
        "data": [
          {
            "nrql": "SELECT average(readBytesPerSecond), average(writeBytesPerSecond) FROM StorageSample SINCE 30 MINUTES AGO TIMESERIES AUTO"
          }
        ],
        "presentation": {
          "title": "Disk I/O",
          "notes": "Average disk read and write (bytes per second) over the last 30 minutes."
        }
      },
      {
        "visualization": "attribute_sheet",
        "layout": {
          "width": 1,
          "height": 1,
          "row": 11,
          "column": 3
        },
        "data": [
          {
            "nrql": "SELECT latest(memoryUsedBytes) /1000000 AS 'Avg MB Used', latest(memoryFreeBytes)/1000000 AS 'Avg MB Free' FROM SystemSample since 10 minutes ago"
          }
        ],
        "presentation": {
          "title": "Average Memory Usage",
          "notes": "Average memory used and free (MB) over the last 10 minutes."
        }
      }
    ],
    "filter": {
      "event_types": [
        "SyntheticCheck",
        "SystemSample"
      ],
      "attributes": [
        "monitorName",
        "locationLabel"
      ]
    }
  }
}