How to Monitor Code You Didn’t Write

Almost no one writes all their own code. Whether you are an engineer in IT operations or a developer, you are most likely working with code written by someone outside your organization. As a result, one question we hear repeatedly is how do you monitor third-party code?

The answer is that it depends whether you have access to the runtime, the runtime and the source code, or neither. The good news is that in every case monitoring the code you didn’t write is easier than you might think.

Standalone Software

Commercial off-the-shelf software (COTS) provides a complete, self-contained solution running in the equivalent of its own box in your environment. While you generally have access to the runtime, it can be difficult to instrument because you don’t know what business transactions are most meaningful. With AppDynamics, the challenge of figuring out what to monitor is made easier with pre-built support for many popular COTS solutions such as SAP, Atlassian Confluence, or IBM Integration Bus.

For products where we do not provide out-of-the-box visibility, you can write an extension that will provide insight into what is going on inside the software. For example, by ingesting metrics such as the number of requests per minute or the associated disk usage provided by the COTS software, you can correlate unexpected changes to baseline behavior to the corresponding business transactions.



Remote Services

In contrast to COTS software, third-party remote services can only be accessed via the network and offer no access to runtime whatsoever. By monitoring the endpoints—calls to and responses from a service—AppDynamics will give you a clear indication whether or not a particular service is responsible for slowness in an application. And we also have additional capabilities that help you monitor the health of these endpoints through Service Availability Monitoring or Synthetic Monitoring. If your third-party service offers visibility metrics, we can integrate those into your AppDynamics dashboard. We can also set up alerts that trigger when the average response time rises above a certain level, so you can easily ensure compliance with SLAs.



Third-party libraries are another common scenario. What is the best way to troubleshoot issues with a threading library, a logging library, or a client library for a cache? If a library is integrated with your code, your business transactions will flow through it. If there are any performance issues with your application, the third-party code will, in most cases, show up in a snapshot and you will be able to see if it is to blame. In some more advanced cases, however, additional instrumentation may be necessary. Please see documentation on how to Configure Instrumentation for more information.



Third-party software may seem like a black box, but extracting performance insights from someone else’s code can be surprisingly simple. AppDynamics offers pre-built support for standalone software and provides visibility into the behavior of third-party services by observing the health of their endpoints. Many third-party libraries are automatically incorporated into AppDynamics’ snapshots. Our belief is that it shouldn’t matter who wrote the code, business and application performance should be transparent all across your networked environment.



How Does Synthetic Fit Into Your Monitoring Strategy?

If you have a real-user monitoring program in place — our AppDynamics Browser Real-User Monitoring or Mobile Real-User Monitoring solutions, for example — do you really need synthetic monitoring? After all, real-user tells you just what kind of experience your users are having, and that’s what you really want to know, right? Yes, but as with most things, it’s not quite that simple.

You definitely want all the benefits real-user monitoring brings you, like understanding UX around the globe, gaining valuable insights into your users and their habits, and of course, having real-time, end-to-end visibility to quickly identify and resolve trouble spots. (If you’re not already familiar with our real-user monitoring solutions, you’ll find more information here.)

But there are also distinct benefits that our new Browser Synthetic Monitoring solution brings that make it an essential component of a comprehensive monitoring program. First, it reports on availability and performance even when your site has no active visitors — so if there are issues, they can be fixed before they impact users. Second, unlike RUM, it notifies you when your site or application is unavailable; RUM reports nothing when your site/app is unavailable (since there’s no real-user interaction to report), or when a custom fail message is displayed. Third, synthetic lets you confirm functionality of critical transactions to ensure that users are able to be successful and business objectives will be met.

Introducing Browser Synthetic Monitoring

AppDynamics’ new Browser Synthetic Monitoring is now available in beta, joining Browser Real-User Monitoring and Mobile Real-User Monitoring to form our comprehensive End-User Monitoring solution. It is a distributed, cloud-based, intelligent monitoring solution for programmatically determining website availability, functionality, and performance.
Built with the highly regarded, open source WebPageTest technology, Browser Synthetic Monitoring enables enterprises to proactively monitor and optimize websites and web applications from more than two dozen locations around the globe, using real web browsers driven by the W3C standard WebDriver. Some of the significant advantages it offers include:

  • Flexible Scheduling. Because it is based in the cloud, capacity is fluid and not subject to infrastructure restrictions, so scheduling is completely flexible — a synthetic monitoring job can be built with the dates, times, and scale that align with budget and strategy.
  • Real, Not Simulated, Browsers. You’ll be measuring performance with Chrome, Firefox, and/or Internet Explorer — the real things, not simulations — so you’ll see how your site/app performs the same way your users do.
  • Automatic Baselining. Like all of AppDynamics’ monitoring solutions, Browser Synthetic Monitoring automatically and dynamically establishes baseline performance thresholds — especially useful for SLA management.
  • Automatic Retesting. If the site fails, Browser Synthetic Monitoring can automatically re-test to confirm the issue and reduce false positive notifications.
  • Worldwide Measurement Locations. Our beta currently offers more than two dozen points of presence around the globe, so you can test from your most important geographies, and compare performance for different regions. Our plan is to roll out more locations in the coming months.
  • Enterprise-Class Data System. Results are stored and easily accessed for troubleshooting, historical comparisons, release and version performance validation, service level agreement accounting, and other analyses.

Built For Development And Production

There are compelling use cases for Browser Synthetic Monitoring throughout the application lifecycle. Web developers and designers are generally already aware of and may be using WebPageTest for individual measurements; Browser Synthetic Monitoring takes that assessment approach to an entirely new and more robust enterprise-class level, with scheduling, automation, geographic diversity, and data storage and management. It adds a level of confidence that new releases will perform as expected in production.

And to reiterate the benefits in production, Browser Synthetic Monitoring confirms availability across a spectrum of time and geography, helps detect issues before they impact users, and can confirm performance of critical transactions, all using real browsers.

Another crucial use case for synthetic is for setting, monitoring, and enforcing service-level agreements both internally or with third parties. The automatic, dynamically set baselines are hugely useful in agreeing on SLA performance thresholds. And the data storage and management function facilitates reporting on SLA compliance and dealing with variances.

Part of a Complete End-User Monitoring Solution

Synthetic plays an indispensable role in ensuring that websites and web apps are available and deliver the best possible experience and results. AppDynamics Browser Synthetic Monitoring is designed to deliver all the benefits of synthetic and to integrate seamlessly with real-user monitoring and the rest of the AppDynamics Application Intelligence Platform. Give the beta a spin today.

Synthetic vs Real-User Monitoring: A Response to Gartner

AvailabilityRecently Jonah Kowall of Gartner released a research note titled “Use Synthetic Monitoring to Measure Availability and Real-User Monitoring for Performance”. After reading this paper I had some thoughts that I wanted to share based upon my experience as a Monitoring Architect (and certifiable performance geek) working within large enterprise organizations. I highly recommend reading the research note as the information and findings contained within are spot on and highlight important differences between Synthetic and Real-User Monitoring as applied to availability and performance.

My Apps Are Not All 24×7

During my time working at a top 10 Investment Bank I came across many different applications with varying service level requirements. I say they were requirements because there were rarely ever any agreements or contracts in place, usually just an organizational understanding of how important each application was to the business and the expected service level. Many of the applications in the Investment Bank portfolio were only used during trading hours of the exchanges that they interfaced with. These applications also had to be available right as the exchanges opened and performing well for the entire duration of trading activity. Having no real user activity meant that the only way to gain any insight into availability and performance of these applications was by using synthetically generated transactions.

Was this an ideal situation? No, but it was all we had to work with in the absence of real user activity. If the synthetic transactions were slow or throwing errors at least we could attempt to repair the platform before the opening bell. Once the trading day got started we measured real user activity to see the true picture of performance and made adjustments based upon that information.


Can’t Script It All

Having to rely upon synthetic transactions as a measure of availability and performance is definitely suboptimal. The problem gets amplified in environments where you shouldn’t be testing certain application functionality due to regulatory and other restrictions. Do you really want to be trading securities, derivatives, currencies, etc… with your synthetic transaction monitoring tool? Me thinks not!

So now there is a gaping hole in your monitoring strategy if you are relying upon synthetic transactions alone. You can’t test all of your business critical functionality even if you wanted to spend the long hours scripting and testing your synthetics. The scripting/testing time investment gets amplified when there are changes to your application code. If those code updates change the application response you will need to re-script for the new response. It’s an evil cycle that doesn’t happen when you use the right kind of real user monitoring.

Real User Monitoring: Accurate and Meaningful

When you monitor real user transactions you will get more accurate and relevant information. Here is a list (what would a good blog post be without a list?) of some of the benefits:

  • Understand exactly how your application is being used.
  • See the performance of each application function as the end user does, not just within your data center.
  • No scripting required (scripting can take a significant amount of time and resources)
  • Ensure full visibility of application usage and performance, not just what was scripted.
  • Understand the real geographic distribution of your users and the impact of that distribution on end user experience.
  • Ability to track performance of your most important users (particularly useful in trading environments)


Synthetic transaction monitoring and real user monitoring can definitely co-exist within the same application environment. Every business is different and has their own unique requirements that can impact the type of monitoring you choose to implement. If you’ve not yet read the Gartner research note I suggest you go check it out now. It provides a solid analysis on synthetic and real user monitoring tools, companies, and usage scenarios which are completely different from what I have covered here.

Have synthetic or real transaction monitoring saved the day for your company? I’d love to hear about it in the comments below.

AppDynamics and Apica: A Partnership Made for Performance

AppDynamics and Apica: A Partnership Made for PerformanceAt AppDynamics we’re always looking to partner with vendors that can significantly enhance the visibility we provide our customers when it comes to managing application performance in production. One area we see synergies is in synthetic monitoring and load testing, specifically for the next generation of cloud and mobile applications. So when Apica, the performance and load testing company for cloud, web and mobile applications came to us to join forces, we were stoked.

On June 26th, Apica and AppDynamics announced a partnership to provide DevOps an integrated monitoring solution to gain 10x visibility into application availability and performance, with the power to identify the root cause of slow downs and outages in as few as 3-clicks.

We’ve seen how development agility can be directly proportional to production fragility. Reproducing complex, distributed production architectures in test is tough, because data volumes, computing resource and user behavior always differ. This is why many organizations are starting to test application performance in production, so they can stress test out-of-hours and pro-actively identify severity-1 incidents before end users and the business is impacted.

Monitoring visibility across geo-locations, browsers and mobile devices

Giving DevOps the visibility they need to see how their applications perform, in production, under load, across geo-locations, different browsers and mobile devices helps DevOps be pro-active in managing application performance. This is where Apica’s synthetic monitoring and load testing products helps organizations understand how an application is performing from an end user, location, browser or device perspective.

“Users expect a fast and reliable web, cloud, and mobile experience. Every second delay can cost businesses valuable customers and revenue,” says Sven Hammar, CEO of Apica. “Together with AppDynamics, we’re providing users with best-of-breed solutions to ensure uptime and availability for revenue-critical applications. They’ll have the most complete understanding available of the metrics that are powering or causing problems for their applications so they can take measures to improve performance.”

AppDynamics integrates with the following three Apica products:

Apica WebPerformance – Verifies the performance and availability of your mission-critical applications from over 80 different locations world-wide.

Apica ProxySniffer – Automates creation of load test scripts and scenarios by recording real end-user traffic

Apica LoadTest – A cloud-based load testing tool for your mission-critical applications

You can access the Apica portal via any web browser or mobile device. Thru this new partnership AppDynamics real-time monitoring data is now seamlessly available in Apica portal, so DevOps can now drill-down a level further to understand the root cause of slowdowns and availability issues.

Apica Web Performance

Apica WebPerformance

Like AppDynamics, Apica has similar synergies to application performance management (APM):

Complete Lifecycle Visibility – We have customers that deploy our solutions in both production and pre-production environments. For Apica, scripts used for load testing thru LoadTest can also be applied to WebPerformance as well to test application availability and performance in production.

Real-time monitoring – understanding the true end user experience 24/7; specifically around business transactions and the application infrastructure, so pro-active alert notifications can be sent to DevOps when service degradation is identified.

Built for the Cloud – Apica LoadTest is cloud-ready so organizations can automate load tests and find the optimal configuration for their cloud deployments.

Below is a short clip of the direct integration of AppDynamics with Apica allowing DevOps to monitor all of the business transactions and system resources in real-time. There is also contextual business transaction drill-down that takes a user from the Apica portal into the AppDynamics user interface so the root cause of performance issues can rapidly found.

You can start your free trial with Apica’s performance and load testing solution by clicking here. For more details on monitoring your applications with Apica and AppDynamics, please visit Apica’s AppDynamics partner page.