<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Observability on Software Engineering Learning Paths</title><link>https://kyngo.github.io/learning-paths/paths/observability/</link><description>Recent content in Observability on Software Engineering Learning Paths</description><generator>Hugo</generator><language>en</language><atom:link href="https://kyngo.github.io/learning-paths/paths/observability/index.xml" rel="self" type="application/rss+xml"/><item><title>Introduction to Observability</title><link>https://kyngo.github.io/learning-paths/paths/observability/01-introduction/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kyngo.github.io/learning-paths/paths/observability/01-introduction/</guid><description>&lt;h1 id="introduction-to-observability"&gt;Introduction to Observability&lt;a class="anchor" href="#introduction-to-observability"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Observability is the measure of how well you can understand a system&amp;rsquo;s internal state from its external outputs. The term originates from control theory, where a system is &amp;ldquo;observable&amp;rdquo; if its internal state can be reconstructed from its outputs alone. In software engineering, observability means your production systems emit enough telemetry — metrics, logs, and traces — that you can diagnose any failure without deploying new code.&lt;/p&gt;</description></item><item><title>Metrics</title><link>https://kyngo.github.io/learning-paths/paths/observability/02-metrics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kyngo.github.io/learning-paths/paths/observability/02-metrics/</guid><description>&lt;h1 id="metrics"&gt;Metrics&lt;a class="anchor" href="#metrics"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Metrics are numeric measurements collected at regular intervals and aggregated over time. They are the most efficient observability signal — compact to store, fast to query, and ideal for dashboards and alerting. This section covers metric types, the Prometheus data model, PromQL fundamentals, and naming conventions.&lt;/p&gt;
&lt;h2 id="metric-types"&gt;Metric Types&lt;a class="anchor" href="#metric-types"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;There are four fundamental metric types. Each serves a different purpose.&lt;/p&gt;
&lt;h3 id="counter"&gt;Counter&lt;a class="anchor" href="#counter"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A counter is a cumulative value that only goes up (or resets to zero on restart). Use counters for things you &lt;em&gt;count&lt;/em&gt;: requests, errors, bytes transferred.&lt;/p&gt;</description></item><item><title>Logging</title><link>https://kyngo.github.io/learning-paths/paths/observability/03-logging/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kyngo.github.io/learning-paths/paths/observability/03-logging/</guid><description>&lt;h1 id="logging"&gt;Logging&lt;a class="anchor" href="#logging"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Logs are timestamped, immutable records of discrete events. They provide the richest context of any telemetry signal — the actual error message, the request payload that triggered it, the stack trace. This section covers structured logging, log levels, JSON format, aggregation pipelines, and the major log management stacks.&lt;/p&gt;
&lt;h2 id="unstructured-vs-structured-logging"&gt;Unstructured vs Structured Logging&lt;a class="anchor" href="#unstructured-vs-structured-logging"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="the-problem-with-unstructured-logs"&gt;The Problem with Unstructured Logs&lt;a class="anchor" href="#the-problem-with-unstructured-logs"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Traditional logs are free-form text:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2026-08-27 08:15:32 ERROR OrderService - Failed to process order ORD-9182 for user 4521: PaymentGatewayTimeout after 30042ms&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is human-readable but machine-hostile. To extract the order ID, user ID, or duration, you need regex parsing — which is fragile, slow, and breaks when the message format changes.&lt;/p&gt;</description></item><item><title>Distributed Tracing</title><link>https://kyngo.github.io/learning-paths/paths/observability/04-distributed-tracing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kyngo.github.io/learning-paths/paths/observability/04-distributed-tracing/</guid><description>&lt;h1 id="distributed-tracing"&gt;Distributed Tracing&lt;a class="anchor" href="#distributed-tracing"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Distributed tracing follows individual requests as they propagate through multiple services. When a user hits &amp;ldquo;Place Order&amp;rdquo; and that request touches an API gateway, order service, inventory service, payment service, and notification service, a trace captures the entire journey — showing where time is spent, which calls failed, and how services depend on each other.&lt;/p&gt;
&lt;h2 id="core-concepts"&gt;Core Concepts&lt;a class="anchor" href="#core-concepts"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="traces-and-spans"&gt;Traces and Spans&lt;a class="anchor" href="#traces-and-spans"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A &lt;strong&gt;trace&lt;/strong&gt; represents the end-to-end journey of a single request. It consists of one or more &lt;strong&gt;spans&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Instrumentation</title><link>https://kyngo.github.io/learning-paths/paths/observability/05-instrumentation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kyngo.github.io/learning-paths/paths/observability/05-instrumentation/</guid><description>&lt;h1 id="instrumentation"&gt;Instrumentation&lt;a class="anchor" href="#instrumentation"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Instrumentation is the process of adding telemetry code to your applications so they emit metrics, logs, and traces. OpenTelemetry provides a unified API and SDK for all three signals. This section covers auto vs manual instrumentation, language-specific setup, and best practices.&lt;/p&gt;
&lt;h2 id="auto-vs-manual-instrumentation"&gt;Auto vs Manual Instrumentation&lt;a class="anchor" href="#auto-vs-manual-instrumentation"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="auto-instrumentation"&gt;Auto-Instrumentation&lt;a class="anchor" href="#auto-instrumentation"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Auto-instrumentation injects telemetry into your application without code changes. It hooks into frameworks and libraries (HTTP clients, database drivers, messaging systems) to automatically create spans, record metrics, and correlate logs.&lt;/p&gt;</description></item><item><title>Dashboards &amp; Visualisation</title><link>https://kyngo.github.io/learning-paths/paths/observability/06-dashboards-and-visualisation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kyngo.github.io/learning-paths/paths/observability/06-dashboards-and-visualisation/</guid><description>&lt;h1 id="dashboards--visualisation"&gt;Dashboards &amp;amp; Visualisation&lt;a class="anchor" href="#dashboards--visualisation"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Dashboards transform raw telemetry into actionable insights. A well-designed dashboard answers the question &amp;ldquo;is everything OK?&amp;rdquo; in under five seconds and guides investigation when it isn&amp;rsquo;t. This section covers Grafana, dashboard design principles, and the established methodologies for choosing what to visualise.&lt;/p&gt;
&lt;h2 id="methodologies-what-to-measure"&gt;Methodologies: What to Measure&lt;a class="anchor" href="#methodologies-what-to-measure"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="the-four-golden-signals"&gt;The Four Golden Signals&lt;a class="anchor" href="#the-four-golden-signals"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Defined in the Google SRE book, the four golden signals are the minimum set of metrics for any user-facing service:&lt;/p&gt;</description></item><item><title>Alerting</title><link>https://kyngo.github.io/learning-paths/paths/observability/07-alerting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kyngo.github.io/learning-paths/paths/observability/07-alerting/</guid><description>&lt;h1 id="alerting"&gt;Alerting&lt;a class="anchor" href="#alerting"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Alerting bridges the gap between dashboards and action. A well-designed alerting system notifies the right person, at the right time, with enough context to act — without drowning the team in noise. This section covers SLO-based alerting, error budgets, burn rate alerts, alert design, and on-call integration.&lt;/p&gt;
&lt;h2 id="slis-slos-and-slas"&gt;SLIs, SLOs, and SLAs&lt;a class="anchor" href="#slis-slos-and-slas"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="service-level-indicators-slis"&gt;Service Level Indicators (SLIs)&lt;a class="anchor" href="#service-level-indicators-slis"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;An SLI is a quantitative measure of a specific aspect of service quality. It&amp;rsquo;s the raw measurement:&lt;/p&gt;</description></item><item><title>Observability Platforms</title><link>https://kyngo.github.io/learning-paths/paths/observability/08-observability-platforms/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kyngo.github.io/learning-paths/paths/observability/08-observability-platforms/</guid><description>&lt;h1 id="observability-platforms"&gt;Observability Platforms&lt;a class="anchor" href="#observability-platforms"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Choosing an observability platform is one of the most impactful infrastructure decisions a team makes. The platform determines how you collect, store, query, and alert on telemetry — and it significantly affects your monthly bill. This section compares the major platforms: Datadog, Grafana Cloud, New Relic, and AWS-native tools.&lt;/p&gt;
&lt;h2 id="platform-architecture-models"&gt;Platform Architecture Models&lt;a class="anchor" href="#platform-architecture-models"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;There are two fundamental approaches:&lt;/p&gt;
&lt;h3 id="all-in-one-saas"&gt;All-in-One SaaS&lt;a class="anchor" href="#all-in-one-saas"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A single vendor handles metrics, logs, traces, and dashboards. You send telemetry to their endpoints and use their UI.&lt;/p&gt;</description></item><item><title>Observability in Practice</title><link>https://kyngo.github.io/learning-paths/paths/observability/09-observability-in-practice/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kyngo.github.io/learning-paths/paths/observability/09-observability-in-practice/</guid><description>&lt;h1 id="observability-in-practice"&gt;Observability in Practice&lt;a class="anchor" href="#observability-in-practice"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Observability tools are only as valuable as the processes around them. This section covers the human side: how to debug production issues systematically, write effective runbooks, structure on-call rotations, and run incident response. These practices turn raw telemetry into faster recovery and fewer repeat incidents.&lt;/p&gt;
&lt;h2 id="debugging-production-issues"&gt;Debugging Production Issues&lt;a class="anchor" href="#debugging-production-issues"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="the-systematic-approach"&gt;The Systematic Approach&lt;a class="anchor" href="#the-systematic-approach"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;When an alert fires or a user reports an issue, resist the urge to SSH into a server and start guessing. Follow a structured debugging flow:&lt;/p&gt;</description></item><item><title>Advanced Topics</title><link>https://kyngo.github.io/learning-paths/paths/observability/10-advanced-topics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kyngo.github.io/learning-paths/paths/observability/10-advanced-topics/</guid><description>&lt;h1 id="advanced-topics"&gt;Advanced Topics&lt;a class="anchor" href="#advanced-topics"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Once you have metrics, logs, traces, dashboards, and alerting in place, advanced observability techniques push further — answering questions that traditional telemetry cannot. This section covers continuous profiling, eBPF, synthetic monitoring, chaos engineering observability, and AIOps.&lt;/p&gt;
&lt;h2 id="continuous-profiling"&gt;Continuous Profiling&lt;a class="anchor" href="#continuous-profiling"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Traditional profiling captures a snapshot of CPU, memory, or I/O usage during a debugging session. Continuous profiling runs &lt;em&gt;always&lt;/em&gt; in production, attaching profiling data to traces to explain &lt;em&gt;why&lt;/em&gt; a span is slow — not just &lt;em&gt;that&lt;/em&gt; it&amp;rsquo;s slow.&lt;/p&gt;</description></item></channel></rss>