Vladislav Kochelaevs - Fotolia

Manage Learn to apply best practices and optimize your operations.

Tools monitor AWS apps for availability, scalability

The last thing you want is for users to notice an outage first. Combine app performance monitoring with end-to-end testing to ensure AWS availability.

DevOps staff have a lot on their plates; it's not enough to simply be a developer or an operations support person, you have to own the software. That means there are fewer people doing the same -- if not more -- work.

Availability and scalability are two big benefits and concerns with public cloud. The number one priority customers expect from your cloud-hosted environment is availability. So, if your service goes down -- no matter the reason or time -- customers will complain. IT teams must balance process with productivity to:

  • Provide high availability without hampering the development process,
  • Consistently test production services so that issues are detected all the time, even during low usage periods;
  • Ensure no one is gaining unauthorized access to data and workloads.

This is not a new problem, and fortunately, there are several tools to help. Often, combining the functionality of an application performance monitoring (APM) tool with end-to-end tests enables you to keep the system available and detect cloud outages before users notice them.

New Relic Synthetics monitors the status of applications in production, including server load monitoring, application performance monitoring and detailed error tracking from users. Synthetics offers a Selenium-based API that allows developers to perform simple webpage testing; an advanced HTTP API lets IT teams check for irregularities in the API. The tool can also emulate an actual user and report back to developers on any issues it finds.

While the tool doesn't perform full browser-compliance testing, it offers a good baseline about whether functionality is working as it should -- with just a few simple lines of code. You can specify the amount of time between tests, as well as geographical regions for the tests. If you need to ensure your app can be reached globally, Synthetics can verify that.

Scalability with Web-based apps is key with cloud. There are a few ways to do this, but the simplest is to use a platform as a service such as AWS Elastic Beanstalk. You can also use Auto Scaling groups. It's essential that the system automatically launches new servers when existing servers are overloaded. You also need a good DevOps tool to monitor AWS system performance and see how high traffic affects it.

New Relic Application Performance Monitoring lets companies tune code to see how end users will be affected during heavy usage. IT teams can also set up alerts using PagerDuty to notify them if performance drops to a certain low. This enables staff to spin up additional servers to help balance the load.

Getting started with New Relic Synthetics

There are some basic things to do before using New Relic Synthetics. First and foremost, set up a basic ping monitor to make sure the Web service is responding to traffic. Ping monitors are free and do not count against any quota or tool use.

In addition, ping monitors can run simultaneous to other tests in the same system. That way, if a Scripted Browser test goes down but the ping is still running, you can assume the problem involves more than a dead server. You also can configure when and where tests occur. It's difficult to ensure that every action users may take is covered, but if you define key functionality, you can write end-to-end tests in New Relic Synthetics.

Keep in mind: Each location operates independently and tests are staggered. If you set up a 15-minute interval and ping from three locations, you'll get hit once every five minutes from one of those locations.

Next, add a Scripted Browser test, which enables you to test out customized functionality such as searching for an item in your system, clicking the link, and making sure the right item appears.

For example, use a script like a regular person would do manually:

  1. Search for "Ebola."
  2. Click on the first item on the results.
  3. Make sure the headline matches the headline of the article.
  4. Click the "Read More" link.
  5. Click the login button, fill out a username and password and then hit "Submit."
  6. Make sure your name shows up in the upper right corner.

Trying out the script

Following is a sample script for a New Relic Synthetics test.

1. Load the ACI Scholar Home Page and search for "Ebola."

  return $browser.waitForAndFindElement($driver.By.css('form.search

2. Click on the first item in the results.

  console.log('Click first result');
  return $browser.waitForAndFindElement($driver.By.css('div.search-result

3. Make sure the headline matches the headline of the selected article.

  return $browser.waitForAndFindElement(
          console.log('H1 Title: %s', h1Text);
     assert.ok(h1Text.toLowerCase().indexOf('ebola') > -1, "Title does
not validate");

4: Click "Read More."

     // Make sure the iFrame is readable
     console.log('Checking for iFrame text');
     return $browser.waitForAndFindElement($driver.By.css('div.modal-body
      console.log('Full Text: %s', txt);
     // Click the close button

5: Click "Login," fill out a username and password, and then click "Submit."

     console.log('Logging in with Email');
    // Click the Login button
       return element.click();
    // Wait for the Login Modal to be displayed
    return $browser.wait(function(){
      return $browser.findElement($driver.By.id('loginModal')).isDisplayed();
    }, 1000);
    // Enter the Email/Username
    return $browser.findElement($driver.By.css('form[name="login_form"]
    // Enter the Password
    return $browser.findElement($driver.By.css('form[name="login_form"]
    // Submit
    return $browser.findElement($driver.By.css('form[name="login_form"]
    // Wait for our user info to load
    return $browser.wait(function(){
        return element.getText().then(function(txt){
          console.log('Got username', txt);
             return txt ===
    // Make sure we got back to the right URL
    return $browser.getCurrentUrl().then(function(url){
      return assert.ok(MY_SITE_URL_PATTERN.test(url));

New Relic pricing

New Relic Synthetics is available for a free 14-day Pro trial; users will automatically move to the free Lite plan after the trial period ends. The fee-based Pro plan costs $59 per month, billed annually, or $79 for the month-to-month subscription. Both levels include 13 months of data retention, more than 10,000 advanced checks, and access to the forum and online support.

New Relic Application Performance Monitoring starts with a 14-day free Pro plan trial; customers will automatically move to the free Lite plan after the trial period ends. The fee-based Pro plan is $149 per month, per host and includes unlimited data retention, transaction traces, cross-application traces and gold support.

Alternative tools to monitor AWS apps

One of New Relic's advantages is its multitude of services; it also uses a single platform for multiple uses. But it's not the only tool for APM or scripted browser testing.

New Relic Synthetics is built on top of the open-source Selenium platform. Selenium is great for testing basic functionality and API endpoints, but it doesn't help with browser compatibility. Other services like Browserstack and Browsera offer more functionality, including browser compatibility testing. However, these tools can cost more and don't have the APM integration. For APM, AppDynamics and SolarWinds both have comparable products.

Next Steps

Learn more about AWS tools

Monitor AWS performance with these four tools

This was last published in February 2015

Dig Deeper on AWS tools for development

Join the conversation


Send me notifications when other members comment.

Please create a username to comment.

Which tools do you use to monitor AWS apps?
New Relic Synthetics captures the status of AWS applications in production by quantifying server load monitoring, application performance and detailed error tracking which allow developers to carry out a simple webpage testing using advanced HTTP API. The new Relic Synthetics should then be tested to ensure it works efficiently before an organization considers it pricing which may come with a trial period, for example, 14-days for Pro which is followed by a periodic purchase.
Many these tools provide assistance with what could be considered best practices, so it benefits you in more ways than just reducing customer complaints.