The software technology space is rapidly evolving, particularly in the area of Observability, which refers to gaining insight into the internal workings and performance of cloud-based software. The rapid change in this field has been driven by changes in application deployment, such as the shift from monolithic architecture to microservices and containerization. This has resulted in a dramatic change in the role and process around observability, with the lack of proper observability affecting engineering teams in many ways, including having zero transparency, limiting capacity planning and troubleshooting, and resulting in inefficient systems. To improve understanding of software systems, especially those running on Kubernetes, it is essential to focus on improving observability. Observability can be thought of at three levels: application-level, Kubernetes itself, and infrastructure parameters. Designing for optimal observability requires understanding how these three pieces interact with each other and form a complete stack. Various architectural patterns in software development, such as event-driven applications, can provide insights into designing for observability. Monitoring event-driven applications involves tracking events, their processing, and the overall health of the system. Ingesting application metrics data is also crucial, and Kubernetes components like kube-apiserver, kube-controller-manager, and kube-scheduler have built-in instrumentation that can be used to gauge the health of Kubernetes clusters. Observability has a significant impact on many areas across an organization, including improving performance, reducing mean time to resolution for issues, optimizing resource utilization, and aiding in cost savings. A troubleshooting platform like Lumigo can help developers monitor, trace, and troubleshoot issues fast, providing end-to-end virtual stack traces, API visibility, distributed tracing, and a unified platform to explore and query across microservices.