Tracking PHP Application Events with AppDynamics

Event Tracking

All too often PHP engineers find themselves repeating the same tasks to triage their application problems. Issues can range from poorly written code to database bottlenecks, slow remote service API calls, or machine issues including I/O bottlenecks — whether hardware or network related.

In certain cases, these issues are nearly impossible to discover due to the nonexistence of a mechanism for tracking and reporting particular events that may impact the performance of your application when those events are not directly related to the application code itself.

For example, imagine the frustration when a recent PHP upgrade causes a fatal error. What if routine configuration changes to your maintenance scripts also impacts your ability to read from your database?

Perhaps switching database table engines from MyISAM to to InnoDB is causing application slowdown. The numerous types of events outside of the normal development workflow can compromise the integrity of your application’s user experience while at the same time creating unwanted frustration.

Types of Events

Event tracking is an integral part of maintaining true and transparent insight into the various events that revolve around the performance of your application.  One of my favorite core APM features is Event Tracking: the ability to track a change in the state of your application that is of potential interest. Some examples of the various actions you can track are:

  • Upgrading your PHP framework

  • Application deployments AND rollbacks

  • Switching database table engines (e.g. MyISAM to InnoDB)

  • Changes/upgrades to hardware

  • Upgrades to your OS, MySQL, web server, etc.

  • PHP.ini changes

  • Installing/upgrading PHP extensions

I think you get the idea – you want to track anything that could potentially impact the performance of your application.

AppDynamics Event Tracking

The AppDynamics Event Tracking feature can be accessed by clicking the Events link in the main navigation menu.

Once clicked, you’re presented with a view of all events that have occurred in your application at that time. In this example, we’re presented with Health Rule Violations and an instance of a server being restarted. To narrow down what you’re looking for, you have the option of using an advanced search filter. Select ‘Show Filters’ and you will see a list of choices to the left of the event list.

Compare Releases

‘Compare Releases’ shows the real power of AppDynamics and is the reason why it remains one of my favorite core APM features. Under the Analyze menu item, click ‘Compare Releases’ and you’ll be shown a screen comparing your application between two different time periods. A unique column here is the ‘Events’ column displaying any events registered during the specified time range to give you further insight into what may have been previously overlooked. In this specific example, we’re comparing the application’s KPIs between two different weeks. You can see that our error rate decreased the week later with no health rule violations registered as events. The screenshot shows a definitive performance improvement between the two time periods.

We encourage you to explore the Events feature further. You will see how you can combine both the power of Change Releases and our Alert & Respond feature to execute custom scripts based upon triggered events..  an added bonus, the Events feature is also accessible by a RESTful API that allows you to register a change event from anywhere at anytime.

Take five minutes to get complete visibility into the performance of your production applications with AppDynamics Pro today.


Spot the Difference in AppDynamics 3.4

Okay, admit it. The title Spot the Difference in AppDynamics 3.4 caught your attention, especially after we just recently announced our free End User Monitoring features, and now you’re here to find out what other insanely cool stuff we’ve been working on to enhance the experience for APM aficionados, customers and people like you! I’m proud to say that AppDynamics continues to innovate by leaps and bounds which enables our customers to be more successful in how they manage application performance and availability.

Here’s an example of us staying ahead of the curve. I was scouring Twitter feeds several weeks back and found this tweet from a Java applications guy,

Hmmmm, a proverbial question indeed.

So what exactly changes with an application release?

Flashback to 2008…I ran into a painfully similar situation back at LG. We had a team of consultants working on Java performance optimizations for eight months, executing test cases, refactoring application code, disabling trigger objects and even redesigning some of the use case workflows. Well, it turns out the build and deployment team pushed the entire application onto a completely different set of infrastructure, and when the new test results came back we almost choked when we saw 20-30% regressions in application performance. That night the performance team drank itself into oblivion, and you can imagine what happened next.

For the next two weeks everyone on the project was now heads down trying to identify what changes caused such a massive slowdown to the system. Remember, we didn’t have an APM solution like AppDynamics, and had to resort to using four different performance monitoring tools, since we didn’t have a single solution that provided us with complete end-to-end visibility. Those were tumultuous times when Ops, Dev and IT teams engaged in heated arguments about who was at fault.

All of this could have been easily avoided if we had something like AppDynamics 3.4 Agile Release Analysis to compare application releases visually. Having this type of comparative analysis capability comes in handy when you’re trying to understand why a user login transaction, for instance, is slower with your latest agile release than what it was a week ago. You could always conduct code diffs on your releases, but sometimes it’s incredibly valuable to be able to visualize performance infrastructure changes at a glance rather than having to spend hours or even days manually verifying what differences actually occurred.

Agile Release Analysis

AppDynamics release analysis rolls up application performance metrics so you can compare KPIs of not only the application, but also individual business transactions, as well as their flow and execution. The application might’ve have gotten slower, but being able to identify which piece of the overall application or specific transaction is affecting performance is much more useful to operations and IT.

Speaking of comparing Application Flow Maps, in order for this feature to be truly tenable, we needed to improve the visibility challenges customers were facing with our original flow map. We had the right idea, but it was too rigid. Monitoring several thousand tiers became blinding for some customers, leaving App Ops with a cluttered forest, and no trees. So to stay true to our company mission with offering customers with maximum visibility with minimal effort, we improved the viewing experience so you can now navigate your entire application just like you’d navigate the entire world with Google Maps. The next time you’re notified there’s an issue with a transaction that’s traversing through a particular node in a cluster, you can feel confident it’ll be easy to spot and zoom in on. The application flow maps now change color in real-time depending on the SLA and performance of application tiers and the flows that connect them. For example, here is a screenshot of the new flow map with baseline comparison enabled:

Zoom in and out of your App Flow Map


Introducing Role-Based Perspectives

Let’s assume the role of a database administrator for a moment. Sure, they might look at Java or .NET code once in a blue moon, but their technical domain is managing the backend of the application. So in 3.4 we decided to streamline the troubleshooting process from a role-based perspective to help our respective backend admins “get to the point” and view information pertinent to their role.

“Show me the top SQL calls for my database.” Done.

“Okay, now which business transactions do my SQL queries impact?” You can think of it as a “Where Used” look up that allows the DBA to analyze what they’re interested in from a role-based perspective and see how queries are contributing to business transaction performance. The Backend Specialists – DBA, Message Broker, ESB and Security Administers – can now say with conviction, “I optimized my backend service that was impacting the user experience of several mission critical business transactions.” That’s what I call getting bang for the buck performance optimizations!

Reporting on Application AND Business Activity.

AppDynamics 3.4 also includes a new PDF reporting engine so you can generate, save and share reports detailing application health metrics. We’ve introduced several prepackaged reports as well as the ability to create your own custom report. All of the aforementioned cool 3.4 features offer some amazing technical benefits that speak to those in DevOps, but at the end of the day, someone is going to ask how this is impacting your business’s bottom line. So in 3.4, we now allow you to build a dashboard that monitors business activity for your most revenue-critical apps. Albeit, our technology is pretty slick as it is to auto-discover and baseline your application’s performance without the need for manual instrumentation. However, there may be users or scenarios where you may want to monitor the activity and revenue of your application, rather than say its performance or throughput. No problem – you can exploit “Information Points” in AppDynamics to track any business metric or value which is part of a business transaction. Our intuitive dashboard builder lets you expose any metric with drag and drop widgets meaning you can create powerful business views in minutes.

There are a number of other powerful features and product enhancements in AppDynamics 3.4 you can start exploring today by registering here for a 30-day free trial. If you’re already an AppDynamics customer, we look forward to hearing more feedback on how we can improve the experience even further and want to say thanks again! We hope you’re as delighted as we are about our latest release.