All notable changes to experimental packages in this project will be documented in this file.
- feat(otlp-exporter-base)!: collapse base classes into one #5031 @pichlermarc
OTLPExporterNodeBase
has been removed in favor of a platform-agnostic implementation (OTLPExporterBase
)OTLPExporterBrowserBase
has been removed in favor of a platform-agnostic implementation (OTLPExporterBase
)ExportServiceError
was intended for internal use and has been dropped from exportsvalidateAndNormalizeHeaders
was intended for internal use and has been dropped from exportsOTLPExporterBase
all properties are now private, the constructor now takes anIOTLPExportDelegate
, the type parameter for config type has been dropped.- This type is scheduled for removal in a future version of this package, please treat all exporters as
SpanExporter
,PushMetricExporter
orLogRecordExporter
, based on their respective type.
- This type is scheduled for removal in a future version of this package, please treat all exporters as
- feat(otlp-grpc-exporter-base)!: collapse base classes into one #5031 @pichlermarc
OTLPGRPCExporterNodeBase
has been removed in favor of a platform-agnostic implementation (OTLPExporterBase
from@opentelemetry/otlp-exporter-base
)
- feat(otlp-transformer)!: accept
ResourceMetrics
in serializers instead ofResourceMetrics[]
- (user-facing):
ProtobufMetricsSerializer
now only acceptsResourceMetrics
instead ofResourceMetrics[]
to align withPushMetricExporter
requirements - (user-facing):
JsonMetricsSerializer
now only acceptsResourceMetrics
instead ofResourceMetrics[]
to align withPushMetricExporter
requirements
- (user-facing):
- feat(otlp-transformer)!: remove internal types and functions from public API @pichlermarc
- (user-facing): the following types and functions were intended for internal use and have been removed from exports
OtlpEncodingOptions
IKeyValueList
IKeyValue
IInstrumentationScope
IArrayValue
LongBits
IAnyValue
Fixed64
SpanContextEncodeFunction
toLongBits
OptionalSpanContextEncodeFunction
getOtlpEncoder
Encoder
HrTimeEncodeFunction
encodeAsLongBits
encodeAsString
hrTimeToNanos
IValueAtQuantile
ISummaryDataPoint
ISummary
ISum
IScopeMetrics
IResourceMetrics
INumberDataPoint
IHistogramDataPoint
IHistogram
IExponentialHistogramDataPoint
IExponentialHistogram
IMetric
IGauge
IExemplar
EAggregationTemporality
IExportMetricsServiceRequest
IBuckets
IResource
IStatus
EStatusCode
ILink
IEvent
IScopeSpans
ISpan
IResourceSpans
ESpanKind
IExportTraceServiceRequest
IScopeLogs
IExportLogsServiceRequest
IResourceLogs
ILogRecord
ESeverityNumber
createExportTraceServiceRequest
createExportMetricsServiceRequest
createExportLogsServiceRequest
- (user-facing): the following types and functions were intended for internal use and have been removed from exports
- feat(otlp-exporter-base): handle OTLP partial success #5183 @pichlermarc
- feat(otlp-exporter-base): internally accept a http header provider function only #5179 @pichlermarc
- refactor(otlp-exporter-base): don't create blob before sending xhr #5193 @pichlermarc
- improves compatibility with some unsupported runtimes
- feat(otlp-exporter-base): add http response body to exporter error #5204 @pichlermarc
- fix(otlp-exporter-*): de-confuse Nuxt build tooling by not using 'export *' in comments #5227 @pichlermarc
- chore(otlp-exporter-*-grpc): clean up tests #5196 @pichlermarc
- chore(otlp-exporter-*-http): clean up tests #5196 @pichlermarc
- chore(otlp-exporter-*-proto): clean up tests #5196 @pichlermarc
- feat(instrumentation-http)!: reduce public API surface by removing exports and making protected methods private #5124 @pichlermarc
- (user-facing) the following exports were intended for internal use only and have been removed without replacement
- extractHostnameAndPort
- getAbsoluteUrl
- getIncomingRequestAttributes
- getIncomingRequestAttributesOnResponse
- getIncomingRequestMetricAttributes
- getIncomingRequestMetricAttributesOnResponse
- getOutgoingRequestAttributes
- getOutgoingRequestAttributesOnResponse
- getOutgoingRequestMetricAttributes
- getOutgoingRequestMetricAttributesOnResponse
- getRequestInfo
- headerCapture
- isCompressed
- isValidOptionsType
- parseResponseStatus
- satisfiesPattern
- setAttributesFromHttpKind
- setRequestContentLengthAttribute
- setResponseContentLengthAttribute
- setSpanWithError
- RequestSignature
- RequestFunction
- ParsedRequestOptions
- IgnoreMatcher
- Https
- HttpRequestArgs
- HttpCallbackOptional
- HttpCallback
- Http
- GetFunction
- Func
- Err
- (user-facing) the following exports were intended for internal use only and have been removed without replacement
- feat(sdk-node, sdk-logs): add
mergeResourceWithDefaults
flag, which allows opting-out of resources getting merged with the default resource #4617- default:
true
- note:
false
will become the default behavior in a future iteration in order to comply with specification requirements
- default:
- feat(instrumentation): Track request body size in XHR and Fetch instrumentations #4706 @mustafahaddara
- fix(instrumentation-http): Fix the
OTEL_SEMCONV_STABILITY_OPT_IN
variable check. Usingof
instead ofin
#5137 - fix(instrumentation-http): drop url.parse in favor of URL constructor #5091 @pichlermarc
- fixes a bug where using cyrillic characters in a client request string URL would throw an exception, whereas an un-instrumented client would accept the same input without throwing an exception
- fix(otlp-exporter-base): fix unhandled error when writing to destroyed http request #5163 @pichlermarc
- fix(instrumentation): Fix wrapping ESM files with absolute path #5094 @serkan-ozal
- fix(instrumentation-http): skip malformed forwarded headers. #5095 @pmlanger
- feat(exporter--otlp-)!: rewrite exporter config logic for testability #4971 @pichlermarc
- (user-facing)
getDefaultUrl
was intended for internal use has been removed from all exporters - (user-facing)
getUrlFromConfig
was intended for internal use and has been removed from all exporters - (user-facing)
hostname
was intended for internal use and has been removed from all exporters - (user-facing)
url
was intended for internal use and has been removed from all exporters - (user-facing)
timeoutMillis
was intended for internal use and has been removed from all exporters - (user-facing)
onInit
was intended for internal use and has been removed from all exporters - (user-facing) OTLP exporter config
headers
type changed fromPartial<Record<string, unknown>>
toRecord<string, string>
- (user-facing)
- feat(otlp-exporter-base)!: do not export functions that are intended for internal use #4971 @pichlermarc
- Drops the following functions and types that were intended for internal use from the package exports:
parseHeaders
appendResourcePathToUrl
appendResourcePathToUrlIfNeeded
configureExporterTimeout
invalidTimeout
- Drops the following functions and types that were intended for internal use from the package exports:
- feat(instrumentation-http)!: remove long deprecated options #5085 @pichlermarc
ignoreIncomingPaths
has been removed, use the more versatileignoreIncomingRequestHook
instead.ignoreOutgoingUrls
has been removed, use the more versatileignoreOutgoingRequestHook
instead.isIgnored
utility function was intended for internal use and has been removed without replacement.
- feat(api-logs): Add delegating no-op logger provider #4861 @hectorhdzg
- feat(instrumentation-http): Add support for Semantic Conventions 1.27+ #4940 #4978 #5026 @dyladan
- Applies to client and server spans and metrics
- Generate spans and metrics compliant with Semantic Conventions 1.27+ when
OTEL_SEMCONV_STABILITY_OPT_IN
containshttp
orhttp/dup
- Generate spans and metrics backwards compatible with previous attributes when
OTEL_SEMCONV_STABILITY_OPT_IN
containshttp/dup
or DOES NOT containhttp
- fix(sampler-jaeger-remote): fixes an issue where package could emit unhandled promise rejections @Just-Sieb
- fix(otlp-grpc-exporter-base): default compression to
'none'
if env varsOTEL_EXPORTER_OTLP_TRACES_COMPRESSION
andOTEL_EXPORTER_OTLP_COMPRESSION
are falsy @sjvans - fix(sdk-events): remove devDependencies to old
@opentelemetry/api-logs@0.52.0
,@opentelemetry/api-events@0.52.0
packages #5013 @pichlermarc - fix(sdk-logs): remove devDependencies to old
@opentelemetry/api-logs@0.52.0
#5013 @pichlermarc - fix(sdk-logs): align LogRecord#setAttribute type with types from
@opentelemetry/api-logs@0.53.0
#5013 @pichlermarc - fix(exporter--otlp-): fixes a bug where signal-specific environment variables would not be applied and the trace-specific one was used instead #4971 @pichlermarc
- Fixes:
OTEL_EXPORTER_OTLP_METRICS_COMPRESSION
OTEL_EXPORTER_OTLP_LOGS_COMPRESSION
OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE
OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE
OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY
OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY
OTEL_EXPORTER_OTLP_METRICS_INSECURE
OTEL_EXPORTER_OTLP_LOGS_INSECURE
- Fixes:
- fix(sdk-node): use warn instead of error on unknown OTEL_NODE_RESOURCE_DETECTORS values #5034
- fix(exporter-logs-otlp-proto): Use correct config type in Node constructor
- fix(instrumentation-http): Fix instrumentation of
http.get
,http.request
,https.get
, andhttps.request
when used from ESM code and imported via theimport defaultExport from 'http'
style. #5024 @trentm
-
refactor(exporter-prometheus): replace
MetricAttributes
andMetricAttributeValues
withAttributes
andAttributeValues
#4993 -
refactor(browser-detector): replace
ResourceAttributes
withAttributes
#5004 -
refactor(sdk-logs): replace
ResourceAttributes
withAttributes
#5005 @david-luna
- fix(instrumentation)!:remove unused description property from interface #4847 @blumamir
- feat(exporter--otlp-)!: use transport interface in node.js exporters #4743 @pichlermarc
- (user-facing)
headers
was intended for internal use has been removed from all exporters - (user-facing)
compression
was intended for internal use and has been removed from all exporters - (user-facing)
hostname
was intended for use in tests and is not used by any exporters, it will be removed in a future release
- (user-facing)
- fix(exporter--otlp-)!: ensure
User-Agent
header cannot be overwritten by the user #4743 @pichlermarc- allowing overrides of the
User-Agent
header was not specification compliant.
- allowing overrides of the
- feat(exporter--otlp)!: remove environment-variable specific code from browser exporters
- (user-facing) removes the ability to configure browser exporters by using
process.env
polyfills
- (user-facing) removes the ability to configure browser exporters by using
- feat(sdk-node)!: Automatically configure logs exporter #4740
- feat(exporter--otlp-)!: use transport interface in browser exporters #4895 @pichlermarc
- (user-facing) protected
headers
property was intended for internal use has been removed from all exporters
- (user-facing) protected
- feat(otlp-transformer): Do not limit @opentelemetry/api upper range peerDependency #4816 @mydea
- feat(instrumentation-http): Allow to opt-out of instrumenting incoming/outgoing requests #4643 @mydea
- feat(sampler-jaeger-remote): added support of jaeger-remote-sampler according to this spec #4534 @legalimpurity
- fix(instrumentation): ensure .setConfig() results in config.enabled defaulting to true #4941 @trentm
- fix(instrumentation-http): Ensure instrumentation of
http.get
andhttps.get
work when used in ESM code #4857 @trentm - fix(api-logs): align AnyValue to spec #4893 @blumamir
- fix(instrumentation): remove diag.debug() message for instrumentations that do not patch modules #4925 @trentm
- refactor: Simplify the code for the
getEnv
function #4799 @danstarns - refactor: remove "export *" in favor of explicit named exports #4880 @robbkidd
- Packages updated:
- api-events
- api-logs
- opentelemetry-browser-detector
- opentelemetry-exporter-prometheus
- opentelemetry-instrumentation-fetch
- opentelemetry-instrumentation-http
- opentelemetry-instrumentation-xml-http-request
- opentelemetry-instrumentation
- Packages updated:
- refactor(instrumentation-fetch): move fetch to use SEMATRR #4632
- refactor(otlp-transformer): use explicit exports #4785 @pichlermarc
- fix(sdk-node): register context manager if no tracer options are provided #4781 @pichlermarc
- fix(instrumentation): Update
import-in-the-middle
to fix numerous bugs #4806 @timfish - chore(instrumentation): Use a caret version for
import-in-the-middle
dependency #4810 @timfish
- test: add
npm run maint:regenerate-test-certs
maintenance script and regenerate recently expired test certs #4777
- feat(exporter--otlp-)!: move serialization for Node.js exporters to
@opentelemetry/otlp-transformer
#4542 @pichlermarc- Breaking changes:
- (user-facing)
convert()
now returns an empty object and will be removed in a follow-up - (internal) OTLPExporterNodeBase now has additional constructor parameters that are required
- (internal) OTLPExporterNodeBase now has an additional
ResponseType
type parameter
- (user-facing)
- Breaking changes:
- feat(exporter--otlp-)!: move serialization for Node.js exporters to
@opentelemetry/otlp-transformer
#4581 @pichlermarc- Breaking changes:
- (user-facing)
convert()
has been removed from all exporters - (internal) OTLPExporterBrowserBase:
RequestType
has been replaced by aResponseType
type-argument - (internal) OTLPExporterNodeBase:
ServiceRequest
has been replaced by aServiceResponse
type-argument - (internal) the
@opentelemetry/otlp-exporter-proto-base
package has been removed, and will from now on be deprecated innpm
- (user-facing)
- Breaking changes:
- feat(instrumentation): remove default value for config in base instrumentation constructor #4695: @blumamir
- fix(instrumentation)!: remove unused supportedVersions from Instrumentation interface #4694 @blumamir
- feat(instrumentation)!: simplify
registerInstrumentations()
API- Breaking changes:
- removes
InstrumentationOptions
type - occurrences of
InstrumentationOptions
are now replaced by(Instrumentation | Instrumentation[])[]
- migrate usages of
registerInstrumentations({instrumentations: fooInstrumentation})
toregisterInstrumentations({instrumentations: [fooInstrumentation]})
- passing Instrumentation classes to
registerInstrumentations()
is now not possible anymore.
- migrate usages of
- removes
- Breaking changes:
- feat(sdk-node)!: simplify type of
instrumentations
option- Breaking changes:
- replaces
InstrumentationOptions
with(Instrumentation | Instrumentation[])[]
- replaces
- Breaking changes:
- feat(instrumentation): apply unwrap before wrap in base class #4692
- feat(instrumentation): add util to execute span customization hook in base class #4663 @blumamir
- feat(instrumentation): generic config type in instrumentation base #4659 @blumamir
- feat: support node 22 #4666 @dyladan
- feat(propagator-aws-xray-lambda): add AWS Xray Lambda propagator 4554
- refactor(instrumentation-xml-http-request): use exported strings for semantic attributes. #4681
- refactor(sdk-node): Use tree-shakeable string constants for semconv #4767 @JohannesHuster
- fix(instrumentation): Update
import-in-the-middle
to fix numerous bugs #4745 @timfish
- docs(instrumentation): better docs for supportedVersions option #4693 @blumamir
- docs: align all supported versions to a common format #4696 @blumamir
- refactor(examples): use new exported string constants for semconv in experimental/examples/opencensus-shim #4763 @Zen-cronic
- fix(instrumentation): update import-in-the-middle to 1.7.4
- feat(sdk-node)!: remove long deprecated methods in favor of constructor options #4606 @pichlermarc
NodeSDK.configureTracerProvider()
, please use constructor options insteadNodeSDK.configureMeterProvider()
, please use constructor options insteadNodeSDK.configureLoggerProvider()
, please use constructor options insteadNodeSDK.addResource()
, please use constructor options insteadNodeSDK.detectResources()
, this is not necessary anymore, resources are now auto-detected onNodeSDK.start()
if the constructor optionautoDetectResources
is unset,undefined
ortrue
.
- feat(instrumentation): add patch and unpatch diag log messages #4641
- Instrumentations should not log patch and unpatch messages to diag channel.
- feat!(instrumentation): remove moduleExports generic type from instrumentation registration #4598 @blumamir
- breaking for instrumentation authors that depend on
InstrumentationBase
InstrumentationNodeModuleDefinition
InstrumentationNodeModuleFile
- breaking for instrumentation authors that depend on
- feat(api-events): removed traceId and spanId from Event interface, added context and severityNumber #4629
- feat(sdk-logs): log resource attributes in ConsoleLogRecordExporter #4646 @harelmo-lumigo
- refactor(instrumentation-grpc): move to use SEMATTRS #4633
- feat(otlp-transformer): consolidate scope/resource creation in transformer #4600
- feat(sdk-logs): print message when attributes are dropped due to attribute count limit #4614 @HyunnoH
- feat(sdk-node): add usage for the detector ServiceInstanceIdDetectorSync. #4626 @maryliag
- The resource detector can be added to default resource detector list by adding the value
serviceinstance
to the list of resource detectors on the environment variableOTEL_NODE_RESOURCE_DETECTORS
, e.gOTEL_NODE_RESOURCE_DETECTORS=env,host,os,serviceinstance
- The value can be overwritten by
- merging a resource containing the
service.instance.id
attribute - using another resource detector which writes
service.instance.id
- merging a resource containing the
- The resource detector can be added to default resource detector list by adding the value
- feat(sdk-events): add Events SDK #4629
- fix(otlp-grpc-exporter-base): avoid TypeError on exporter shutdown #4612 @pichlermarc
- fix(instrumentation): Don't use
require
to loadpackage.json
files #4593 @timfish
- fix(exporter-*-otlp-grpc)!: lazy load gRPC to improve compatibility with
@opentelemetry/instrumenation-grpc
#4432 @pichlermarc- Fixes a bug where requiring up the gRPC exporter before enabling the instrumentation from
@opentelemetry/instrumentation-grpc
would lead to missing telemetry - Breaking changes, removes several functions and properties that were used internally and were not intended for end-users
getServiceClientType()
- this returned a static enum value that would denote the export type (
SPAN
,METRICS
,LOGS
)
- this returned a static enum value that would denote the export type (
getServiceProtoPath()
- this returned a static enum value that would correspond to the gRPC service path
metadata
- was used internally to access metadata, but as a side effect allowed end-users to modify metadata on runtime.
serviceClient
- was used internally to keep track of the service client used by the exporter, as a side effect it allowed end-users to modify the gRPC service client that was used
compression
- was used internally to keep track of the compression to use but was unintentionally exposed to the users. It allowed to read and write the value, writing, however, would have no effect.
- Fixes a bug where requiring up the gRPC exporter before enabling the instrumentation from
- feat(instrumentation-xhr): optionally ignore network events #4571 @mustafahaddara
- refactor(instrumentation-http): use exported strings for semconv #4573 @JamieDanielson
- perf(instrumentation-http): remove obvious temp allocations #4576 @Samuron
- feat(sdk-node): add
HostDetector
as default resource detector #4566 @maryliag - feat(api-events): added data field to the Event interface #4575 @martinkuba
- fix(exporter--otlp-): use parseHeaders() to ensure header-values are not 'undefined' #4540
- Fixes a bug where passing
undefined
as a header value would crash the end-user app after the export timeout elapsed.
- Fixes a bug where passing
- fix(sdk-logs): ensure default resource attributes are used as fallbacks when a resource is passed to LoggerProvider.
- docs(instrumentation-http): document semantic conventions and attributes in use. #4587 @JamieDanielson
- fix(instrumentation): don't add
@opentelemetry/api-logs
as apeerDependency
- fix(otlp-exporter-base)!: remove unload event from OTLPExporterBrowserBase #4438 @eldavojohn
- Reason: The 'unload' event prevents sites from taking advantage of Google's backward/forward cache and will be deprecated. It is now up to the consuming site to implement these shutdown events.
- This breaking change affects users under this scenario:
- A user extends the exporter and overrides the shutdown function, and does something which is usually called by the unload listener
- We remove the unload event listener
- That user's overridden shutdown function no longer gets called
- feat(instrumentation): allow LoggerProvider to be specified in Instrumentations #4314 @hectorhdzg
- feat(instrumentation): add getModuleDefinitions() to InstrumentationBase #4475 @pichlermarc
- feat(exporter-metrics-otlp-http): add option to set the exporter aggregation preference #4409 @AkselAllas
- feat(node-sdk): add spanProcessors option #4454 @naseemkullah
- fix(sdk-node): allow using samplers when the exporter is defined in the environment #4394 @JacksonWeber
- fix(instrumentation): normalize paths for internal files in scoped packages #4467 @pichlermarc
- Fixes a bug where, on Windows, internal files on scoped packages would not be instrumented.
- fix(otlp-transformer): only use BigInt inside hrTimeToNanos() #4484 @pichlermarc
- fix(instrumentation-fetch): do not enable in Node.js; clarify in docs this instr is for web fetch only #4498 @trentm
- refactor(instrumentation-grpc): clean up remnants of 'grpc' package instrumentation #4420 @pichlermarc
- fix(instrumentation)!: pin import-in-the-middle@1.7.1 #4441
- Fixes a bug where, in some circumstances, ESM instrumentation packages would try to instrument CJS exports on ESM, causing the end-user application to crash.
- This breaking change only affects users that are using the experimental
@opentelemetry/instrumentation/hook.mjs
loader hook AND Node.js 18.19 or later:- This reverts back to an older version of
import-in-the-middle
due to nodejs/import-in-the-middle#57 - This version does not support Node.js 18.19 or later
- This reverts back to an older version of
- fix(exporter-prometheus): avoid invoking callback synchronously #4431 @legendecas
- fix(exporter-logs-otlp-grpc): set User-Agent header #4398 @Vunovati
- fix(exporter-logs-otlp-http): set User-Agent header #4398 @Vunovati
- fix(exporter-logs-otlp-proto): set User-Agent header #4398 @Vunovati
- fix(instrumentation-fetch): compatibility with Map types for fetch headers
- refactor(exporter-prometheus): promisify prometheus tests #4431 @legendecas
- fix(exporter-logs-otlp-http)!: programmatic headers take precedence over environment variables #2370 @Vunovati
- fix(exporter-logs-otlp-proto)!: programmatic headers take precedence over environment variables #2370 @Vunovati
- fix(exporter-trace-otlp-http)!: programmatic headers take precedence over environment variables #2370 @Vunovati
- fix(exporter-trace-otlp-proto)!: programmatic headers take precedence over environment variables #2370 @Vunovati
- fix(instrumentation): use caret range on import-in-the-middle #4380 @pichlermarc
- fix(instrumentation): do not import 'path' in browser runtimes #4386 @pichlermarc
- Fixes a bug where bundling for web would fail due to
InstrumentationNodeModuleDefinition
importingpath
- Fixes a bug where bundling for web would fail due to
- fix(exporter-metrics-otlp-grpc): programmatic headers take precedence over environment variables #2370 @Vunovati
- fix(exporter-metrics-otlp-http): programmatic headers take precedence over environment variables #2370 @Vunovati
- fix(exporter-metrics-otlp-proto): programmatic headers take precedence over environment variables #2370 @Vunovati
- fix(otlp-exporter-base)!: decrease default concurrency limit to 30 #4211 @pichlermarc
- fixes a memory leak on prolonged collector unavailability
- this change is marked as breaking as it changes defaults
- feat(sdk-logs): add droppedAttributesCount field to ReadableLogRecord
- fix(sdk-logs): await async resources in log processors
- fix(sdk-logs): avoid map attribute set when count limit exceeded
- fix(instrumentation-fetch): only access navigator if it is defined #4063
- allows for experimental usage of this instrumentation with non-browser runtimes
- fix(instrumentation-http): memory leak when responses are not resumed
- fix(instrumentation-http): Do not mutate given headers object for outgoing http requests. Fixes aws-sdk signing error on retries. #4346
- fix(instrumentation): support Node.js v18.19.0 by using import-in-the-middle@1.6.0
- Bumps all dependencies to explicitly include Stable v1.18.1 packages
- fix(sdk-node)!: remove the explicit dependency on @opentelemetry/exporter-jaeger that was kept on the previous release
- '@opentelemetry/exporter-jaeger' is no longer be a dependency of this package. To continue using '@opentelemetry/exporter-jaeger', please install it manually.
- NOTE:
@opentelemetry/exporter-jaeger
is deprecated, consider switching to one of the alternatives described here
- NOTE:
- '@opentelemetry/exporter-jaeger' is no longer be a dependency of this package. To continue using '@opentelemetry/exporter-jaeger', please install it manually.
- fix(otlp-transformer)!: OTLP json encoding #4220 @seemk
- Fixes a bug in the OTLP (http/json) exporters where timestamps were not encoded as strings, causing the export to be rejected by OTLP endpoints
- fix(exporter-logs-otlp-proto): change OTLPLogExporter to OTLPLogExporter #4140 @Vunovati
- fix(sdk-node): remove explicit dependency on @opentelemetry/exporter-jaeger
- '@opentelemetry/exporter-jaeger' is no longer be a dependency of this package. To continue using '@opentelemetry/exporter-jaeger', please install it manually.
- NOTE:
@opentelemetry/exporter-jaeger
is deprecated, consider switching to one of the alternatives described here
- NOTE:
- '@opentelemetry/exporter-jaeger' is no longer be a dependency of this package. To continue using '@opentelemetry/exporter-jaeger', please install it manually.
- fix(sdk-logs): hide internal methods with internal shared state #3865 @legendecas
- feat(exporter-metrics-otlp-proto): add esm build #4099 @pichlermarc
- feat(opencensus-shim): implement OpenCensus metric producer #4066 @aabmass
- fix(otlp-exporter-base): replaced usage of window with _globalThis #4157 @cristianmadularu
- fix(otlp-transformer): Avoid precision loss when converting from HrTime to unix nanoseconds. #4062
- Revert "feat(api): add attributes argument to recordException API #4071"
- This feature was an unintentional breaking change introduced with API 1.5.0
- This PR updates all experimental packages to allow API 1.6.0, where this change has been reverted.
- chore(sdk-node): deprecate methods in favor of constructor options #3996 @pichlermarc
- The following methods are now deprecated and will be removed in
0.43.0
NodeSDK.configureTracerProvider()
, please use constructor options insteadNodeSDK.configureMeterProvider()
, please use constructor options insteadNodeSDK.configureLoggerProvider()
, please use constructor options insteadNodeSDK.addResource()
, please use constructor options insteadNodeSDK.detectResources()
, this is not necessary anymore, resources are now auto-detected on startup.
- The following methods are now deprecated and will be removed in
- chore(sdk-node): add notice that '@opentelemetry/exporter-jaeger' has to be installed manually in the next version #4068 @pichlermarc
- Starting with 0.43.0 '@opentelemetry/exporter-jaeger' will no longer be a dependency of this package. To continue using '@opentelemetry/exporter-jaeger', please install it manually.
- NOTE:
@opentelemetry/exporter-jaeger
is deprecated, consider switching to one of the alternatives described here
- NOTE:
- Starting with 0.43.0 '@opentelemetry/exporter-jaeger' will no longer be a dependency of this package. To continue using '@opentelemetry/exporter-jaeger', please install it manually.
- feat: update PeriodicExportingMetricReader and PrometheusExporter to accept optional metric producers #4077 @aabmass
- fix(exporter-logs-otlp-http): add @opentelemetry/api-logs as dependency
- fix(opentelemetry-exporter-logs-otlp-http): Add otel-api as dev dep for tests as they are directly importing the api and which is breaking the web-sandbox tests which is using rollup
- fix(instrumentation-grpc): instrument @grpc/grpc-js Client methods #3804 @pichlermarc
- docs(sdk-metrics): add example of exponential histogram metric #3855 @JamieDanielson
- feat(sdk-node): logs support added #3969 @psk001
- Revert "feat(minification): Add noEmitHelpers, importHelpers and tslib as a dependency (#3914)" #4011 @dyladan
- chore(instrumentation-grpc): Drop support for package
grpc
. #3807 @llc1123
- feat(otlp-grpc-exporters): add support for UDS endpoints. #3853 @llc1123
- feat(otlp-exporters): bump otlp proto to 0.20.0 #3932 @pichlermarc
- feat(exporter-metrics-otlp-*): add LowMemory metrics temporality preference #3915 @martinkuba
- Adds support for LowMemory temporality preference
- Adds support for
lowmemory
inOTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE
- fix(exporter-logs-otlp-http): set useHex to true #3875 @Nico385412
- fix(otlp-proto-exporter-base): add missing type import #3937 @pichlermarc
- fix(example-opencensus-shim): avoid OpenCensus auto instrumentations #3951 @llc1123
- fix(http-intrumentation): prevent request socket null from throwing uncaught error #3858 @aodysseos
- chore(instrumentation-grpc): Cleanup remnants of grpc-native support. #3886 @llc1123
- fix(exporter-logs-otlp-grpc): change OTLPLogsExporter to OTLPLogExporter #3819 @fuaiyi
- chore(instrumentation-grpc): add 'grpc' deprecation notice postinstall script #3833 @pichlermarc
- Support for telemetry generation for the
grpc
module will be dropped in the next release as the package has been deprecated for over 1 year, please migrate to@grpc/grpc-js
to continue receiving telemetry.
- Support for telemetry generation for the
- feat(api-logs): support map in log attributes. #3821 @Abinet18
- feat(instrumentation): add ESM support for instrumentation. #3698 @JamieDanielson, @pkanal, @vmarchaud, @lizthegrey, @bengl
- feat(exporter-logs-otlp-http): otlp-http exporter for logs. #3764 @fuaiyi
- feat(otlp-trace-exporters): Add User-Agent header to OTLP trace exporters. #3790 @JamieDanielson
- feat(otlp-metric-exporters): Add User-Agent header to OTLP metric exporters. #3806 @JamieDanielson
- feat(opencensus-shim): add OpenCensus trace shim #3809 @aabmass
- feat(exporter-logs-otlp-proto): protobuf exporter for logs. #3779 @Abinet18
- fix(sdk-node): use resource interface instead of concrete class #3803 @blumamir
- fix(sdk-logs): remove includeTraceContext configuration and use LogRecord context when available #3817 @hectorhdzg
- fix(otlp-transformer): move api-logs to dependencies #3798 @pichlermarc
- feat(otlp-transformer): support log records. #3712 @llc1123
- feat(otlp-grpc-exporter-base): support log records. #3712 @llc1123
- feat(exporter-logs-otlp-grpc): otlp-grpc exporter for logs. #3712 @llc1123
- feat(otlp-grpc-exporter-base): use statically generated protobuf code #3705 @pichlermarc
- refactor(otlp-transformer): refine metric transformers. #3770 @llc1123
- feat(api-logs): add
ObservedTimestamp
toLogRecord
. #3787 @llc1123
- fix(instrumentation): update
require-in-the-middle
to v7.1.0 #3727 @trentm - fix(instrumentation): update
require-in-the-middle
to v7.0.1 #3743 @trentm
- doc(instrumentation): add limitiations section to readme #3786 @flarna
- fix: remove HTTP/HTTPS prefix from span name in instrumentation-xml-http-request #3672 @jufab
- fix(sdk-node)!: remove unused defaultAttributes option #3724 @pichlermarc
- Please use
NodeSDKConfiguration.resource
instead
- Please use
- feat(sdk-logs): use logs API 0.38
- fix(sdk-node): only set DiagConsoleLogger when OTEL_LOG_LEVEL is set #3693 @pichlermarc
- fix: remove HTTP/HTTPS prefix from span name in instrumentation-xml-http-request #3672 @jufab
- feat(api-logs): 1.
LogRecord
fields update:traceFlags
/traceId
/spanId
->context
; 2.Logger
supports configuringincludeTraceContext
; 3.TheonEmit
method ofLogRecordProcessor
supports thecontext
field. #3549 @fuaiyi - feat(sdk-logs): logs sdk implementation. #3549 @fuaiyi
- feat: remove HTTP/HTTPS prefix from span name #3603 @Flarna
- feat: use HTTP_ROUTE in span name #3603 @Flarna
- feat: add HTTP_ROUTE attribute to http incoming metrics if present #3581 @hermogenes
- feat(opentelemetry-instrumentation-grpc): allow to add attributes from grpc metadata in the patched server #3589 @zombispormedio
- feat(sdk-node): install diag logger with OTEL_LOG_LEVEL #3627 @legendecas
- feat(otlp-exporter-base): add retries #3207 @svetlanabrennan
- feat(sdk-node): override IdGenerator when using NodeSDK #3645 @haddasbronfman
- feat(otlp-transformer): expose dropped attributes, events and links counts on the transformed otlp span #3576 @mohitk05
- fix(prometheus-exporter): add possibility to respond to errors returned by
server.listen()
#3552 @pichlermarc - fix(sdk-node): update instrumentations once MeterProvider is initialized #3624 @pichlermarc
- fix: remove JSON syntax error and regenerate tsconfig files #3566 @Flarna
- Fixes an error where the generated JS files were not included in the esnext package due to a failure of the tsconfig generation
- fix(sdk-node): register instrumentations early #3502 @flarna
- fix: include tracestate in export #3569 @flarna
- fix(http) Remove outgoing headers normalization #3557 @marcinjahn
- feat(instrumentation-http): monitor error events with events.errorMonitor #3402 @legendecas
- feat(instrumentation-grpc): added grpc metadata client side attributes in instrumentation #3386
- feat(instrumentation): add new
_setMeterInstruments
protected method that update the meter instruments every meter provider update. - feat(api-logs): add the
SeverityNumber
enumeration. #3443 @fuaiyi - feat(sdk-node): configure no-op sdk with
OTEL_SDK_DISABLED
environment variable #3485 @RazGvili
- fix(instrumentation-xhr): http.url attribute should be absolute #3200 @t2t2
- fix(instrumentation-grpc): always set grpc semcov status code attribute with numeric value #3076 @blumamir
- fix(instrumentation): only call
onRequire
for full matches on core modules with sub-paths #3451 @mhassan1 - fix(instrumentation): add back support for absolute paths via
require-in-the-middle
#3457 @mhassan1 - fix(prometheus-sanitization): replace repeated
_
with a single_
3470 @samimusallam - fix(prometheus-serializer): correct string used for NaN #3477 @JacksonWeber
- fix(instrumentation-http): close server span when response finishes #3407 @legendecas
- fix(instrumentation-fetch): make spans resilient to clock drift by using Date.now #3434 @dyladan
- fix(instrumentation-xml-http-request): make spans resilient to clock drift by using Date.now #3434 @dyladan
- fix(sdk-node): fix exporter to be read only OTEL_TRACES_EXPORTER is set to a valid exporter [3492] @svetlanabrennan
- chore(otlp-proto-exporter-base): upgrade protobufjs to 7.1.2 and relax versioning #3433 @seemk
@opentelemetry/sdk-metrics
moved to packages/sdk-metrics@opentelemetry/api-metrics
deprecated and merged into api
- feat(metrics-sdk): Add tracing suppresing for Metrics Export #3332 @hectorhdzg
- feat(instrumentation): implement
require-in-the-middle
singleton #3161 @mhassan1 - feat(sdk-node): configure trace exporter with environment variables #3143 @svetlanabrennan
- feat: enable tree shaking #3329 @pkanal
- feat(prometheus): serialize resource as target_info gauge #3300 @pichlermarc
- feat(detectors): add browser detector module #3292 @abinet18
- deps: remove unused proto-loader dependencies and update grpc-js and proto-loader versions #3337 @seemk
- feat(metrics-exporters): configure temporality via environment variable #3305 @pichlermarc
- feat(console-metric-exporter): add temporality configuration #3387 @pichlermarc
- fix(node-sdk): move
@opentelemetry/semantic-conventions
todependencies
#3283 @mhassan1 - fix(exporters): do not append trailing '/' when URL contains path #3274 @pichlermarc
- fix(instrumentation): debug log on no modules defined for instrumentation #3308 @legendecas
- docs(metrics-exporters): fix wrong exporter const name in example #3270 @pichlermarc
- ci(instrumentation-http): remove got devDependency #3347 @dyladan
- deps(instrumentation-http): move sdk-metrics to dev dependencies #3380 @pichlermarc
-
Add
resourceDetectors
option toNodeSDK
#3210NodeSDK.detectResources()
function is no longer able to receive config as a parameter. Instead, the detectors are passed to the constructor.
-
chore(metrics-sdk): clean up exports #3197 @pichlermarc
- removes export for:
AccumulationRecord
Aggregator
AggregatorKind
Accumulation
createInstrumentDescriptor
createInstrumentDescriptorWithView
isDescriptorCompatibleWith
- removes export for:
-
chore(api-metrics): clean up exports #3198 @pichlermarc
- removes export for:
NOOP_COUNTER_METRIC
NOOP_HISTOGRAM_METRIC
NOOP_METER_PROVIDER
NOOP_OBSERVABLE_COUNTER_METRIC
NOOP_OBSERVABLE_GAUGE_METRIC
NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC
NOOP_UP_DOWN_COUNTER_METRIC
NoopCounterMetric
NoopHistogramMetric
NoopMeter
NoopMeterProvider
NoopMetric
NoopObservableCounterMetric
NoopObservableGaugeMetric
NoopObservableMetric
NoopObservableUpDownCounterMetric
NoopUpDownCounterMetric
- removes export for:
-
feat(sdk-metrics): align MetricReader with specification and other language implementations #3225 @pichlermarc
-
chore(sdk-metrics): remove accidental export of the SDK
Meter
class #3243 @pichlermarc
- docs(sdk-metrics): fix typos and add missing parameter docs. #3244 @pichlermarc
- ci(instrumentation-http): improve metrics test stability #3242 @pichlermarc
- deps: remove unused protobufjs and update used ones to 7.1.1 #3251 #3251 @pichlermarc
- Rename @opentelemetry/sdk-metrics-base package to @opentelemetry/sdk-metrics #3162 @hectorhdzg
- feature(instrumentation-http): Add HTTP Server and Client duration Metrics in HTTP Node.js Instrumentation #3149 @hectorhdzg
- fix(add-views-to-node-sdk): added the ability to define meter views in
NodeSDK
#3066 @weyert - feature(add-console-metrics-exporter): add ConsoleMetricExporter #3120 @weyert
- feature(prometheus-serialiser): export the unit block when unit is set in metric descriptor #3066 @weyert
- feat: support latest
@opentelemetry/api
#3177 @dyladan - feat(sdk-metrics-base): add per metric-reader aggregation support #3153 @legendecas
- chore(deps): update prometheus example dependencies to 0.32 #3126 @avzis
- feature(opentelemetry-api-metrics): Adding generics to
create{metricType}
#3151 @tomerghelber-tm
- fix(instrumentation-http): add
http.host
attribute before sending the request #3054 @cuichenli
- feature(views): move views registration to MeterProvider constructor #3066 @pichlermarc
- feat(sdk-metrics-base): split up Singular into Sum and Gauge in MetricData #3079 @pichlermarc
- removes
DataPointType.SINGULAR
, and replaces it withDataPointType.SUM
andDataPointType.GAUGE
- removes
SingularMetricData
and replaces it withSumMetricData
(including an additionalisMonotonic
flag) andGaugeMetricData
- removes
- feat(histogram): align collection of optional Histogram properties with spec #3102 @pichlermarc
- changes type of
sum
property onHistogram
tonumber | undefined
- changes type of
min
andmax
properties onHistogram
tonumber | undefined
- removes
hasMinMax
flag on the exportedHistogram
- this is now indicated bymin
andmax
beingundefined
- changes type of
- feat(metrics-api): use common attributes definitions #3038 @legendecas
- feat(otlp-proto): pre-compile proto files #3098 @legendecas
- feat(opentelemetry-sdk-metrics-base): added InMemoryMetricExporter #3039 @weyert
- fix(histogram): fix maximum when only values < -1 are provided #3086 @pichlermarc
- fix(instrumentation-grpc): always set grpc semcov status code attribute with numeric value #3076 @blumamir
- fix: remove aws and gcp detector from SDK #3024 @flarna
- feat(sdk-metrics-base): implement min/max recording for Histograms #3032 @pichlermarc
- adds
min
/max
recording to Histograms - updates opentelemetry-proto to
0.18
so thatmin
andmax
can be exported. This change breaks the OTLP/JSON Metric Exporter for all collector versions<0.52
due to open-telemetry/opentelemetry-collector#5312.
- adds
- feat(opentelemetry-instrumentation-fetch): optionally ignore network events #3028 @gregolsen
- feat(http-instrumentation): record exceptions in http instrumentation #3008 @luismiramirez
- feat(node-sdk): add serviceName config option #2867 @naseemkullah
- feat(opentelemetry-exporter-prometheus): export PrometheusSerializer #3034 @matschaffer
- feat(sdk-metrics-base): detect resets on async metrics #2990 @legendecas
- Added monotonicity support in SumAggregator.
- Added reset and gaps detection for async metric instruments.
- Fixed the start time and end time of an exported metric with regarding to resets and gaps.
- fix(otlp-transformer): remove type dependency on Long #3022 @legendecas
- fix(grpc-exporter): use non-normalized URL to determine channel security #3019 @pichlermarc
- fix(otlp-exporter-base): fix gzip output stream in http otlp export #3046 @mattolson
- docs(grpc-exporters): remove 'web' as supported from README.md #3070 @pichlermarc
- test: add node 18 and remove EoL node versions #3048 @dyladan
- Support for 1.3.1 of stable packages
- fix(sdk-metrics-base): only record non-negative histogram values #3002 @pichlermarc
- fix(otlp-transformer): include missing prepublishOnly script which ensures esm and esnext build files are created and packaged @dyladan
- feat(metrics): metric readers and exporters now select aggregation temporality based on instrument type #2902 @seemk
- refactor(metrics-sdk): rename InstrumentationLibrary -> InstrumentationScope #2959 @pichlermarc
- feat(metrics): multi-instrument async callback support #2966 @legendecas
- changes on
meter.createObservableCounter
,meter.createObservableGauge
,meter.createObservableUpDownCounter
- removed the second parameter
callback
- returns an
Observable
object on which callbacks can be registered or unregistered.
- removed the second parameter
- added
meter.addBatchObservableCallback
andmeter.removeBatchObservableCallback
.
- changes on
- fix: remove attributes from OTLPExporterConfigBase #2991 @flarna
- feat(exporters): update proto version and use otlp-transformer #2929 @pichlermarc
- fix(sdk-metrics-base): misbehaving aggregation temporality selector tolerance #2958 @legendecas
- feat(trace-otlp-grpc): configure security with env vars #2827 @svetlanabrennan
- feat(sdk-metrics-base): async instruments callback timeout #2742 @legendecas
- fix(opentelemetry-instrumentation-http): use correct origin when port is
null
#2948 @danielgblanco - fix(otlp-exporter-base): include esm and esnext in package files #2952 @dyladan
- fix(otlp-http-exporter): update endpoint to match spec #2895 @svetlanabrennan
- fix(instrumentation): only patch core modules if enabled #2993 @santigimeno
- fix(otlp-transformer): include esm and esnext in package files and update README #2992 @pichlermarc
- fix(metrics): specification compliant default metric unit #2983 @andyfleming
- fix(opentelemetry-instrumentation): use all provided patches for the same file #2963 @Ugzuzg
- feat(sdk-metrics-base): update metric exporter interfaces #2707 @srikanthccv
- feat(api-metrics): remove observable types #2687 @legendecas
- fix(otlp-http-exporter): remove content length header #2879 @svetlanabrennan
- feat(experimental-packages): Update packages to latest SDK Version. #2871 @pichlermarc
- removed the -wip suffix from api-metrics and metrics-sdk-base.
- updated dependencies to stable packages to
1.1.1
for all "experimental" packages. - updated Metrics Exporters to the latest Metrics SDK (
exporter-metrics-otlp-grpc
,exporter-metrics-otlp-http
,exporter-metrics-otlp-proto
) - updated
opentelemetry-sdk-node
to the latest Metrics SDK. - updated
otlp-transformer
to the latest Metrics SDK. - updated all
instrumentation-*
packages to use local implementations ofparseUrl()
due to #2884
- refactor(otlp-exporters) move base classes and associated types into their own packages #2893 @pichlermarc
otlp-exporter-base
=>OTLPExporterBase
,OTLPExporterBrowserBase
,OTLPExporterNodeBase
otlp-grpc-exporter-base
=>OTLPGRPCExporterNodeBase
otlp-proto-exporter-base
=>OTLPProtoExporterNodeBase
- feat: spec compliant metric creation and sync instruments #2588 @dyladan
- feat(api-metrics): async instruments spec compliance #2569 @legendecas
- feat(sdk-metrics-base): add ValueType support for sync instruments #2776 @legendecas
- feat(sdk-metrics-base): implement async instruments support #2686 @legendecas
- feat(sdk-metrics-base): meter registration #2666 @legendecas
- feat(sdk-metrics-base): bootstrap metrics exemplars #2641 @srikanthccv
- feat(metrics-sdk): bootstrap aggregation support #2634 @legendecas
- feat(metrics-sdk): bootstrap views api #2625 @legendecas
- feat(sdk-metrics): bootstrap metric streams #2636 @legendecas
- feat(views): add FilteringAttributesProcessor #2733 @pichlermarc
- feat(metric-reader): add metric-reader #2681 @pichlermarc
- feat(sdk-metrics-base): document and export basic APIs #2725 @legendecas
- feat(views): Update addView() to disallow named views that select more than one instrument. #2820 @pichlermarc
- feat(sdk-metrics-base): update exporting names #2829 @legendecas
- Add grpc compression to trace-otlp-grpc exporter #2813 @svetlanabrennan
- refactor: unifying shutdown once with BindOnceFuture #2695 @legendecas
- feat(prometheus): update prometheus exporter with wip metrics sdk #2824 @legendecas
- feat(instrumentation-xhr): add applyCustomAttributesOnSpan hook #2134 @mhennoch
- feat(proto): add @opentelemetry/otlp-transformer package with hand-rolled transformation #2746 @dyladan
- feat(sdk-metrics-base): shutdown and forceflush on MeterProvider #2890 @legendecas
- feat(sdk-metrics-base): return the same meter for identical input to getMeter #2901 @legendecas
- feat(otlp-exporter): add OTEL_EXPORTER_OTLP_TIMEOUT env var to otlp exporters #2738 @svetlanabrennan
- feat(sdk-metrics-base): hoist async instrument callback invocations #2822 @legendecas
- fix(sdk-metrics-base): remove aggregator.toMetricData dependency on AggregationTemporality #2676 @legendecas
- fix(sdk-metrics-base): coerce histogram boundaries to be implicit Infinity #2859 @legendecas
- fix(instrumentation-http): HTTP 400 status code should not set span status to error on servers #2789 @nordfjord
- Update metrics example #2658 @svetlanabrennan
- docs(api-metrics): add notes on ObservableResult.observe #2712 @legendecas
- chore: move trace exporters back to experimental #2835 @dyladan
- refactor(sdk-metrics-base): meter shared states #2821 @legendecas
- #2566 feat!(metrics): remove batch observer (@dyladan)
- #2485 feat!: Split metric and trace exporters into new experimental packages (@willarmiros)
- #2540 fix(sdk-metrics-base): remove metric kind BATCH_OBSERVER (@legendecas)
- #2496 feat(api-metrics): rename metric instruments to match feature-freeze API specification (@legendecas)
- #2523 feat: Rename Labels to Attributes (@pirgeo)
- #2559 feat(api-metrics): remove bind/unbind and bound instruments (@legendecas)
- #2563 feat(sdk-metrics-base): remove per-meter config on MeterProvider.getMeter (@legendecas)
- #2610 fix: preventing double enable for instrumentation that has been already enabled (@obecny)
- #2581 feat: lazy initialization of the gzip stream (@fungiboletus)
- #2584 fix: fixing compatibility versions for detectors (@obecny)
- #2558 fix(@opentelemetry/exporter-prometheus): unref prometheus server to prevent process running indefinitely (@mothershipper)
- #2495 fix(sdk-metrics-base): metrics name should be in the max length of 63 (@legendecas)
- #2497 feat(@opentelemetry-instrumentation-fetch): support reading response body from the hook applyCustomAttributesOnSpan (@echoontheway)
- #2561 Use new canonical path to Getting Started (@chalin)
- #2576 docs(instrumentation): update links in the Readme (@OlivierAlbertini)
- #2600 docs: fix URLs in README post-experimental move (@arbourd)
- #2579 doc: Move upgrade propagator notes to correct section (@NathanielRN)
- #2568 chore(doc): update matrix with contrib version for 1.0 core (@vmarchaud)
- #2555 docs: expose existing comments (@moander)
- #2493 chore: remove getting started and link to documentation. (@svrnm)
- #2404 chore: Fix lint warnings in instrumentation package (@alisabzevari)
- #2533 chore: regularly close stale issues (@Rauno56)
- #2570 chore: adding selenium tests with browserstack (@obecny)
- #2522 chore: cleanup setting config in instrumentations (@Flarna)
- #2541 chore: slim font size for section title in PR template (@legendecas)
- #2509 chore: expand pull request template with action items (@pragmaticivan)
- #2488 chore: inline sources in source maps (@dyladan)
- #2514 chore: update stable dependencies to 1.0 (@dyladan)
For changelog entries for previous releases see the CHANGELOG.md.