<?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: senthilkumar sugumar</title>
    <description>The latest articles on DEV Community by senthilkumar sugumar (@senthilkumar3282).</description>
    <link>https://dev.to/senthilkumar3282</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3249757%2F3fbc40a1-020e-4751-90c2-71b341c36442.jpg</url>
      <title>DEV Community: senthilkumar sugumar</title>
      <link>https://dev.to/senthilkumar3282</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/senthilkumar3282"/>
    <language>en</language>
    <item>
      <title>Building a Fullstack E-Commerce Platform with Node.js, React, and Grafana Observability</title>
      <dc:creator>senthilkumar sugumar</dc:creator>
      <pubDate>Tue, 24 Jun 2025 10:52:42 +0000</pubDate>
      <link>https://dev.to/senthilkumar3282/building-a-fullstack-e-commerce-platform-with-nodejs-react-and-grafana-observability-2a45</link>
      <guid>https://dev.to/senthilkumar3282/building-a-fullstack-e-commerce-platform-with-nodejs-react-and-grafana-observability-2a45</guid>
      <description>&lt;p&gt;In this post, I’ll walk you through the design and implementation of a full-fledged e-commerce platform built using &lt;strong&gt;Node.js microservices&lt;/strong&gt; and a &lt;strong&gt;ReactJS frontend&lt;/strong&gt;, complete with distributed tracing and observability via &lt;strong&gt;Grafana Tempo&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Tech Stack
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Backend (Microservices)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Node.js + Express&lt;/strong&gt; for individual microservices&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MongoDB&lt;/strong&gt; for persistent storage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redis&lt;/strong&gt; for session and cart caching&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kafka&lt;/strong&gt; for inter-service communication&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenTelemetry&lt;/strong&gt; for distributed tracing&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Frontend
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ReactJS&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redux Toolkit + RTK Query&lt;/strong&gt; for state management and API calls&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Observability
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OpenTelemetry SDK&lt;/strong&gt; for instrumentation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grafana Tempo&lt;/strong&gt; for tracing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grafana Dashboard&lt;/strong&gt; for visualization&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧩 Microservices Architecture
&lt;/h2&gt;

&lt;p&gt;We follow a modular architecture using Docker Compose:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Auth Service&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Handles user signup, signin, and signout&lt;/li&gt;
&lt;li&gt;JWT-based authentication&lt;/li&gt;
&lt;li&gt;Redis for refresh token/session store&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. &lt;strong&gt;User Service&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Stores and updates user profiles&lt;/li&gt;
&lt;li&gt;Triggered by Kafka event &lt;code&gt;user.registered&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. &lt;strong&gt;Product Service&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Manages product catalog with image uploads&lt;/li&gt;
&lt;li&gt;Stores metadata in MongoDB, images in AWS S3&lt;/li&gt;
&lt;li&gt;Emits events like &lt;code&gt;product.created&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. &lt;strong&gt;Cart Service&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Stores temporary carts in Redis&lt;/li&gt;
&lt;li&gt;Emits &lt;code&gt;cart.checkedout&lt;/code&gt; event&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. &lt;strong&gt;Order Service&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Consumes &lt;code&gt;cart.checkedout&lt;/code&gt;, processes orders&lt;/li&gt;
&lt;li&gt;Persists in MongoDB&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6. &lt;strong&gt;Frontend&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Built with React&lt;/li&gt;
&lt;li&gt;Login/Register, product listing, cart view, order history&lt;/li&gt;
&lt;li&gt;Uses Redux slices and RTK Query&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔎 Observability with Grafana Tempo
&lt;/h2&gt;

&lt;p&gt;To make our system observable, we integrated &lt;strong&gt;OpenTelemetry&lt;/strong&gt; into each Node.js service.&lt;/p&gt;

&lt;h3&gt;
  
  
  Instrumentation Includes:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;@opentelemetry/sdk-node&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@opentelemetry/instrumentation-express&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@opentelemetry/exporter-otlp-http&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Export Path
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Service → OTEL SDK → OTEL Collector → Tempo → Grafana
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Grafana Dashboard
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;View traces by service, span duration, and errors&lt;/li&gt;
&lt;li&gt;Filter by endpoint or user action&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Docker Compose
&lt;/h3&gt;

&lt;p&gt;We use &lt;strong&gt;two Compose files&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;kafka-docker-compose.yml&lt;/code&gt;: for app services&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;docker-compose.yml&lt;/code&gt;: for Grafana, Tempo, OTEL Collector&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To run everything together:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker-compose &lt;span class="nt"&gt;-f&lt;/span&gt; kafka-docker-compose.yml &lt;span class="nt"&gt;-f&lt;/span&gt; docker-compose.yml up &lt;span class="nt"&gt;--build&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ⚙️ Development Flow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Build and start the backend microservices&lt;/li&gt;
&lt;li&gt;Start the frontend React app&lt;/li&gt;
&lt;li&gt;Add OTEL instrumentation to each backend&lt;/li&gt;
&lt;li&gt;Verify trace data in Grafana after making API requests&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🧵 Repository
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/senthilkumar3282/base-setup-nodejs-microservices-reactjs" rel="noopener noreferrer"&gt;https://github.com/senthilkumar3282/base-setup-nodejs-microservices-reactjs&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ Conclusion
&lt;/h2&gt;

&lt;p&gt;This project demonstrates how to build a modular and scalable e-commerce app using Node.js and React, while maintaining full observability using OpenTelemetry and Grafana Tempo.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Observability Journey with OpenTelemetry</title>
      <dc:creator>senthilkumar sugumar</dc:creator>
      <pubDate>Fri, 06 Jun 2025 16:17:03 +0000</pubDate>
      <link>https://dev.to/senthilkumar3282/observability-journey-with-opentelemetry-20h4</link>
      <guid>https://dev.to/senthilkumar3282/observability-journey-with-opentelemetry-20h4</guid>
      <description>&lt;p&gt;&lt;em&gt;By Senthilkumar Sugumar&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As a full-stack developer working on distributed systems and cloud-native applications, I recently embarked on a journey to master &lt;strong&gt;OpenTelemetry&lt;/strong&gt; — an open-source observability framework that unifies logs, metrics, and traces in a vendor-neutral format.&lt;/p&gt;

&lt;p&gt;From local Node.js development to Kubernetes deployment on Amazon EKS, and from exporting telemetry to Grafana Cloud and Elastic Cloud, I explored how OpenTelemetry can provide end-to-end observability across an entire system.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 What is OpenTelemetry?
&lt;/h2&gt;

&lt;p&gt;OpenTelemetry (OTel) is a standardized framework for instrumenting, generating, collecting, and exporting telemetry data:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Traces&lt;/strong&gt;: Follow the flow of requests across microservices
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Metrics&lt;/strong&gt;: Monitor application and system health
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logs&lt;/strong&gt;: Capture contextual outputs and events&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🛠️ Manual vs Automatic Instrumentation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔧 Manual Instrumentation
&lt;/h3&gt;

&lt;p&gt;Using SDKs like &lt;code&gt;@opentelemetry/sdk-node&lt;/code&gt;, developers explicitly define spans, metrics, and logs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const span = tracer.startSpan('get-user');
// Your business logic here
span.end();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
`&lt;/p&gt;

&lt;p&gt;✅ &lt;em&gt;Pros&lt;/em&gt;: More control over what gets tracked&lt;br&gt;
❌ &lt;em&gt;Cons&lt;/em&gt;: More boilerplate and maintenance&lt;/p&gt;




&lt;h3&gt;
  
  
  ⚙️ Automatic Instrumentation
&lt;/h3&gt;

&lt;p&gt;Use auto-instrumentation tools for popular frameworks like Express:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;node --require @opentelemetry/auto-instrumentations-node/register app.js&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;✅ &lt;em&gt;Pros&lt;/em&gt;: Quick setup, zero code changes&lt;br&gt;
❌ &lt;em&gt;Cons&lt;/em&gt;: Limited customization options&lt;/p&gt;




&lt;h2&gt;
  
  
  🔁 Telemetry Lifecycle
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Telemetry Types&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Application&lt;/td&gt;
&lt;td&gt;SDKs, Auto-instrumentation&lt;/td&gt;
&lt;td&gt;Traces, Metrics, Logs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Host/Node&lt;/td&gt;
&lt;td&gt;OTEL Agent (hostmetrics, filelog)&lt;/td&gt;
&lt;td&gt;CPU, Memory, Disk, Logs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kubernetes&lt;/td&gt;
&lt;td&gt;OTEL Operator, Sidecars&lt;/td&gt;
&lt;td&gt;Pod, Node, Container&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud Providers&lt;/td&gt;
&lt;td&gt;AWS, GCP, Azure Receivers&lt;/td&gt;
&lt;td&gt;Cloud-specific metrics&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All of this data is centralized and processed using the &lt;strong&gt;OpenTelemetry Collector&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧰 OpenTelemetry Collector: The Heart of Observability
&lt;/h2&gt;

&lt;p&gt;The OTEL Collector &lt;strong&gt;receives&lt;/strong&gt;, &lt;strong&gt;processes&lt;/strong&gt;, and &lt;strong&gt;exports&lt;/strong&gt; telemetry data.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Receivers&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Ingest telemetry (OTLP, Prometheus, Jaeger, etc.)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Processors&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Enrich/filter data (batching, resource attribution)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Exporters&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Send to backends (Grafana, Elastic, etc.)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Extensions&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Add health checks, authentication, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  📦 Collector Distributions
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Core&lt;/td&gt;
&lt;td&gt;Basic exporters like OTLP, Prometheus, Jaeger&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Contrib&lt;/td&gt;
&lt;td&gt;Extras: hostmetrics, filelog, Kafka, AWS, Elastic, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  📈 My Learning Path – Real-World Projects
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🧪 1. Basic OTEL SDK with Node.js
&lt;/h3&gt;

&lt;p&gt;🔗 GitHub: &lt;a href="https://github.com/senthilkumar3282/opentelemetry-nodejs" rel="noopener noreferrer"&gt;&lt;code&gt;opentelemetry-nodejs&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Used &lt;code&gt;@opentelemetry/sdk-node&lt;/code&gt; for manual instrumentation&lt;/li&gt;
&lt;li&gt;Exported traces to Jaeger, metrics to Prometheus&lt;/li&gt;
&lt;li&gt;Local OTEL Collector setup&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ &lt;em&gt;Takeaway&lt;/em&gt;: Learned core SDK usage, span creation, and OTLP export setup&lt;/p&gt;




&lt;h3&gt;
  
  
  🌐 2. Grafana Cloud Integration with Node.js
&lt;/h3&gt;

&lt;p&gt;🔗 GitHub: &lt;a href="https://github.com/senthilkumar3282/OpenTelemetry-Node.js-App-with-Grafana-Cloud-Integration" rel="noopener noreferrer"&gt;&lt;code&gt;OpenTelemetry-Node.js-App-with-Grafana-Cloud-Integration&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exported traces to Grafana Tempo, metrics to Grafana Cloud&lt;/li&gt;
&lt;li&gt;Used OTLP HTTP exporter with basic auth&lt;/li&gt;
&lt;li&gt;Configured OTEL Collector for secure pipeline&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ &lt;em&gt;Takeaway&lt;/em&gt;: Experience with remote observability and secure telemetry flows&lt;/p&gt;




&lt;h3&gt;
  
  
  📦 3. Full Observability with Elastic APM + ELK
&lt;/h3&gt;

&lt;p&gt;🔗 GitHub: &lt;a href="https://github.com/senthilkumar3282/openTelemetry-elastic-APM-nodejs" rel="noopener noreferrer"&gt;&lt;code&gt;openTelemetry-elastic-APM-nodejs&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sent traces to Elastic APM&lt;/li&gt;
&lt;li&gt;Used Logstash for log ingestion into Elasticsearch&lt;/li&gt;
&lt;li&gt;Visualized telemetry in Kibana&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ &lt;em&gt;Takeaway&lt;/em&gt;: Full-stack telemetry system using Elastic APM + ELK&lt;/p&gt;




&lt;h3&gt;
  
  
  ☁️ 4. OpenTelemetry on Kubernetes with FastAPI
&lt;/h3&gt;

&lt;p&gt;🔗 GitHub: &lt;a href="https://github.com/senthilkumar3282/fastapi-otel-eks" rel="noopener noreferrer"&gt;&lt;code&gt;fastapi-otel-eks&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deployed FastAPI on Amazon EKS&lt;/li&gt;
&lt;li&gt;Used OTEL SDK + &lt;code&gt;opentelemetry-instrument&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Enabled auto-instrumentation with OTEL Kubernetes Operator&lt;/li&gt;
&lt;li&gt;Exported to Elastic Cloud via OTLP and API key&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ &lt;em&gt;Takeaway&lt;/em&gt;: Production-grade observability in Kubernetes&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 Common Challenges I Faced
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;YAML syntax errors and pipeline misconfigurations in the Collector&lt;/li&gt;
&lt;li&gt;Missing telemetry due to incorrect API keys or OTLP endpoints&lt;/li&gt;
&lt;li&gt;&lt;p&gt;While setting up Grafana, Prometheus, Jaeger, and the ELK stack locally with Docker for a Node.js app, I faced several dependency issues and ELK authentication problems—especially with the APM setup.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;However, when I switched to cloud services, both auto and manual instrumentation worked smoothly with Elastic and Grafana Cloud using Docker-based Node.js applications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Later, I explored OpenTelemetry on Kubernetes by deploying a Python (FastAPI) application integrated with Elastic Cloud. Initially, I was able to collect server-level metrics and logs using Elastic Agents, but I didn’t receive application-level traces. To fix this, I added OpenTelemetry API-based instrumentation in the Python app, which enabled me to capture application-level metrics, traces, and logs successfully.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧵 Repository Recap
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Use Case&lt;/th&gt;
&lt;th&gt;GitHub Repo&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Basic Node.js OTEL SDK&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/senthilkumar3282/opentelemetry-nodejs" rel="noopener noreferrer"&gt;&lt;code&gt;opentelemetry-nodejs&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Grafana Cloud Integration&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/senthilkumar3282/OpenTelemetry-Node.js-App-with-Grafana-Cloud-Integration" rel="noopener noreferrer"&gt;&lt;code&gt;OpenTelemetry-Node.js-App-with-Grafana-Cloud-Integration&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Elastic APM + Logs&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/senthilkumar3282/openTelemetry-elastic-APM-nodejs" rel="noopener noreferrer"&gt;&lt;code&gt;openTelemetry-elastic-APM-nodejs&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FastAPI + EKS + Elastic&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/senthilkumar3282/fastapi-otel-eks" rel="noopener noreferrer"&gt;&lt;code&gt;fastapi-otel-eks&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  💡 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;OpenTelemetry has transformed how I monitor, debug, and operate distributed apps. Whether it's a monolith or microservices on Kubernetes, OTEL gives me the visibility I need — across any stack.&lt;/p&gt;

&lt;p&gt;Observability isn’t just about tools — it’s about empowering developers to deeply understand their systems.&lt;/p&gt;




&lt;h2&gt;
  
  
  📫 Let’s Connect
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🔗 &lt;a href="https://github.com/senthilkumar3282" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💼 &lt;a href="https://www.linkedin.com/in/senthilkumar-sugumar-11030715" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for reading! 🌟&lt;/p&gt;

</description>
      <category>opentelemetry</category>
      <category>observability</category>
      <category>kubernetes</category>
    </item>
  </channel>
</rss>
