<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Srinivasa's Substack]]></title><description><![CDATA[My personal Substack]]></description><link>https://rithikengineering.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!jz0Y!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54b561c7-57b5-48ff-8f1f-cdc57a21ae75_887x887.png</url><title>Srinivasa&apos;s Substack</title><link>https://rithikengineering.substack.com</link></image><generator>Substack</generator><lastBuildDate>Wed, 26 Aug 2026 01:35:17 GMT</lastBuildDate><atom:link href="https://rithikengineering.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Srinivasa Rithik Ghantasala]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[rithikengineering@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[rithikengineering@substack.com]]></itunes:email><itunes:name><![CDATA[Srinivasa Rithik Ghantasala]]></itunes:name></itunes:owner><itunes:author><![CDATA[Srinivasa Rithik Ghantasala]]></itunes:author><googleplay:owner><![CDATA[rithikengineering@substack.com]]></googleplay:owner><googleplay:email><![CDATA[rithikengineering@substack.com]]></googleplay:email><googleplay:author><![CDATA[Srinivasa Rithik Ghantasala]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[I Started Preparing for a Hackathon and Ended Up Learning Observability with SigNoz ]]></title><description><![CDATA[A small story about curiosity, a confusing set of technical words, and building ObserveAI to make them finally connect.]]></description><link>https://rithikengineering.substack.com/p/i-started-preparing-for-a-hackathon</link><guid isPermaLink="false">https://rithikengineering.substack.com/p/i-started-preparing-for-a-hackathon</guid><dc:creator><![CDATA[Srinivasa Rithik Ghantasala]]></dc:creator><pubDate>Fri, 17 Jul 2026 15:27:05 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Dfnc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfdfbe88-f6e9-4595-b852-37c185c0566d_2876x1552.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p style="text-align: justify;">I expected my preparation for the <a href="https://www.wemakedevs.org/hackathons/signoz"><span data-color="#ff6719" style="color: rgb(255, 103, 25);">Agents of SigNoz Hackathon by WeMakeDevs</span></a> to begin with an AI idea.</p><p style="text-align: justify;">Instead, it began with an empty SigNoz screen.</p><p style="text-align: justify;">I had heard the observability vocabulary before: logs, metrics, traces, dashboards, alerts, and OpenTelemetry. But I had never used those signals together while a system was actually failing. I could read a definition of distributed tracing, but I could not answer a practical question like: <strong>checkout is slow; how do I prove whether payment, inventory, the database, or an asynchronous consumer is responsible?</strong></p><p style="text-align: justify;">Rather than jump straight into a competition project, I built a smaller learning lab called <span data-color="#ff6719" style="color: rgb(255, 103, 25);">ObserveAI</span>. Its purpose was simple: create a system that can fail in controlled ways, send its telemetry to self-hosted SigNoz, and learn how to investigate with evidence.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Dfnc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfdfbe88-f6e9-4595-b852-37c185c0566d_2876x1552.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Dfnc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfdfbe88-f6e9-4595-b852-37c185c0566d_2876x1552.png 424w, https://substackcdn.com/image/fetch/$s_!Dfnc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfdfbe88-f6e9-4595-b852-37c185c0566d_2876x1552.png 848w, https://substackcdn.com/image/fetch/$s_!Dfnc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfdfbe88-f6e9-4595-b852-37c185c0566d_2876x1552.png 1272w, https://substackcdn.com/image/fetch/$s_!Dfnc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfdfbe88-f6e9-4595-b852-37c185c0566d_2876x1552.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Dfnc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfdfbe88-f6e9-4595-b852-37c185c0566d_2876x1552.png" width="1456" height="786" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cfdfbe88-f6e9-4595-b852-37c185c0566d_2876x1552.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:786,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1927295,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://rithikengineering.substack.com/i/207185617?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfdfbe88-f6e9-4595-b852-37c185c0566d_2876x1552.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Dfnc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfdfbe88-f6e9-4595-b852-37c185c0566d_2876x1552.png 424w, https://substackcdn.com/image/fetch/$s_!Dfnc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfdfbe88-f6e9-4595-b852-37c185c0566d_2876x1552.png 848w, https://substackcdn.com/image/fetch/$s_!Dfnc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfdfbe88-f6e9-4595-b852-37c185c0566d_2876x1552.png 1272w, https://substackcdn.com/image/fetch/$s_!Dfnc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfdfbe88-f6e9-4595-b852-37c185c0566d_2876x1552.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: justify;">This post is the story of what finally made observability click for me: the difference between a running app and an app that can explain itself.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QRbJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F382b6b32-d951-4566-81c1-c91da3119380_1576x1550.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QRbJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F382b6b32-d951-4566-81c1-c91da3119380_1576x1550.png 424w, https://substackcdn.com/image/fetch/$s_!QRbJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F382b6b32-d951-4566-81c1-c91da3119380_1576x1550.png 848w, https://substackcdn.com/image/fetch/$s_!QRbJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F382b6b32-d951-4566-81c1-c91da3119380_1576x1550.png 1272w, https://substackcdn.com/image/fetch/$s_!QRbJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F382b6b32-d951-4566-81c1-c91da3119380_1576x1550.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QRbJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F382b6b32-d951-4566-81c1-c91da3119380_1576x1550.png" width="1456" height="1432" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/382b6b32-d951-4566-81c1-c91da3119380_1576x1550.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1432,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1127346,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://rithikengineering.substack.com/i/207185617?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F382b6b32-d951-4566-81c1-c91da3119380_1576x1550.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QRbJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F382b6b32-d951-4566-81c1-c91da3119380_1576x1550.png 424w, https://substackcdn.com/image/fetch/$s_!QRbJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F382b6b32-d951-4566-81c1-c91da3119380_1576x1550.png 848w, https://substackcdn.com/image/fetch/$s_!QRbJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F382b6b32-d951-4566-81c1-c91da3119380_1576x1550.png 1272w, https://substackcdn.com/image/fetch/$s_!QRbJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F382b6b32-d951-4566-81c1-c91da3119380_1576x1550.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3 style="text-align: justify;">I built a checkout flow on purpose</h3><p style="text-align: justify;">I chose a small e-commerce checkout flow because the failures are intuitive. A customer places an order, inventory is reserved, payment is processed, an order is written, and follow-up work happens asynchronously.</p><p><strong>ObserveAI contains:</strong></p><ul><li><p><strong>FastAPI services</strong> for checkout, cart, inventory, payment, notifications, and analytics</p></li><li><p><strong>Redis</strong> for cart-style state and PostgreSQL for order-related data</p></li><li><p><strong>Redpanda</strong>, a Kafka-compatible event bus, for fraud, notification, and analytics events</p></li><li><p>a small rules-based <strong>ai-fraud-service</strong></p></li><li><p>an <strong>OpenTelemetry Collector</strong> and a <strong>self-hosted SigNoz instance</strong></p></li><li><p>a <strong>traffic generato</strong>r that keeps live signals flowing</p></li></ul><p>The request path looks like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9LUT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31e2ef61-6b78-423a-904e-1f208f771ce9_1306x854.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9LUT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31e2ef61-6b78-423a-904e-1f208f771ce9_1306x854.png 424w, https://substackcdn.com/image/fetch/$s_!9LUT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31e2ef61-6b78-423a-904e-1f208f771ce9_1306x854.png 848w, https://substackcdn.com/image/fetch/$s_!9LUT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31e2ef61-6b78-423a-904e-1f208f771ce9_1306x854.png 1272w, https://substackcdn.com/image/fetch/$s_!9LUT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31e2ef61-6b78-423a-904e-1f208f771ce9_1306x854.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9LUT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31e2ef61-6b78-423a-904e-1f208f771ce9_1306x854.png" width="1306" height="854" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/31e2ef61-6b78-423a-904e-1f208f771ce9_1306x854.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:854,&quot;width&quot;:1306,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:127615,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://rithikengineering.substack.com/i/207185617?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31e2ef61-6b78-423a-904e-1f208f771ce9_1306x854.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9LUT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31e2ef61-6b78-423a-904e-1f208f771ce9_1306x854.png 424w, https://substackcdn.com/image/fetch/$s_!9LUT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31e2ef61-6b78-423a-904e-1f208f771ce9_1306x854.png 848w, https://substackcdn.com/image/fetch/$s_!9LUT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31e2ef61-6b78-423a-904e-1f208f771ce9_1306x854.png 1272w, https://substackcdn.com/image/fetch/$s_!9LUT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31e2ef61-6b78-423a-904e-1f208f771ce9_1306x854.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: justify;">I deliberately added failure scenarios: payment_slow, provider_timeout, inventory_fail, fraud_ai_slow, kafka_consumer_slow, and poison_message. They make the system useful for learning because I can change one behaviour and observe what changes in the telemetry.</p><h3 style="text-align: justify;">The first lesson: an observability stack can run and still observe nothing</h3><p style="text-align: justify;">My first setup looked healthy from the terminal. The services were up, the collector was up, and SigNoz was up. But there was no data in the SigNoz UI.</p><p style="text-align: justify;">This was the first thing I learned that I would not have understood from reading definitions: <strong>observability starts with data delivery, not dashboards.</strong></p><p style="text-align: justify;">My app containers sent OTLP to the local collector, but that collector also needed a route to the SigNoz ingestion endpoint from inside Docker. The useful configuration in my setup is short:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!adb_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1dc9223-da37-428d-8097-db0ae4e42d82_416x419.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!adb_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1dc9223-da37-428d-8097-db0ae4e42d82_416x419.png 424w, https://substackcdn.com/image/fetch/$s_!adb_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1dc9223-da37-428d-8097-db0ae4e42d82_416x419.png 848w, https://substackcdn.com/image/fetch/$s_!adb_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1dc9223-da37-428d-8097-db0ae4e42d82_416x419.png 1272w, https://substackcdn.com/image/fetch/$s_!adb_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1dc9223-da37-428d-8097-db0ae4e42d82_416x419.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!adb_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1dc9223-da37-428d-8097-db0ae4e42d82_416x419.png" width="416" height="419" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c1dc9223-da37-428d-8097-db0ae4e42d82_416x419.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:419,&quot;width&quot;:416,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:91087,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://rithikengineering.substack.com/i/207185617?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1dc9223-da37-428d-8097-db0ae4e42d82_416x419.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!adb_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1dc9223-da37-428d-8097-db0ae4e42d82_416x419.png 424w, https://substackcdn.com/image/fetch/$s_!adb_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1dc9223-da37-428d-8097-db0ae4e42d82_416x419.png 848w, https://substackcdn.com/image/fetch/$s_!adb_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1dc9223-da37-428d-8097-db0ae4e42d82_416x419.png 1272w, https://substackcdn.com/image/fetch/$s_!adb_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1dc9223-da37-428d-8097-db0ae4e42d82_416x419.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: justify;">The collector joins the SigNoz Docker network, so signoz-ingester: 4317 is reachable from the collector. Once I corrected that connection and generated requests, services such as checkout-service, payment-service, inventory-service, and ai-fraud-service began appearing in SigNoz.</p><p style="text-align: justify;">That was a much more satisfying milestone than a polished dashboard. Until then, I had an application. After that, I had an application that could expose evidence about its own behaviour.</p><p style="text-align: justify;">For anyone reproducing this locally: SigNoz&#8217;s current self-hosted Docker guide uses Foundry and lists 8080 for the Ul plus 4317 and 4318 for OTLP ingestion. I kept ObserveAl&#8217;s own web ports separate so those ports could remain available to SigNoz. <strong>SigNoz&#8217;s Docker installation guide</strong> is the source I followed.</p><h3 style="text-align: justify;">Continuous traffic made the data meaningful</h3><p style="text-align: justify;">I then made one design choice that changed the project: I added a traffic generator.</p><p style="text-align: justify;">Without it, I would submit one checkout, inspect one trace, and wait.</p><p style="text-align: justify;">With generated normal checkouts and controlled failures, SigNoz started showing changes over time. A provider timeout caused error spans and error logs. A slow payment moved the latency distribution. A slow Kafka consumer created an async backlog while the original checkout could still return success.</p><p style="text-align: justify;">The project can be started with the same commands I used:</p><p style="text-align: justify;">cp .env.example .env<br>docker compose up --build</p><p style="text-align: justify;">Then I use the smoke test to seed normal traffic and several controlled failure paths:</p><p style="text-align: justify;">bash tests/smoke_test.sh</p><p style="text-align: justify;">For a run with latency spikes, expected failures, Kafka activity, and fraud-service spans:</p><p style="text-align: justify;">bash tests/big_smoke_test.sh</p><p style="text-align: justify;">The important lesson was not the script itself. It was seeing that one failed request is an event, while a pattern over time is a signal.</p><h3 style="text-align: justify;">The SigNoz feature that finally made sense: traces</h3><p style="text-align: justify;">Distributed tracing was the SigNoz feature that changed my mental model most.</p><p style="text-align: justify;">Before ObserveAl, I thought of logs as the main debugging tool. Logs tell you that something happened, but a log from payment-service does not automatically show how the request reached payment-service or what happened before it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j25M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50dd13aa-4e53-4893-83ed-60d62f33bf6b_2876x1552.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j25M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50dd13aa-4e53-4893-83ed-60d62f33bf6b_2876x1552.png 424w, https://substackcdn.com/image/fetch/$s_!j25M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50dd13aa-4e53-4893-83ed-60d62f33bf6b_2876x1552.png 848w, https://substackcdn.com/image/fetch/$s_!j25M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50dd13aa-4e53-4893-83ed-60d62f33bf6b_2876x1552.png 1272w, https://substackcdn.com/image/fetch/$s_!j25M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50dd13aa-4e53-4893-83ed-60d62f33bf6b_2876x1552.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j25M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50dd13aa-4e53-4893-83ed-60d62f33bf6b_2876x1552.png" width="1456" height="786" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/50dd13aa-4e53-4893-83ed-60d62f33bf6b_2876x1552.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:786,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:549886,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://rithikengineering.substack.com/i/207185617?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50dd13aa-4e53-4893-83ed-60d62f33bf6b_2876x1552.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!j25M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50dd13aa-4e53-4893-83ed-60d62f33bf6b_2876x1552.png 424w, https://substackcdn.com/image/fetch/$s_!j25M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50dd13aa-4e53-4893-83ed-60d62f33bf6b_2876x1552.png 848w, https://substackcdn.com/image/fetch/$s_!j25M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50dd13aa-4e53-4893-83ed-60d62f33bf6b_2876x1552.png 1272w, https://substackcdn.com/image/fetch/$s_!j25M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50dd13aa-4e53-4893-83ed-60d62f33bf6b_2876x1552.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: justify;">When I triggered payment slow, I could see the payment span take most of the checkout time.</p><p style="text-align: justify;">When I triggered db slow, the slow database step became visible. This is much stronger than saying &#8220;<em>checkout is slow.</em>&#8221; I could point to the place where the time went.</p><p style="text-align: justify;">The Kafka scenarios added another useful twist. With poison message, checkout could succeed while the fraud consumer retried and pushed the event toward a dead-letter path. That taught me that a successful HTTP response does not always mean the entire workflow is healthy. Observability has to follow the asynchronous work as well.</p><h3 style="text-align: justify;">How logs and metrics completed the investigation</h3><p style="text-align: justify;">The traces became even more useful because ObserveAI&#8217;s logs include context such as the service, scenario, order ID, trace ID, and span ID:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TecH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58c918a1-becb-4c53-9a2d-e3ca73bfa2c0_482x296.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TecH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58c918a1-becb-4c53-9a2d-e3ca73bfa2c0_482x296.png 424w, https://substackcdn.com/image/fetch/$s_!TecH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58c918a1-becb-4c53-9a2d-e3ca73bfa2c0_482x296.png 848w, https://substackcdn.com/image/fetch/$s_!TecH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58c918a1-becb-4c53-9a2d-e3ca73bfa2c0_482x296.png 1272w, https://substackcdn.com/image/fetch/$s_!TecH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58c918a1-becb-4c53-9a2d-e3ca73bfa2c0_482x296.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TecH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58c918a1-becb-4c53-9a2d-e3ca73bfa2c0_482x296.png" width="482" height="296" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/58c918a1-becb-4c53-9a2d-e3ca73bfa2c0_482x296.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:296,&quot;width&quot;:482,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:52637,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://rithikengineering.substack.com/i/207185617?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58c918a1-becb-4c53-9a2d-e3ca73bfa2c0_482x296.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TecH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58c918a1-becb-4c53-9a2d-e3ca73bfa2c0_482x296.png 424w, https://substackcdn.com/image/fetch/$s_!TecH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58c918a1-becb-4c53-9a2d-e3ca73bfa2c0_482x296.png 848w, https://substackcdn.com/image/fetch/$s_!TecH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58c918a1-becb-4c53-9a2d-e3ca73bfa2c0_482x296.png 1272w, https://substackcdn.com/image/fetch/$s_!TecH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58c918a1-becb-4c53-9a2d-e3ca73bfa2c0_482x296.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: justify;">For me, this is where logs stopped being random text. An error message can point to a trace, and the trace can show the downstream path and timing. The telemetry becomes one investigation rather than three separate tools.</p><p>Metrics tell me when to start that investigation. p50, p90, and p99 became clear only after I caused failures:</p><p><span data-color="#ff6719" style="color: rgb(255, 103, 25);">p50 = the typical request experience</span></p><p><span data-color="#ff6719" style="color: rgb(255, 103, 25);">p90 = the slower end of requests</span></p><p><span data-color="#ff6719" style="color: rgb(255, 103, 25);">p99 = the slowest 1% of requests</span></p><p style="text-align: justify;">If average latency looks fine but p99 rises, some users can still be having a bad experience. In ObserveAI, slow payments and provider timeouts were a simple way to see that tail latency matters.</p><p>My practical investigation flow is now:</p><p style="text-align: justify;"><span data-color="#ff6719" style="color: rgb(255, 103, 25);">Metrics &#8594; Is something changing?</span></p><p><span data-color="#ff6719" style="color: rgb(255, 103, 25);">Traces  &#8594; Where is the time or failure?</span></p><p><span data-color="#ff6719" style="color: rgb(255, 103, 25);">Logs    &#8594; What exact context supports the explanation?</span></p><p>This is the most useful thing I learned from the project.</p><h3>Dashboards, alerts, and MCP</h3><p style="text-align: justify;">After I had usable traces, logs, and metrics, dashboards and alerts became easier to think about. I created queries around checkout latency, payment failures, fraud latency, Kafka consumer lag, dead-letter events, and database slowness.</p><p>The distinction I keep coming back to is:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MZP_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff82f22a8-4d0c-428a-9cdb-dc261f65cb22_2876x1552.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MZP_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff82f22a8-4d0c-428a-9cdb-dc261f65cb22_2876x1552.png 424w, https://substackcdn.com/image/fetch/$s_!MZP_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff82f22a8-4d0c-428a-9cdb-dc261f65cb22_2876x1552.png 848w, https://substackcdn.com/image/fetch/$s_!MZP_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff82f22a8-4d0c-428a-9cdb-dc261f65cb22_2876x1552.png 1272w, https://substackcdn.com/image/fetch/$s_!MZP_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff82f22a8-4d0c-428a-9cdb-dc261f65cb22_2876x1552.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MZP_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff82f22a8-4d0c-428a-9cdb-dc261f65cb22_2876x1552.png" width="1456" height="786" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f82f22a8-4d0c-428a-9cdb-dc261f65cb22_2876x1552.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:786,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:376957,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://rithikengineering.substack.com/i/207185617?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff82f22a8-4d0c-428a-9cdb-dc261f65cb22_2876x1552.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MZP_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff82f22a8-4d0c-428a-9cdb-dc261f65cb22_2876x1552.png 424w, https://substackcdn.com/image/fetch/$s_!MZP_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff82f22a8-4d0c-428a-9cdb-dc261f65cb22_2876x1552.png 848w, https://substackcdn.com/image/fetch/$s_!MZP_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff82f22a8-4d0c-428a-9cdb-dc261f65cb22_2876x1552.png 1272w, https://substackcdn.com/image/fetch/$s_!MZP_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff82f22a8-4d0c-428a-9cdb-dc261f65cb22_2876x1552.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Dashboards are for seeing. Alerts are for acting.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6QR3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7446c4c-3e01-4122-9dc1-9191a989d404_2876x1552.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6QR3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7446c4c-3e01-4122-9dc1-9191a989d404_2876x1552.png 424w, https://substackcdn.com/image/fetch/$s_!6QR3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7446c4c-3e01-4122-9dc1-9191a989d404_2876x1552.png 848w, https://substackcdn.com/image/fetch/$s_!6QR3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7446c4c-3e01-4122-9dc1-9191a989d404_2876x1552.png 1272w, https://substackcdn.com/image/fetch/$s_!6QR3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7446c4c-3e01-4122-9dc1-9191a989d404_2876x1552.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6QR3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7446c4c-3e01-4122-9dc1-9191a989d404_2876x1552.png" width="1456" height="786" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d7446c4c-3e01-4122-9dc1-9191a989d404_2876x1552.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:786,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:284936,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://rithikengineering.substack.com/i/207185617?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7446c4c-3e01-4122-9dc1-9191a989d404_2876x1552.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6QR3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7446c4c-3e01-4122-9dc1-9191a989d404_2876x1552.png 424w, https://substackcdn.com/image/fetch/$s_!6QR3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7446c4c-3e01-4122-9dc1-9191a989d404_2876x1552.png 848w, https://substackcdn.com/image/fetch/$s_!6QR3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7446c4c-3e01-4122-9dc1-9191a989d404_2876x1552.png 1272w, https://substackcdn.com/image/fetch/$s_!6QR3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7446c4c-3e01-4122-9dc1-9191a989d404_2876x1552.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: justify;">A dashboard helps me explore whether payment latency is climbing. An alert should be tied to a condition that deserves action: sustained checkout latency, an elevated payment error rate, growing consumer lag, or dead-letter events. Making an alert for every number would only create noise.</p><p style="text-align: justify;">I also connected SigNoz MCP to Codex after telemetry was available. Asking an AI client to query the running service list or inspect signals felt different from asking a generic chatbot, because the answer could begin with the evidence in SigNoz. The key insight for me was simple: an assistant investigating an incident should query telemetry first, then explain what it found.</p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d4d1ce8-02b7-475e-b831-1602da16dd3f_1590x1122.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f8e77c18-3c77-43d1-aca1-7a6acbdcc566_1590x1122.png&quot;}],&quot;caption&quot;:&quot;MCP Calling the SigNoz in Codex&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/abd1d87d-6c0e-45cc-a68c-f5c511d82db1_1456x720.png&quot;}},&quot;isEditorNode&quot;:true}"></div><h3 style="text-align: justify;">What I would tell my past self</h3><p style="text-align: justify;">Do not start by designing a dashboard.</p><p style="text-align: justify;">Start with one request path, one controlled failure, and a way to verify that your telemetry reaches the backend. Then use metrics to notice the change, traces to find the path, and logs to confirm the context.</p><p>That sequence made observability feel much less abstract to me.</p><p style="text-align: justify;">I started this project to prepare for a hackathon. I ended it with real traces and signals in SigNoz, and a much clearer understanding of observability: not collecting more data, but reducing guesswork when a system behaves unexpectedly.</p><h3 style="text-align: justify;">Links and notes</h3><p style="text-align: justify;">- ObserveAI repository: <a href="https://github.com/ghantasala-sr/ObserveAI">Github Repo</a></p><p>- <a href="https://signoz.io/docs/install/docker/">SigNoz self-hosted Docker / Foundry guide</a></p><p>- <a href="https://opentelemetry.io/docs/languages/python/instrumentation/">OpenTelemetry Python instrumentation documentation</a></p><h4></h4><h4>AI assistance disclosure</h4><p style="text-align: justify;">I used AI assistance (Codex with GPT 5.6 Terra and Luna) as a coding and editing collaborator while building and writing about ObserveAI. The local setup, debugging, testing, screenshots, and conclusions described here come from my own hands-on work.</p>]]></content:encoded></item></channel></rss>