Last week Dockercon 17 took place in Copenhagen so we thought it topical to discuss Docker monitoring and why it matters. In this article we also look at some of the challenges and what a monitoring solution for Docker should include.
What is Docker?
Before we look at monitoring of Docker, first of all let's start with a simple explanation of what it is. Docker is a tool designed to make it easier to create, deploy, and run applications by using containers.
What is a Container?
Containers allow a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and ship it all out as one package. This means that containers are portable units which can then be shipped from Development to Test and Production environments without having to worry about dependencies causing things to break. For example a container could run on a developers laptop, in a private cloud or a public cloud without needing any modification. Docker containers are lightweight by design and ideal for enabling microservices application development.
What is a Microservice?
A microservice architecture is a method of developing software applications as a suite of independently deployable, small, modular services in which each service runs a unique process. Microservices are loosely coupled services which communicate through a well-defined API. The advantage of this approach is that small autonomous teams can develop, deploy and scale their respective services independently.
The trend towards microservice architectures based on container technologies such as Docker poses a challenge for traditional monitoring solutions. There is added complexity and dynamism which requires an intelligent approach. It is no longer enough to just monitor the VMs running your application, you need to look inside the container process as well. And since these containers can be short lived the monitoring solution needs to be able to cope with an environement where things are transient. The monitoring solution needs to be able to auto-discover containers and their dependencies as they come online and be able to troubleshoot problems after the event even, if for example, that container no longer exists. With the rate of change within microservice architectures, monitoring metrics like CPU at 1-minute intervals no long makes sense, you need much more granularity.
In summary a monitoring tool for Docker needs to:
- Provide automatic and continual discovery of hosts, containers and services.
- Map dependencies between hosts, containers and services.
- Monitor not just containers themselves, but what’s inside them.
- Monitor service performance, not just container performance.
- Monitor at sub-minute granularity.
Highlights from Dockercon
The highlights from last weeks Dockercon 17 event are here including new Kubernetes support.
Alongside Docker Swarm, Kubernetes, the open-source system for automating deployment, scaling, and management of containerised applications, will aid developers and operators to bring the advanced capabilities of the Docker platform to a broader set of applications.
If you need help monitoring applications running in Docker then please get in touch with one of our experts and let's discuss your challenges.