Back to Projects

Express Open Telemetry

Sebuah aplikasi Node.js Express yang dilengkapi dengan OpenTelemetry, terintegrasi dengan Language SDK, Grafana Tempo, Grafana, dan PostgreSQL, yang dijalankan menggunakan Docker Compose.

Express Open Telemetry - Image 1
0 views
2 min read

Project Overview

Express Open Telemetry adalah sebuah aplikasi contoh berbasis Node.js (Express) yang di-instrument menggunakan OpenTelemetry untuk mendemonstrasikan distributed tracing pada sistem backend modern. Project ini mengintegrasikan OpenTelemetry SDK, Grafana Tempo, Grafana, dan PostgreSQL, yang seluruhnya dijalankan dalam lingkungan Docker Compose.

Fokus utama project ini adalah observability, khususnya distributed tracing, yang merupakan salah satu dari tiga pilar utama observability:

  • Metrics
  • Logs
  • Traces

Latar Belakang & Motivasi

Project ini dibuat berangkat dari rasa penasaran saya terhadap praktik observability modern, terutama bagaimana distributed tracing bekerja pada sistem backend di dunia nyata.

Sebelum mengerjakan project ini, saya sudah memiliki pengalaman praktik dalam mengimplementasikan dua pilar observability lainnya:

Metrics

  • Menggunakan berbagai exporter (Node, MySQL, PostgreSQL, dan lainnya)

  • Prometheus sebagai metrics server

  • Melakukan riset dan implementasi Thanos untuk:

    • Clustering Prometheus
    • High availability (HA)
    • Load balancing antar instance Prometheus
    • Long-term storage menggunakan backend S3-compatible (MinIO)

Logs

  • Menggunakan Grafana Alloy sebagai agent
  • Centralized logging menggunakan Grafana Loki
  • Mengimplementasikan mekanisme remote write ke centralized log server

Namun, saya belum mengeksplorasi trace-based observability secara mendalam. Hal ini memunculkan pertanyaan utama:

Bagaimana cara kerja distributed tracing secara end-to-end, mulai dari instrumentation di aplikasi hingga visualisasi trace di Grafana?


Problem Statement

Melalui project ini, saya bertujuan untuk memahami:

  • Bagaimana OpenTelemetry instrumentation bekerja pada aplikasi Express.js
  • Bagaimana data trace dikumpulkan dari aplikasi
  • Bagaimana trace dikirim dari agent ke tracing backend
  • Bagaimana Trace ID dihasilkan dan dipropagasikan antar request
  • Bagaimana melakukan query trace menggunakan TraceQL di Grafana Tempo
  • Bagaimana distributed tracing membantu proses analisis performa dan debugging

Pendekatan Solusi

Untuk menjawab pertanyaan-pertanyaan tersebut, saya membangun sebuah pipeline distributed tracing end-to-end dengan pendekatan berikut:

1. Instrumentasi Aplikasi

  • Meng-instrument aplikasi Express.js menggunakan OpenTelemetry SDK

  • Mengaktifkan manual instrumentation untuk:

    • HTTP request
    • Query database PostgreSQL
  • Propagasi trace context dilakukan secara manual antar request

2. Tracing Backend

  • Menggunakan Grafana Tempo sebagai tracing backend
  • Bertanggung jawab untuk menerima, menyimpan, dan mengelola data trace
  • Mendukung query trace yang fleksibel menggunakan TraceQL

3. Visualisasi & Analisis

  • Grafana berperan sebagai layer visualisasi utama

  • Trace dapat:

    • Dicari berdasarkan Trace ID
    • Difilter dan dianalisis menggunakan TraceQL
    • Divisualisasikan untuk melihat alur request, latency, dan dependensi antar service

4. Lingkungan Pengembangan Lokal

  • Seluruh service dijalankan menggunakan Docker Compose
  • Memudahkan proses setup, testing, dan eksplorasi distributed tracing secara lokal

What I Learned

Dari project ini, saya mendapatkan pemahaman praktikal terkait:

  • Konsep dasar distributed tracing

  • Cara kerja OpenTelemetry sebagai standar observability yang bersifat vendor-neutral

  • Alur lengkap data tracing:

  • Peran tracing dalam:

    • Debugging masalah latency
    • Mengidentifikasi bottleneck performa
    • Memahami alur request antar service
  • Penggunaan TraceQL untuk melakukan query dan analisis trace secara efisien


Mengapa Project Ini Penting

Project ini bukan sekadar contoh implementasi, tetapi merupakan eksplorasi praktis terhadap distributed tracing pada sistem backend.

Dengan distributed tracing:

  • Proses debugging tidak lagi hanya bergantung pada log
  • Root cause analysis menjadi lebih cepat dan akurat
  • Dependensi antar service dapat dipahami secara visual

Kesimpulan

Express Open Telemetry merepresentasikan eksplorasi langsung saya terhadap distributed tracing dan tooling observability modern. Project ini melengkapi pemahaman saya terhadap tiga pilar observability serta memperkuat skill saya di bidang Backend Engineering, DevOps, dan SRE.

More or Related Projects

BuildWithAngga Backend
November 30, 2024

BuildWithAngga Backend

Sistem backend berbasis Laravel untuk platform edukasi, menampilkan fitur saved articles, clean architecture, dan praktik testing yang komprehensif.

00
Tools:
+5
Finboost Backend
May 10, 2024

Finboost Backend

Layanan backend berbasis cloud untuk aplikasi mobile yang menyediakan autentikasi, fitur chat, dan kapabilitas berbasis AI.

0000
Tools:
+8
Gis Application
November 17, 2025

Gis Application

Sebuah aplikasi GIS yang dibangun menggunakan React.js, Leaflet.js, dan Golang untuk menampilkan data geografis secara interaktif pada peta web. Proyek ini juga dilengkapi dengan pipeline CI otomatis menggunakan GitHub Actions untuk pengujian, pembangunan, dan pengiriman gambar kontainer ke GitHub Container Registry.

0000
Tools:
+5