The latest News and Information on Observabilty for complex systems and related technologies.
Monitoring has never been simple, but there was a time when it was simpler. You had a device you could collect data from; you knew the metrics you needed to monitor, and if something went wrong, you could find the root cause. But as IT becomes increasingly and exponentially more complex, more devices, more environments, more things to monitor, more updates, more data, more everything; monitoring in general needs to grow with it.
Trends in the infrastructure and software space have changed the way we build and run software. As a result, we have started treating our infrastructure as code, which has helped us lower costs and get our products to market more quickly. These new architectures also give us the ability to test our software faster in production-like deployments, and generally deliver more stable and reproducible deployments.
In this two-part blog post, we’ll use Elastic Observability to monitor a sample Java application. In the first blog post, we started by looking at how Elastic Observability monitors Java applications. We built and instrumented a sample Java Spring application composed of a data-access microservice supported by a MySQL backend. In this part, we’ll use Java ECS logging and APM log correlation to link transactions with their logs.
So what exactly is observability? Is it just a new-fangled term for 'monitoring'? Well, no. Observability goes further than mere monitoring. Observability involves the combination of 3 pillars – Metrics, Logs, and Tracing – to give a much more in-depth view of what your application is doing. Observability offers proactive insights into how your application and/or infrastructure are likely to behave, whereas monitoring is only reactive in nature.
Observability is an indispensable concept in continuous delivery, but it can be a little bewildering. Luckily for us, there are a number of tools and techniques to make our job easier! One way to aid in improving observability in a continuous delivery environment is by monitoring and analyzing key metrics from builds and deploys. With tools such as Prometheus and their integrations into CI/CD pipelines, gathering and analysis of metrics is simple. Tracking these things early on is essential.
Javascript is a pretty prolific programming language, used daily by people visiting any number of websites and web applications. NodeJS, it’s server-side version, is also used all over the place. You’ll find it deployed as full application stacks to functions in things like AWS Lambda, or even as IoT processes with things like Johnny Five. So when we think about Observability in the context of a nodejs stack, how do we set it up and get the information flowing?
Microservices and distributed architectures have become the norm for building modern day applications. While the cloud has made it easier to deploy and scale microservices, it has opened up a complex set of problems for DevOps by virtue of the sheer volume of interactions between those services.