DEV Community

Cover image for Node.js Projelerinde OpenTelemetry ile Default Olarak Toplanmayan Verilerin OpenTelemetrye Eklenmesi
Talha Namaldı for Açıklab

Posted on

2

Node.js Projelerinde OpenTelemetry ile Default Olarak Toplanmayan Verilerin OpenTelemetrye Eklenmesi

Giriş

Bu yazıda OpenTelemetry uygulamasının izlediği verilerin yanında farklı bir veri izlemek istersek bunu OpenTelemetrye yeni bir span olarak nasıl ekleyebileceğimizi ele alacağım.

Adımlar

Oluşturduğum yapı projenin her yerinden OpenTelemetrye izlemek istediğimiz veriyi göndermeye olanak sağlar.

1. Yeni Bir Dosya Oluşturun

OpenTelemetrye projenin herhangi bir yerinden veri göndermek için span.js adlı bir dosya oluşturun.

Bu dosyanın içine aşağıdaki kodu kopyalayıp yapıştırın.

const { context, trace } = require("@opentelemetry/api");

const addSpanAttribute = (req, res, next) => {
  res.addSpanData = (spanName,data) => {
    const currentSpan = trace.getSpan(context.active());
    if (currentSpan) {
      currentSpan.setAttribute(spanName, JSON.stringify(data));
    }
  };
  next();
};

module.exports = addSpanAttribute;

Enter fullscreen mode Exit fullscreen mode

Bu kod parçası OpenTelemetrynin context ve trace modüllerini kullanır. context aktif olan izleme bağlamını yönetmek için kullanılır trace ise izleme spanleri ile etkileşime geçmek için kullanılır.

addSpanAttribute fonksiyonu ile HTTP isteklerini işleyeceğiz.

Sonrasında response objesine addSpanData adında yeni bir fonksiyon tanımladım. Bu fonksiyon spana izlemek istediğimiz veriyi ekler. res.addSpanData fonksiyonu ile izlemek istediğimiz datayı istediğimiz isimle yeni bir span olarak OpenTelemtrye ekleyebiliriz.

2. App.js Dosyasını Düzenleyin

Öncelikle yeni eklediğimiz fonksiyonu require edin.

const addSpanAttribute = require("./app/spans/span");

Ardından app.use ile kullanıma açın.

app.use(addSpanAttribute);

3. Respons Objesine Eklenen Foksiyonun Kullanımı

İlk 2 adımı tamaladıktan sonra OpenTelemetrye veri göndermek son derece kolay.

Projenizin herhangi bir yerinden res.addSpanData('span_ismi',data)

şeklinde kullanabilirsiniz.

Örnek kullanım:

Kendi projemde http post fonkiyonuna gelen body verisini ve post fonsiyonunun sonucunda izlemek istediğim ifadeleri içeren datayı hazırlayıp res.addSpanData fonksiyonu ile OpenTelemetrye gönderdim.

Http post fonksiyonuna gelen bodyi OpenTelemetrye gönderdim:
res.addSpanData(req.body,'http.request.body')

Post işlemini tamamladıktan sonra ise takip etmek istediğim datayı hazırlayıp OpenTelemetrye gönderdim.

const formattedResponse = {
  userId: user.user_id,
  userName: user.name
};
res.addSpanData(formattedResponse,'http.response.post');
Enter fullscreen mode Exit fullscreen mode

Bu örnek kullanım ile hazırladığımız datayı OpenTelemetrye gönderip izleyebiliriz.

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay