In my last blog on preparing for Black Friday, I teased how easy it is to gain insight into the state of your eCommerce retail applications and all its components with an enterprise observability platform. As promised, I’ve set up OpenCart with Instana’s AutoTrace instrumentation on a small demo environment, which we will walk through from infrastructure to end user monitoring. As you read this, keep in mind that I’ve made no changes to OpenCart itself, but Instana’s AutoTrace was able to provide me:
- Full request and response tracing between the end user, the application, and any of its external services. This includes things like logs of every database query made to its database, the health of the infrastructure and a mapping of all the services.
- Monitoring of the end user device, including asset timings and JavaScript errors.
- Business relevant SLAs and dashboards generated from application health and metrics.
To start, I spun up a fresh virtual machine, installed the Instana Agent, then installed Apache2 HTTPD, MariaDB and OpenCart. Automatically, Instana was able to detect and configure monitoring for all the necessary components. By the time I was finished with OpenCart’s installer, I had a handy set of dashboards and reports ready for me in the Instana UI.
The first dashboard was for the host itself. This provided me a “table stakes” view of how the virtual machine was running, and any critical services which were present like Apache and MariaDB.
I drilled into the Apache dashboard, which provided a service health overview with some key statistics.
I saw that we are running a PHP application inside Apache via mod_php, and we generated a service overview automatically. This overview picked up all the activity that was generated when I ran through the installation process for OpenCart.
If these high-level statistics weren’t enough and I wanted to focus on a set of problematic requests, I could use this page as a springboard into Instana’s analytics platform.
This page lets me filter, group and analyze traces that were sent to Instana along almost any dimension I need. For example, here’s a detailed look at what happened when I loaded the admin page.
More importantly, since Instana correlates everything from the infrastructure to end user activity, I can see the process and host that generated this response.
While the preceding views are great for looking at a single service or single host, many modern eCommerce sites have scaled past the point of running as a single service on a single host. Instead, they consist of fleets of servers, containers, applications, and various third-party services working in conjunction to deliver the expected experience to customers, partners, and internal stakeholders. These experiences differ based off each stakeholder’s function and how they expect the software to help them achieve their goals.
To sort, manage and monitor these expectations, Instana offers Application Perspectives. Application Perspectives allow you to use Instana’s query builder and aggregate data to construct different views of how your services interact and communicate. For example, I’ve seen and helped configure perspectives to:
- Track the health of different datacenter spread out geographically.
- Track the health of different business systems as they all interact with a single master database.
- Track key customers and their critical third-party integrations in multi-tenant applications.
- Provide dashboards for each development team to get a quick overview of how the services and technology they are responsible for is functioning.
These perspectives scale up as you add data to Instana and grow the scope and scale of your monitored services. As a small example, we can look at one generated based on the data from our OpenCart installation.
This looks like the service dashboard, but there is a key difference. We’ve turned our attention from the individual endpoints to a whole collection of services. This enables us to do things like create this dependencies graph.
Even on a very simple setup, we still can find some interesting dependencies and answer some probing questions. For instance, where are we talking with www.opencart.com? Because Instana links everything together, I’m able to quickly jump from the node in the graph straight into one of the traces that made the request.
At some point, every website needs to be rendered in a web browser. End user monitoring offers us a way to ensure that our websites are being rendered as expected, free from errors or issues like slow resource timings. Instana’s end user monitoring come with the added benefit of linking actions taken during a user session to backend responses.
To show this off, I used the built-in template editor in OpenCart to add the necessary JavaScript snippet to every page.
Back in Instana, we’ve generated another dashboard showing all the high-level metrics of interest. We are able to capture JavaScript errors, the number of pages viewed, load times and geographical information. Like with service and application perspectives, we can jump from this view to look at a specific request.
Now we can see all the timing information, JavaScript errors, and any metadata we want to set. It’s also possible to jump to any backend traces from this view, which is very helpful if the issues in the browser are being caused by a poorly performing backend.
Note: like with the rest of Instana, the backend trace has links back to the end user monitoring beacon which initiated it. Combined with the infrastructure overview, we have a full insight into every request made from the underlying hardware to the actions taken in the recipient’s browser.
For any eCommerce retailer, understanding the health of business means having a holistic understanding of your site and making sure that everyone understands your site’s status. Dashboards are a powerful tool in ensuring that happens quickly and effectively.
Instana’s dashboard supports the common “table stakes” asks of merging infrastructure, application and end user monitoring data into a single custom view. It can also create and display service level indicators. To demonstrate this, I turned off the database for our demo site after starting a load test.
The SLI tracked the errors over the time window and gave us a clear indicator of how well the site was performing versus the business expectation.
I hope this demo was helpful as we approach the most critical time for your eCommerce retail applications and all its components. Get your hands dirty in Play With, the Instana observability guided demo environment, to learn more about using Instana yourself.