Skip to content

Instantly share code, notes, and snippets.

@wattanar
Last active November 5, 2024 10:15
Show Gist options
  • Select an option

  • Save wattanar/987f630e24d6bebad2c9a7c1ac7da27a to your computer and use it in GitHub Desktop.

Select an option

Save wattanar/987f630e24d6bebad2c9a7c1ac7da27a to your computer and use it in GitHub Desktop.
obervability info

Observability is the practice of understanding the internal state of a system by analyzing its outputs—primarily logs, metrics, and traces. In software, observability provides insights into the health, performance, and behavior of applications, services, and infrastructure, allowing teams to identify and resolve issues faster, optimize system performance, and improve user experience.

Key Components of Observability

  1. Logs: Logs are records of events or messages generated by applications or infrastructure, often capturing errors, warnings, or significant operations. They help in understanding what actions occurred and in what sequence.

  2. Metrics: Metrics are numerical values that represent the performance of a system, such as CPU usage, memory usage, response times, and throughput. Metrics help monitor trends and spot anomalies.

  3. Traces: Traces follow a request’s path through different parts of the system, particularly in distributed or microservices architectures. They provide a detailed view of how different services interact and the time taken at each step, helping locate bottlenecks or failures.

Why Observability is Important

  1. Faster Issue Detection and Resolution: With robust observability, teams can detect issues before they impact users, pinpoint root causes, and quickly resolve problems. This is crucial for maintaining uptime and reliability, especially in complex, distributed systems.

  2. Improved System Performance and Optimization: Observability helps teams understand system performance under various conditions, allowing them to optimize code, infrastructure, or processes. For instance, high memory usage or slow database queries can be detected and addressed.

  3. Enhanced User Experience: With observability, teams can identify and eliminate slowdowns or failures that impact user experience, thus ensuring smoother interactions and higher satisfaction.

  4. Support for DevOps and CI/CD: Observability is essential in a DevOps environment where continuous integration and continuous deployment (CI/CD) are practiced. It enables fast feedback loops, allowing developers to monitor and improve applications continuously and to have confidence in deploying new features without fear of introducing hard-to-find issues.

  5. Scalability and Resilience: In modern cloud-native applications, which are typically distributed and often microservice-based, observability provides the visibility needed to manage and scale systems reliably. It supports strategies for resilience, such as automated failover or service degradation, which are essential in high-availability systems.

Observability vs. Monitoring

While monitoring involves tracking the known health metrics of a system (like CPU usage or request rates), observability goes further by helping teams investigate unknown or novel issues that arise, which might not have specific metrics already set up. Observability is about building systems that are inherently easier to troubleshoot, even when the problem is unfamiliar.

In short, observability empowers teams to keep software systems healthy, performant, and resilient, making it critical for any modern, complex software environment.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment