Managing microservices with a lot of log data

Our previous blog on the 'importance of log data analysis' emphasized the significance of optimizing log data. This blog post focuses specifically on utilizing log data to monitor microservices environments. There are mixtures of opinions when it comes to monitoring microservices. One stance is that it can quickly become a challenge at larger scales, in contrast to a monolith, where everything is in one place. On the other hand, there's value in knowing how individual microservices perform, as each one is responsible for executing a unique task, and can make performance optimization more manageable. 

Managing a monolithic application can be complicated and messy. For example, customers are complaining about long checkout times. Operation teams try to pinpoint the spot in the application that is consuming most of the execution time. This is difficult to trace as there are no clear divisions between components. After hours of troubleshooting, the development team comes up with a viable solution. Then the patching process becomes a logistical nightmare as all the teams involved in the monolithic application need to sign off on the change — chaos from beginning to end.

One of the most efficient ways to scale an application is to break it down into many smaller applications that are each responsible for a particular task. One of the most efficient ways to manage and scale an application is to break it down into smaller applications, e.i., microservices. Microservices are architected for maintainability and flexibility. 

Benefits of microservice monitoring:

It’s nice to be able to track how well the services of your applications are performing, especially when they are split into sub-components of the host machine. For instance, if they have the ability to identify when one of their micro services are not working as they should be. Though generally, that service may not affect the application as a whole, it's good to make sure all services are running coherently.  

It can make the process of making changes to applications a lot quicker in comparison to a monolith architecture, which would be a lot slower as it affects the entire system. In addition, utilizing log data analysis as a means to monitor your microservices, is a great way to understand how your applications are behaving as well as the health of the underlying infrastructure. 

It's a more pleasant time monitoring an application’s services when they are split into sub-components. For instance, if a non-critical microservice is running slower than usual, then it can be prioritized accordingly, and it doesn't have to create unwarranted stress for the entire organization. 

Microservices also provide opportunities to add resilience to the system so that components can handle spikes and errors gracefully with the ability to scale only the parts of the application that are struggling and need the extra resources. It can make the application development process a lot quicker in comparison to a monolith architecture since the change will only affect the targeted service.

Having small specialized services working together to achieve a business goal is better than a giant monolithic service that does everything. That is the core premise of microservices architecture. 

What have logs got to do with it? 

The majority of IT issues can be found in log data. They can show what happened, when and where. They are incredibly versatile and hold a lot of value when it comes to investigating and getting to the root cause of a problem. Log data can provide a detailed overview of your microservices architecture and enable you to drill down into the behaviour of that application or server. The importance of the logs becomes evident when we consider that instead of a monolithic app that runs and debugs as a whole in the same memory, we have several isolated pieces that need to work in cohesion — each communicating with several points of failure.

Monitoring microservices with Unomaly: 

Recently, one of our customers, ESL, made the move from a monolithic environment to a micro services environment. They had physical servers, where their web servers would push log files to Unomaly. However, since adopting microservices, they started to push their logs to their Logstash endpoint. Using a log analysis tool, such as Unomaly, provides them with insight into the usage of their microservices, which enables them to identify errors after deployments into their staging environment quickly. As ESL deploys continuously, it’s always good practice to have a method in place that enables you to monitor your builds closely.  

Unomaly fits into any microservices environment. We have a host machine, where there are three microservices passing logs into Docker, which then gets forwarded to Unomaly to analyze the log data and surfaces change, which gets highlighted to users.

 Each of the components in the host machine can individually input into Unomaly, not just the collection (host machine).  

Diagram: Unomaly in a microservices environment

The whole is the sum of its parts, therefore when it comes to microservices, monitoring each constituent part is essential to understanding the application as a whole.

Written by Larissa McIntyre
on February 11, 2020