<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: sunilkumarpradhan</title>
    <description>The latest articles on DEV Community by sunilkumarpradhan (@sunilkumarpradhan_47).</description>
    <link>https://dev.to/sunilkumarpradhan_47</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1029415%2Fa4befb7a-e2e7-4e89-b967-e899951a1464.jpeg</url>
      <title>DEV Community: sunilkumarpradhan</title>
      <link>https://dev.to/sunilkumarpradhan_47</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sunilkumarpradhan_47"/>
    <language>en</language>
    <item>
      <title>First Hand Guide to Signoz Observability</title>
      <dc:creator>sunilkumarpradhan</dc:creator>
      <pubDate>Sat, 25 Jul 2026 20:22:55 +0000</pubDate>
      <link>https://dev.to/sunilkumarpradhan_47/first-hand-guide-to-signoz-observability-104g</link>
      <guid>https://dev.to/sunilkumarpradhan_47/first-hand-guide-to-signoz-observability-104g</guid>
      <description>&lt;h5&gt;
  
  
  Our SigNoz Quest Log: What Actually Broke While Adding Observability to our Project (This was the name of our project)
&lt;/h5&gt;

&lt;p&gt;Caution: this is not the official setup guide. For that, go to the &lt;a href="https://signoz.io/docs/install/docker/" rel="noopener noreferrer"&gt;SigNoz Docs&lt;/a&gt;. This is our field journal from wiring OpenTelemetry into the Project , our FastAPI/LangGraph agentic pentesting scanner, while running a self-hosted SigNoz stack locally.&lt;/p&gt;

&lt;p&gt;Shoutout to SigNoz. LessssGooooo.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Quest 1:  Why have my containers exited on their own ?
&lt;/h2&gt;

&lt;p&gt;So we had our WSL Running , Docker Desktop was spinning up already , required RAM was free and so was the mentioned ports in the Official Documentation for setting up Signoz locally on our Docker.&lt;/p&gt;

&lt;p&gt;Since it was all new to us, We saw the containers running except few , We thought something was off , cause again it was all new to me. &lt;/p&gt;

&lt;p&gt;We could see the these two containers: &lt;code&gt;telemetrystore-clickhouse-user-scripts&lt;/code&gt;, &lt;code&gt;telemetrystore-migrator&lt;/code&gt; gave me exited status. We could not wrap our heads around this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnxzt2v19k9o2l49k55sy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnxzt2v19k9o2l49k55sy.png" alt="Signoz Observability Tutorial Agentic LLM AI Hackathon" width="800" height="356"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;
  
  
  &lt;center&gt;When we found out stalled containers&lt;/center&gt;
&lt;/h5&gt;



&lt;blockquote&gt;
&lt;p&gt;Did we miss something ? &lt;br&gt;
Did we skip any step ? &lt;br&gt;
Is our brain just a peanut ?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We did some digging around and found out : &lt;/p&gt;

&lt;p&gt;The &lt;code&gt;telemetrystore-clickhouse-user-scripts&lt;/code&gt; container runs ClickHouse setup/user scripts. The &lt;code&gt;telemetrystore-migrator&lt;/code&gt; container runs database/schema migrations for SigNoz. Once their job is done, they exit. That is expected behavior, especially if the exit code is 0.&lt;/p&gt;

&lt;p&gt;Here we also learnt something new , The Docker containers can be of 2 types.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For long running sessions&lt;/li&gt;
&lt;li&gt;For short transient sessions , mainly used to running some setup scripts for rest of the application. (This was our case).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frhfi9rd1pj97d5f2od15.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frhfi9rd1pj97d5f2od15.png" alt="Signoz Observability Tutorial Agentic LLM AI Hackathon" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;
  
  
  &lt;center&gt;When we finally saw Signoz working&lt;/center&gt;
&lt;/h5&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
So Problem 1 fixed and our brains were not peanuts. Hence Proved.&lt;/p&gt;
&lt;h2&gt;
  
  
  Quest 2: We wanted to add Redis Telemetry onto our Platform.
&lt;/h2&gt;

&lt;p&gt;The documentation's pre-requisite said we needed to install this first : OpenTelemetry (OTEL) Collector.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;OTEL Collector is basically the middleman.The collector talks to Redis, picks up signals like memory usage, connected clients etc and sends it to Signoz.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So we went ahead and installed it. Thought we are done , but no.&lt;/p&gt;

&lt;p&gt;The collector was running separately, and so was the Redis.&lt;br&gt;
So when we gave Redis endpoint as &lt;code&gt;localhost:6379&lt;/code&gt;, the collector tried to find Redis inside its own container, not inside our actual Redis container.&lt;/p&gt;

&lt;p&gt;Our current flow : &lt;em&gt;Redis → OpenTelemetry Collector → SigNoz&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So we changed this &lt;code&gt;localhost:6379&lt;/code&gt; to &lt;code&gt;redis:6379&lt;/code&gt; in &lt;code&gt;redis-metrics-collection-config.yaml&lt;/code&gt; . Now everything was communicating and things worked brilliantly.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Quest 3: App Telemetry Was Not Enough
&lt;/h2&gt;

&lt;p&gt;Once traces were flowing, we wanted metrics for the rest of the project component , since our project dealt with scanning and analysis via many open-source tools and LLM. &lt;/p&gt;

&lt;p&gt;A slow scan could be an LLM issue, a bad DB query, Redis pressure, or one tool container quietly eating CPU.&lt;/p&gt;



&lt;p&gt;We used a dedicated &lt;code&gt;otel-collector&lt;/code&gt; for Postgres and Redis:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;postgresql receiver -&amp;gt; Postgres metrics
redis receiver      -&amp;gt; Redis metrics
filelog receiver    -&amp;gt; Postgres/Redis logs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then we added a separate &lt;code&gt;docker-stats-collector&lt;/code&gt; for per-container CPU, memory, and network usage across scanner-tool containers plus &lt;code&gt;core&lt;/code&gt;, &lt;code&gt;worker&lt;/code&gt;, &lt;code&gt;postgres&lt;/code&gt;, and &lt;code&gt;redis&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;We kept it separate because only that collector needed Docker socket access. We had already learned that widening permissions casually is how future-you starts judging past-you.&lt;/p&gt;



&lt;blockquote&gt;
&lt;p&gt;Traces tells us what happened during this request or scan?&lt;br&gt;
Infra metrics tells us was the machine/container/database healthy while it happened?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We need both, otherwise it will all feel like guess work.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Quest 4: Dashboards Became Our Control Room
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Yes , we felt like operating a high stake mission straight from laptops&lt;br&gt;
We created six importable SigNoz dashboard JSON files in:&lt;br&gt;
&lt;/p&gt;


&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;observability/dashboards/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;They covered Scan Pipeline Health, LLM API calls , Operations Overview, Scanner Container Resources, LangGraph/LLM Overview, Postgres, and Redis.&lt;/p&gt;



&lt;p&gt;The dashboards tracked things like per-node p95 latency, execution funnel, error rate, token usage by provider,Redis health, Postgres health, and SSE reconnects.&lt;/p&gt;

&lt;p&gt;But we did not trust labels blindly. For traces, &lt;code&gt;llm.provider&lt;/code&gt; worked well. For our metric &lt;code&gt;project.llm.fallback.count&lt;/code&gt;, the provider label came back as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"provider":"unknown"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So we used trace-level &lt;code&gt;llm.provider&lt;/code&gt; for provider comparison, and grouped fallback metrics by agent instead.&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5s178sevhcpzp0lmhp8r.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5s178sevhcpzp0lmhp8r.jpeg" alt="Signoz Observability Tutorial Agentic LLM AI Hackathon" width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  &lt;center&gt;One of our Dashboards&lt;/center&gt;
&lt;/h5&gt;



&lt;h2&gt;
  
  
  FAQ For New SigNoz Folks
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is the OTEL Collector?&lt;/strong&gt;

Think of it as the middleman. Apps, databases, or receivers send telemetry to it, and it forwards that data to SigNoz.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why does &lt;code&gt;localhost&lt;/code&gt; keep betraying people in Docker?&lt;/strong&gt;

Because inside a container, &lt;code&gt;localhost&lt;/code&gt; means that container itself. Use the service name on the Docker network, like &lt;code&gt;redis:6379&lt;/code&gt; or &lt;code&gt;signoz-ingester:4317&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Do I need ClickHouse knowledge to use SigNoz?&lt;/strong&gt;

Not for normal use. But when you are verifying whether data really landed, knowing how to query SigNoz's ClickHouse store is extremely useful.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Are dashboards enough?&lt;/strong&gt;

No. Dashboards are for looking. Alerts are for being woken up before users notice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Biggest advice?&lt;/strong&gt;

Do not stop at “the app did not crash”. Prove that the telemetry reached SigNoz. Query it, dashboard it, alert on it. Then sleep.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>beginners</category>
      <category>opensource</category>
      <category>agents</category>
    </item>
  </channel>
</rss>
