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.

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Engage with a sea of insights in this enlightening article, highly esteemed within the encouraging DEV Community. Programmers of every skill level are invited to participate and enrich our shared knowledge.

A simple "thank you" can uplift someone's spirits. Express your appreciation in the comments section!

On DEV, sharing knowledge smooths our journey and strengthens our community bonds. Found this useful? A brief thank you to the author can mean a lot.

Okay