Versiones

Control de versiones

El control de versiones de la biblioteca de rastreo de Datadog Node.js sigue control de versiones semántico. Cuando se publica una nueva versión principal, se convierte en la línea de publicación principal, donde aterrizan todas las nuevas funciones, correcciones de errores y parches de seguridad. Aquí hay un esquema de lo que constituye cada tipo de cambio de control de versiones semántico:

PrincipalSecundariaParche
Cambios incompatibles con versiones anterioresAñadir cualquier cosa que sea compatible con versiones anteriores (no las interrumpe)Correcciones de seguridad
Cambios en la API incompatibles con versiones anterioresIncorporaciones a la APICorrección de errores
Cambios de funcionalidad incompatibles con versiones anterioresFunciones adicionales
Dejar de dar soporte técnico a, por ejemplo, versiones de Node.js, bibliotecas con soporte técnico u otras funcionesAñadir soporte técnico probado para, por ejemplo, versiones de Node.js, bibliotecas con soporte técnico u otras funciones

Cuando una versión tiene cambios que podrían estar en múltiples categorías de control de versiones semántico, se elige la más alta. Las Notas de lanzamiento se publican con cada versión de GitHub.

Mantenimiento

El modo de mantenimiento es un periodo durante el cual una versión recibe solo correcciones de seguridad y de errores siempre que sea posible, pero no nuevas funciones, salvo en casos concretos. Las versiones principales de dd-trace entran en el modo de mantenimiento cuando se lanza la siguiente versión principal de dd-trace. El periodo de mantenimiento dura un año después de la fecha de lanzamiento de la versión posterior.

Por ejemplo, si la versión 5.0.0 de dd-trace se lanza el 4 de mayo de 2023, la línea de versiones 4.x.x tendrá soporte técnico en el modo de mantenimiento hasta el 4 de mayo de 2024. Durante este periodo de modo de mantenimiento, se aplicarán parches de seguridad y errores siempre que sea posible.

Si tienes alguna pregunta o duda sobre nuestro soporte técnico para una versión concreta de dd-trace-js, ponte en contacto con el servicio de soporte técnico para hablar de ello.

Soporte técnico de versiones de Node.js

Cuando el proyecto Node.js deja de dar soporte técnico a una línea de versión principal LTS (cuando pasa a EOL), se le deja de dar soporte técnico en la siguiente versión principal de dd-trace. La última línea de versión principal que da soporte técnico de la biblioteca de dd-trace brinda soporte técnico a esa versión EOL de Node.js durante por lo menos otro año en el modo de mantenimiento.

Algunos problemas no pueden resolverse en dd-trace y deben solucionarse en Node.js. Cuando esto ocurre y la versión de Node.js en cuestión es EOL, no es posible resolver el problema sin pasar a otra versión que no sea EOL. En Datadog no se realizan nuevas versiones de dd-trace para ofrecer soporte técnico para las líneas de versiones principales de Node.js que no son LTS (versiones impares).

Para obtener el mejor nivel de soporte técnico, ejecuta siempre la última versión LTS de Node.js, y la última versión principal de dd-trace. Sea cual sea la línea de lanzamiento de Node.js que utilices, utiliza también la última versión de Node.js en esa línea de lanzamiento, para asegurarte de que tenga las últimas correcciones de seguridad.

Para más información sobre la versión de Node.js, consulta la documentación oficial de Node.js.

Soporte técnico de sistemas operativos

Los siguientes sistemas operativos tienen soporte técnico oficial de dd-trace. Es probable que cualquier sistema operativo que no aparezca en la lista siga funcionando, pero con algunas funciones ausentes, por ejemplo ASM, perfilado y métricas de tiempo de ejecución. Hablando en general, se brinda soporte técnico a los sistemas operativos que se mantienen activamente en el momento del lanzamiento inicial de una versión principal.

Versión de dd-traceSistema operativoArquitecturasVersiones mínimas
3.xLinux (glibc)arm, arm64, x64CentOS 7, Debian 9, RHEL 7, Ubuntu 14.04
Linux (musl)arm, arm64, x64Alpine 3.13
macOSarm64, x64Catalina (10.15)
Windowsia32, x64Windows 8.1, Windows Server 2012
2.xLinux (glibc)arm, arm64, ia32, x64CentOS 7, Debian 9, RHEL 7, Ubuntu 14.04
Linux (musl)arm, arm64, ia32, x64Alpine 3.10
macOSarm64, x64Yosemite (10.10)
Windowsia32, x64Windows 8.1, Windows Server 2012

Integraciones con soporte técnico

APM proporciona Instrumentación predefinida para muchos marcos de trabajo populares y bibliotecas mediante un sistema de extensiones. Para solicitar soporte técnico para un módulo que no está en la lista, contacta con nuestro impresionante equipo de soporte técnico.

Para obtener más información sobre cómo intercambiar y configurar las extensiones, restaura la documentación de la API.

Compatibilidad con marcos web

MóduloVersionesTipo de soporte técnicoNotas
connect>=2Totalmente compatible
express>=4Totalmente compatibleCompatible con Sails, Loopback y más
fastify>=1Totalmente compatible
graphql>=0.10Totalmente compatibleCompatible con Apollo Server y express-graphql
graphql-yoga>=3.6.0Totalmente compatibleCompatible con el ejecutor graphql-yoga v3
gRPC>=1.13Totalmente compatible
hapi>=2Totalmente compatibleAdmite versiones [@hapi/hapi] >=17.9
koa>=2Totalmente compatible
microgateway-core>=2.1Totalmente compatibleBiblioteca de núcleo para Apigee Edge. La compatibilidad con la CLI edgemicro requiere la aplicación de parches estáticos mediante @Datadog/cli.
moleculer>=0.14Totalmente compatible
next>=9.5Totalmente compatibleConsulta la nota sobre el uso de Complex framework.

El rastreador admite las siguientes funciones de Next.js:
  • Standalone (output: 'standalone')
  • App Router
  • Middleware: no rastreado, utiliza las versiones del rastreador 4.18.0 y 3.39.0 o superiores para obtener la mejor experiencia.
paperplane>=2.3Totalmente compatibleNo se admite en modo sin servidor
restify>=3Totalmente compatible

Uso de marco complejo

Algunos marcos de Node.js modernos y complejos, como Next.js y Nest.js, proporcionan su propio punto de entrada a una aplicación. Por ejemplo, en lugar de ejecutar node app.js, puede que necesites ejecutar next start. En estos casos, el punto de entrada es un archivo que viene en el paquete de marco, no un archivo local de la aplicación (app.js).

Cargar el rastreador de Datadog al principio del código de la aplicación no es efectivo porque el marco podría haber cargado ya módulos que deberían instrumentarse.

Para cargar el rastreador antes que el marco, utiliza uno de los siguientes métodos:

Antepón a todos los comandos que ejecutes una variable entorno:

NODE_OPTIONS='--require dd-trace/init' npm start

O bien, modifica el archivo `package.json` si sueles iniciar una aplicación con scripts de ejecución npm o yarn:

```plain
    // comando existente
    "start": "next start",

    // comando sugerido
    "start": "node --require dd-trace/initialize ./node_modules/next start",
    "start": "NODE_OPTIONS='--require dd-trace/initialize' ./node_modules/next start",

Nota: Los ejemplos anteriores utilizan Next.js, pero el mismo enfoque se aplica a otros marcos con puntos de entrada personalizados, como Nest.js. Adapta los comandos a tu marco y configuración específicos. Cualquiera de los comandos debería funcionar, pero el uso de NODE_OPTIONS también se aplica a cualquier proceso secundario de Node.js.

Compatibilidad con módulos nativos

MóduloTipo de soporte técnicoNotas
dnsTotalmente compatible
httpTotalmente compatible
httpsTotalmente compatible
http2Compatibilidad parcialActualmente solo se admiten clientes HTTP2 y no servidores.
netTotalmente compatible

Compatibilidad con almacenes de datos

MóduloVersionesTipo de soporte técnicoNotas
cassandra-driver>=3Totalmente compatible
couchbase^2.4.2Totalmente compatible
elasticsearch>=10Totalmente compatibleCompatible con las versiones de @elastic/elasticsearch >=5
ioredis>=2Totalmente compatible
knex>=0.8Totalmente compatibleEsta integración es solo para la propagación de contexto
mariadb>=3Totalmente compatible
memcached>=2.2Totalmente compatible
mongodb-core>=2Totalmente compatibleCompatible con Mongoose
mysql>=2Totalmente compatible
mysql2>=1Totalmente compatible
oracledb>=5Totalmente compatible
pg>=4Totalmente compatibleAdmite pg-native cuando se utiliza con pg
redis>=0.12Totalmente compatible
sharedb>=1Totalmente compatible
tedious>=1Totalmente compatibleControlador de SQL Server para mssql y sequelize

Compatibilidad con Worker

MóduloVersionesTipo de soporte técnicoNotas
@google-cloud/pubsub>=1.2Totalmente compatible
amqp10>=3Totalmente compatibleCompatible con brokers AMQP 1.0 (como ActiveMQ o Apache Qpid)
amqplib>=0.5Totalmente compatibleCompatible con brokers AMQP 0.9 (como RabbitMQ o Apache Qpid)
generic-pool>=2Totalmente compatible
kafkajs>=1.4Totalmente compatible
rhea>=1Totalmente compatible

Compatibilidad con SDK

MóduloVersionesTipo de soporte técnicoNotas
aws-sdk>=2.1.35Totalmente compatibleCloudWatch, DynamoDB, Kinesis, Redshift, S3, SNS, SQS y solicitudes genéricas.
openai3.xTotalmente compatible

Compatibilidad con biblioteca Promise

MóduloVersionesTipo de soporte ténico
bluebird>=2Totalmente compatible
promise>=7Totalmente compatible
promise-js>=0.0.3Totalmente compatible
q>=1Totalmente compatible
when>=3Totalmente compatible

Compatibilidad con registradores

MóduloVersionesTipo de soporte técnico
bunyan>=1Totalmente compatible
paperplane>=2.3.2Totalmente compatible
pino>=2Totalmente compatible
winston>=1Totalmente compatible

Bibliotecas sin soporte técnico

Fibers

fibers es incompatible con async_hooks, un [módulo] de Node.js60 utilizado por dd-trace-js para rastrear contextos asíncronos asegurando así un rastreo preciso. Las interacciones entre fibers y async_hooks pueden dar lugar a bloqueos imprevisibles y comportamientos indefinidos. Así, el uso de dd-trace-js con aplicaciones que invocan fibers directa o indirectamente a través de marcos como Meteor puede derivar en inestabilidad (bloqueos) o rastreo incorrecto.

Para más información o para debatir deja un comentario en este tema de github o ponte en contacto con el servicio de soporte técnico para seguir hablando.

Leer más

Más enlaces, artículos y documentación útiles: