Monitoring containerized applications: Must-haves
Is there a correct way to monitor containerized applications? What are the tools that help people “connect the dots” between various silos of the infrastructure, and help fix problems when they occur? We talked with Matt Chotin, Sr. Director of Developer Initiatives at AppDynamics, about all this and more.
JAXenter: Containers, clouds, and microservices have enabled us to create complex applications. However, these apps have underlying resources that are constantly changing to meet performance requirements, making them incredibly hard to monitor. How can we change that?
Matt Chotin: The most important thing to think about with monitoring is whom these complex applications are serving, and then use that context to ensure that everything is performing. The performance of these underlying resources is irrelevant without understanding how they impact the application, and if that, in turn, impacts the users of the application.
This means that you can’t just collect logs, events, and metrics and hope you can figure out what’s going on. Your monitoring tools must help you tie it all together, often in the context of what the users of the application are experiencing. Understanding the correlation between application performance and system performance enables better utilization of the myriad resources at your disposal and makes it easier to plan strategically.
JAXenter: Who’s to blame: containers or the infrastructure around them?
Matt Chotin: Technology is not necessarily to blame, but the way we use these technologies has changed the models and paradigms for which traditional monitoring was built. Containers have a shorter lifespan (the average Docker container has a lifespan of three days – compared to VMs which have a lifespan of 12 days) and potentially move around on different pieces of infrastructure. This is so different than older applications where a VM might have lasted longer (and certainly wasn’t moved while running) but even until recently, applications were often deployed on bare metal in a data center. We’ve introduced more abstractions and separation of the application and the infrastructure with containers, and we need to understand the behavior of all of these interdependent yet disconnected pieces.
JAXenter: What tools should be used in this situation?
Matt Chotin: Monitoring tools that can help simplify the complexities of containerized applications by starting with the application and then intelligently correlating down through the infrastructure. These tools help people “connect the dots” between various silos of your infrastructure, and help fix problems when they do occur.
Ideally, this system would understand the relationships between all of the objects across a virtual environment’s topology, recognize the difference between inconsequential anomalies and actual performance problems, and instantly shows you the root cause and recommends actions for remediation.
JAXenter: What’s the correct way to monitor applications?
Containers have a shorter lifespan (the average Docker container has a lifespan of three days – compared to VMs which have a lifespan of 12 days) and potentially move around on different pieces of infrastructure.
Matt Chotin: This is a key shift in the mentality for monitoring modern applications: look at what customers are looking at, not at the infrastructure. Meaningful KPIs will focus around customer-facing performance like transactions per second, response time and the like. Containers, by definition, are plentiful, portable and disposable. They are only in service of the application.
A unified view of the enterprise stack and effective application performance monitoring (APM) can help to fortify the benefits of containers and address their challenges.
JAXenter: How can we leverage machine learning to ingest and analyze streaming data?
Matt Chotin: Machine learning (ML) can be used to much more quickly ingest and analyze streaming data as it flows in. The first step is to train the ML so that it can understand which data is mission-critical, which data is important, which data may be anomalies, and overall how to filter the sound from the noise.
There is no one-size-fits-all approach with ML, and each company will have to evaluate the meaningful KPIs that impact the systems and the customer experience and train their ML accordingly. Companies are still learning as they go.
JAXenter: Could you name a few must-haves for monitoring containerized apps?
- Must be able to monitor the applications, not just the infrastructure
- Must have visibility into your entire application infrastructure stack
- Must keep in mind the short lifespan and high density of containers
- Must use analytics (not just monitoring) to understand what’s happening in your infrastructure