<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Observability on Murat Useinov</title>
    <link>https://useinov.com/tags/observability/</link>
    <description>Recent content in Observability on Murat Useinov</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 10 Mar 2025 22:30:00 +0300</lastBuildDate>
    <atom:link href="https://useinov.com/tags/observability/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Observability has a budget</title>
      <link>https://useinov.com/posts/2025/observability-budget/</link>
      <pubDate>Mon, 10 Mar 2025 22:30:00 +0300</pubDate>
      <guid>https://useinov.com/posts/2025/observability-budget/</guid>
      <description>&lt;p&gt;Last year we turned tracing on everywhere. This year the telemetry invoice is a line item a manager asks about by name. The dashboards did not get more useful. More data, same confusion at 2 a.m.&lt;/p&gt;
&lt;p&gt;Time to design instead of collect.&lt;/p&gt;
&lt;p&gt;The design starts from the questions I actually ask when the pager goes off. In practice there are four: is the latency of key endpoints normal, did the error rate jump, how far behind are the queues, is the database saturated. That is the core set. Metrics for these must be cheap, always on, with alerts. Everything else can be sampled traces I pull up on demand.&lt;/p&gt;</description>
    </item>
    <item>
      <title>One trace through HTTP, queue and database</title>
      <link>https://useinov.com/posts/2024/one-trace/</link>
      <pubDate>Thu, 08 Feb 2024 19:50:00 +0300</pubDate>
      <guid>https://useinov.com/posts/2024/one-trace/</guid>
      <description>&lt;p&gt;A request creates a job. The job calls an external API and writes to the database. Something in this chain is slow, and the logs tell four disconnected stories.&lt;/p&gt;
&lt;p&gt;Grepping a request id across services is our folklore. OpenTelemetry finally makes the boring standard version practical in PHP.&lt;/p&gt;
&lt;p&gt;The core is small. One trace id for the whole causal chain, a span id for every operation, and one rule: pass the context along. Over HTTP it is a single header:&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
