Docker containers are a game-changer when it comes to delivering software. They make development, testing and deployment faster and more consistent. That you already know.
But do you also realize what Docker means for application monitoring? It’s a game-changer there, too.
Why? Because Docker requires a fundamentally new approach to monitoring. With Docker containers, your primary focus should be on monitoring services, rather than the objects that compose those services.
Keep reading for an explanation of what this means and why it’s so important for effective Docker monitoring.
Before Docker: Traditional Monitoring Strategies
Traditionally, monitoring strategies were oriented around individual applications and the bare metal servers or virtual servers that hosted them. To ensure that your applications were running reliably and meeting user demand, you set up tools that let you know when an application was becoming overloaded, a server was running out of storage, and so on.
This approach to monitoring makes sense when you’re dealing with infrastructure in which your applications are monolithic, and each application can be mapped to a specific host server.
With Docker, Only Services Matter
When you migrate to Docker, however, your infrastructure starts to look very different.
In a Docker environment, your application is composed of microservices. Each of those services is run using many individual containers. Those containers are generally spread across a cluster of servers—and, by extension, so are the microservices that the containers compose, as well as the applications that are in turn created using those services.
Having containers spin up or down in response to fluctuations in demand on a service is normal. So is having a server go down in order to perform maintenance, shift loads to a different part of the cluster, and so on.
Therein lies the key difference between Docker monitoring and traditional monitoring. With Docker, you have to focus on monitoring the services that compose your application, rather than the containers or servers that power it. As long as the services remain stable, your application will remain stable.
If you focus on applications and servers rather than services, your interpretations will be filled with false positives and false negatives, because you’ll take the disappearance of an individual container to be a problem (for example), when in fact it is just a normal part of the way an agile Docker environment works.
Monitoring Caveat: Docker Containers Still Matter
It’s important to note, however, that I have not said services are the only thing that matter when it comes to Docker monitoring. I just said they should be your primary point of focus.
In order to monitor effectively, you should still have the ability to drill down into an individual container (and server, for that matter) when needed. That’s the only way you’ll be able to get to the bottom of service-related performance issues quickly.
For example, if you notice that one of the services in your application is responding more slowly than usual, you’ll need to determine quickly what the root of the problem is. Maybe it’s an issue with your code. Maybe it’s a load-balancing problem that you can fix in your orchestrator. Or maybe your server cluster is starting to run low on resources. The ability to monitor individual objects within your environment will allow you to examine each of these possibilities quickly and find the source of the problem and fix it before your service is disrupted.
Conclusion: Docker Monitoring Is Harder—But It’s Not Impossible
If it sounds like monitoring Docker containers effectively is harder, it is. With Docker, you have more to worry about because your environment is comprised of a complex mix of services, applications, servers and hundreds or thousands of individual containers.
This doesn’t mean, however, that effective Docker monitoring is not possible. It is, as long as you develop the right strategy—one that places service monitoring front-and-center while at the same time guaranteeing you the ability to drill down into other objects whenever needed.
You may also be interesting in the following:
- New Feature: Docker Monitoring
- Monitoring Docker Environments with Outlyer (Webinar)
- Monitoring: The Key to Using Docker Effectively in Production (eBook)