OpenTelemetry JavaScript SDK 3.0 منتشر شد؛ پایان پشتیبانی از Node.js 18 و 20

چرا مهم است

اگر از OpenTelemetry در JavaScript استفاده می‌کنی، این ارتقا حداقل Node.js را تغییر می‌دهد و بعضی package‌ها و نام‌های عمومی را حذف یا جابه‌جا می‌کند. در عین حال، Logs هم به جمع signal‌های پایدار رسیده است.

قبل از خواندن، این‌ها را بدان۴ مفهوم
SDK

مجموعه‌ای از ابزارها و package‌ها برای ساخت برنامه یا استفاده از قابلیت‌های یک پلتفرم.

بیشتر درباره این مفهوم

metrics

اندازه‌گیری‌های عددی از وضعیت یا رفتار یک سیستم که معمولاً در طول زمان جمع‌آوری می‌شوند.

بیشتر درباره این مفهوم

ES Module

ساختار استاندارد JavaScript برای جدا کردن برنامه به module‌ها و اشتراک‌گذاری بخش‌های آن با import و export.

بیشتر درباره این مفهوم

zero-code instrumentation

روشی برای جمع‌آوری داده‌های observability از برنامه، بدون نیاز به تغییر مستقیم در کد آن.

بیشتر درباره این مفهوم

OpenTelemetry انتشار JavaScript SDK 3.0 و API 1.10.0 را اعلام کرد. نسخهٔ package‌های پایدار از 3.0.0 و نسخهٔ package‌های آزمایشی از 0.300.0 آغاز می‌شود. این نسل، package‌های @opentelemetry/* در repository با نام opentelemetry-js را به‌جز API و semantic-conventions در بر می‌گیرد. همهٔ package‌های repository با نام opentelemetry-js-contrib نیز به SDK 3.x ارتقا یافته و منتشر شده‌اند.

مهم‌ترین الزام برای ارتقا، حداقل نسخهٔ Node.js است که اکنون به 22.15.0 رسیده؛ بنابراین Node.js 18 و 20 دیگر پشتیبانی نمی‌شوند. همهٔ package‌ها حالا export مناسب برای ES Module و CommonJS دارند. طبق اعلام پروژه، این تغییر باید استفاده برای کاربران ESM و bundler را آسان‌تر کند.

با تثبیت Logs،؜ هر سه signal اصلی OpenTelemetry در JavaScript،؜ یعنی Traces،؜ metrics و Logs،؜ اکنون پایدار هستند. package با نام @opentelemetry/api-logs در @opentelemetry/api ادغام شده است. همچنین چند package مربوط به Tracing SDK در @opentelemetry/sdk-trace یکپارچه شده‌اند تا برخی API‌های گیج‌کننده حذف شوند و ساختار با SDK‌های signal‌های دیگر هماهنگ باشد.

پشتیبانی از complex attribute نیز به بخش‌هایی از API،؜ از جمله attribute‌های span و log record،؜ اضافه شده است. این پشتیبانی سراسری نیست: attribute‌های resource و metrics همچنان فقط مقدارهای ساده را می‌پذیرند.

این انتشار تغییرات ناسازگار هم دارد. چند type عمومی و نام class تغییر کرده یا جابه‌جا شده‌اند و تعدادی package منسوخ، از جمله @opentelemetry/propagator-jaeger،؜ @opentelemetry/exporter-jaeger،؜ @opentelemetry/shim-opentracing و @opentelemetry/shim-opencensus حذف شده‌اند. بااین‌حال، package اصلی API یعنی @opentelemetry/api تغییر ناسازگار ندارد. کاربرانی هم که @opentelemetry/auto-instrumentations-node را مطابق روش zero-code instrumentation به کار می‌برند، نیازی به تغییر ندارند.

نسخه‌های 2.x از package‌های پایدار SDK تا یک سال پس از انتشار 3.0.0 پشتیبانی می‌شوند. تیم پروژه از زمان SDK 2.0 در مارس ۲۰۲۵، انتشار تقریباً سالانهٔ یک نسخهٔ major را هدف گرفته است تا با نسخه‌های جدید Node.js و تغییرات ابزارهای JavaScript همگام بماند. برای مهاجرت به 3.x و 0.300.x،؜ راهنمای مهاجرت جزئیات تغییرات ناسازگار و فهرست کامل package‌های حذف‌شده را توضیح می‌دهد.

نکته کلیدی

پیش از ارتقا، نسخهٔ Node.js و وابستگی‌هایت را با راهنمای مهاجرت تطبیق بده. تغییرات SDK را با API یکی نگیر: @opentelemetry/api تغییر ناسازگار ندارد و روش اعلام‌شدهٔ zero-code instrumentation هم نیازی به تغییر ندارد.

خواندن مقاله اصلی (در زبانه‌ی جدید باز می‌شود)
برچسب‌ها (۴)