<?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 Brian Faust</title><link>https://wimdy.works/tags/observability/</link><description>Recent content in Observability on Brian Faust</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Mon, 01 Jan 0001 00:00:00 +0000</lastBuildDate><atom:link href="https://wimdy.works/tags/observability/rss.xml" rel="self" type="application/rss+xml"/><item><title>Observability Must Answer the Next Operator Question</title><link>https://wimdy.works/thoughts/observability-must-answer-the-next-operator-question/</link><pubDate>Mon, 01 Sep 2025 00:00:00 +0000</pubDate><guid>https://wimdy.works/thoughts/observability-must-answer-the-next-operator-question/</guid><description>&lt;p&gt;A catalogue quote request returns &lt;code&gt;503&lt;/code&gt; after its price dependency times out.
One telemetry bundle produces five uncorrelated log lines, a metric labelled
with request ID and raw URL, and three pages. None of those pages names an
owner, the affected scope, the hold duration, or even the first query to run.
There is plenty of telemetry and very little help.&lt;/p&gt;
&lt;p&gt;The other bundle records less and tells the operator more. One page identifies
the affected route, region, and release. Its first query measures the failure
users can see. From there, an exemplar selects a failed trace, the trace locates
the dependency wait, and a correlated event names the application failure
class. The runbook then asks the question which actually matters: is it safe to
bypass that dependency?&lt;/p&gt;</description></item><item><title>Audit History Is Different from Application Logging</title><link>https://wimdy.works/thoughts/audit-history-is-different-from-application-logging/</link><pubDate>Wed, 01 Nov 2017 00:00:00 +0000</pubDate><guid>https://wimdy.works/thoughts/audit-history-is-different-from-application-logging/</guid><description>&lt;p&gt;When a cart appears to expire, support may ask:&lt;/p&gt;
&lt;figure class="code-figure"&gt;
 &lt;div class="code-block" data-copy-code&gt;
 &lt;button class="copy-code" type="button" aria-label="Copy code"&gt;copy&lt;/button&gt;&lt;span class="sr-only" data-copy-status role="status" aria-live="polite"&gt;&lt;/span&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;Which cart changed?
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;What was its prior state?
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;What state followed?
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Who or what caused the transition?
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Which policy allowed it?&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/figure&gt;
&lt;p&gt;An engineer investigating the same report may ask:&lt;/p&gt;
&lt;figure class="code-figure"&gt;
 &lt;div class="code-block" data-copy-code&gt;
 &lt;button class="copy-code" type="button" aria-label="Copy code"&gt;copy&lt;/button&gt;&lt;span class="sr-only" data-copy-status role="status" aria-live="polite"&gt;&lt;/span&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;Which request handled it?
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Which worker retried?
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;How long did the database call take?
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Which exception and stack occurred?
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;What else happened on that host?&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/figure&gt;
&lt;p&gt;Both groups need evidence, but making one record answer both sets of questions
usually gives you a bloated audit trail and strangely incomplete logs. Audit
history explains durable business change. Application logs explain software
execution.&lt;/p&gt;</description></item><item><title>A Correlation Identifier Is a Boundary Contract</title><link>https://wimdy.works/thoughts/a-correlation-identifier-is-a-boundary-contract/</link><pubDate>Thu, 01 Sep 2016 00:00:00 +0000</pubDate><guid>https://wimdy.works/thoughts/a-correlation-identifier-is-a-boundary-contract/</guid><description>&lt;p&gt;We had logs everywhere and still could not follow one shipment through the
system. It had failed somewhere after payment and before its documents were
ready, but the application, queue worker, and remote adapter did not share an
identifier.&lt;/p&gt;
&lt;p&gt;The investigation started with timestamps, account details, and values which
looked related. Payment was plausible, as were several remote calls nearby.
Some trails took hours to disprove because they belonged to different requests
which happened at roughly the same time. We did not need more log lines. We
needed a chain of custody.&lt;/p&gt;</description></item><item><title>Reproduce the Failure Before Repairing It</title><link>https://wimdy.works/thoughts/reproduce-the-failure-before-repairing-it/</link><pubDate>Fri, 01 Jan 2016 00:00:00 +0000</pubDate><guid>https://wimdy.works/thoughts/reproduce-the-failure-before-repairing-it/</guid><description>&lt;p&gt;Submit two different browser error reports. The application accepts both
requests, sends both reports, and records the same tracing identifier for each.&lt;/p&gt;
&lt;p&gt;Nothing crashed during submission. No assertion failed. The defect appears
later, when someone searches the logs and finds two executions presented as
one trace.&lt;/p&gt;
&lt;p&gt;The tempting response is to replace the identifier generator immediately. The
collision already points in that direction. But a plausible diagnosis is not a
reproduction. Before changing the generator, we need a check which states what
was observed, what should differ, and which surrounding machinery does not
matter.&lt;/p&gt;</description></item></channel></rss>