What is monitoring? What is observability?
Monitoring shows you how a Kubernetes environment and all of its layers are operating. Observability, on the other hand, is a measure of how well internal states of a system can be inferred from knowledge of its external outputs.
You might ask, “If observability is so important, then why am I just now hearing about it?” Or perhaps you’d say, “I’m doing fine with my monitoring solution, so I don't need observability.”
And for older systems, you'd be right! But modern systems—containerized microservices running on Kubernetes—are incredibly complex. Systems such as these can greatly benefit from an observability solution.
In your Kubernetes environment, every little piece of the system is generating records of its activity. Every activity of every Kubernetes component across multiple layers and multiple environments and multiple clouds—all of this is being recorded. That's a lot! The goal of observability is to ingest all of this data to give you a comprehensive understanding of your system so that your system is reliable, has optimized efficiency, and allows you to detect and predict problems before they reach the end user.
To illustrate the differences between monitoring and observability, consider this analogy. When I was a kid, I played Super Mario Bros. Each time I played, I knew there would be eight worlds, each with four stages. I knew exactly where the enemies would appear, and how they'd move. And I knew how to perfectly time my jump at the end of each level so that I'd hit the top of the flagpole and I’d see fireworks.
For an older system like this, it would be easy to collect metrics and, from those metrics, get a good picture of the system's state. You know the range of possible points earned and can find the average completion time for each stage and how many lives are usually lost before each particular level is completed. If these stats go outside of their normal ranges, then you'll know that something is wrong with the game, and you'll have a good idea about what that something is.
Now consider a modern video game like Minecraft. The world is infinite in scope (procedurally generated), and it is infinitely manipulatable by the user. Minecraft is designed for free play without a clear goal; it is about exploration and survival and interacting with other players. How would one even begin to measure such a complex system? You don't even know what you don't know.
For monitoring to accurately depict the state of your system, you have to know your unknowns. Just like in Super Mario Bros.
Monitoring shows you whether a Kubernetes environment and all of its layers are operating as expected. In order for monitoring to be effective, you must have clear expectations about how your system should behave.
Observability, in contrast, gives us deeper insights into our system as it organically grows. And with observability, access to these insights is maintained, even as functionality gets added to your system, as updates roll out, and more traffic comes in.
Observability gives you tools to help you better understand the unknown unknowns of your system. This enables you to detect and resolve issues proactively before the end user is affected.
About the AuthorFollow on Twitter More Content by Whitney Lee