Releases: open-telemetry/opentelemetry-js
Releases · open-telemetry/opentelemetry-js
v2.5.0
2.5.0
🐛 Bug Fixes
- refactor(resources): use runtime check for default service name #6257 @overbalance
🏠 Internal
- chore(context-async-hooks): Deprecate
AsyncHooksContextManager#6298 @trentm - chore: fix CODEOWNERS rule ordering #6297 @overbalance
- fix(github): fix CODEOWNERS browser package paths #6303 @overbalance
- fix(build): update @types/node to 18.19.130, remove DOM types from base tsconfig #6280 @overbalance
experimental/v0.211.0
0.211.0
💥 Breaking Changes
- fix(otlp-exporter-base)!: remove xhr transport #6317 @cjihrig
- (user-facing) The deprecated XHR-based transport has been removed and replaced with
fetch(). This change affects users who relied onXmlHttpRequestinstead offetch()for sending headers with OTLP exports. To maintain compatibility on browsers without afetch()implementation, include afetch()polyfill.
- (user-facing) The deprecated XHR-based transport has been removed and replaced with
- chore(api-logs)!: remove
ProxyLoggerProviderexport #6322 @david-luna
🚀 Features
🐛 Bug Fixes
- fix(sdk-logs): allow AnyValue attributes for logs and handle circular references #6210 @david-luna
- fix(browser-detector): use window feature detection to avoid false positives in Node.js 21+ and Bun #6271 @fiyinfoluwa001 @overbalance
🏠 Internal
- fix(build): update @types/node to 18.19.130, remove DOM types from base tsconfig #6280 @overbalance
- refactor(sdk-logs): simplify _export() #6318 @cjihrig
semconv/v1.39.0
1.39.0
🚀 Features
- feat: update semantic conventions to v1.39.0 #6301 @trentm
- Semantic Conventions v1.39.0: changelog | latest docs
@opentelemetry/semantic-conventions(stable) changes: none@opentelemetry/semantic-conventions/incubating(unstable) changes: 19 newly deprecated exports, 70 added exports
Unstable changes in v1.39.0
19 newly deprecated exports
METRIC_PROCESS_OPEN_FILE_DESCRIPTOR_COUNT // process.open_file_descriptor.count: Replaced by `process.unix.file_descriptor.count`.
METRIC_RPC_CLIENT_DURATION // rpc.client.duration: Replaced by `rpc.client.call.duration` with unit `s`.
METRIC_RPC_SERVER_DURATION // rpc.server.duration: Replaced by `rpc.server.call.duration` with unit `s`.
METRIC_SYSTEM_LINUX_MEMORY_AVAILABLE // system.linux.memory.available: Replaced by `system.memory.linux.available`.
METRIC_SYSTEM_LINUX_MEMORY_SLAB_USAGE // system.linux.memory.slab.usage: Replaced by `system.memory.linux.slab.usage`.
ATTR_LINUX_MEMORY_SLAB_STATE // linux.memory.slab.state: Replaced by `system.memory.linux.slab.state`.
ATTR_PEER_SERVICE // peer.service: Replaced by `service.peer.name`.
ATTR_RPC_CONNECT_RPC_ERROR_CODE // rpc.connect_rpc.error_code: Replaced by `rpc.response.status_code`.
ATTR_RPC_CONNECT_RPC_REQUEST_METADATA // (key) => `rpc.connect_rpc.request.metadata.${key}`: Replaced by `rpc.request.metadata`.
ATTR_RPC_CONNECT_RPC_RESPONSE_METADATA // (key) => `rpc.connect_rpc.response.metadata.${key}`: Replaced by `rpc.response.metadata`.
ATTR_RPC_GRPC_REQUEST_METADATA // (key) => `rpc.grpc.request.metadata.${key}`: Replaced by `rpc.request.metadata`.
ATTR_RPC_GRPC_RESPONSE_METADATA // (key) => `rpc.grpc.response.metadata.${key}`: Replaced by `rpc.response.metadata`.
ATTR_RPC_GRPC_STATUS_CODE // rpc.grpc.status_code: Use string representation of the gRPC status code on the `rpc.response.status_code` attribute.
ATTR_RPC_JSONRPC_ERROR_CODE // rpc.jsonrpc.error_code: Use string representation of the error code on the `rpc.response.status_code` attribute.
ATTR_RPC_JSONRPC_ERROR_MESSAGE // rpc.jsonrpc.error_message: Use the span status description or `error.message` attribute on other signals.
ATTR_RPC_JSONRPC_REQUEST_ID // rpc.jsonrpc.request_id: Replaced by `jsonrpc.request.id`.
ATTR_RPC_JSONRPC_VERSION // rpc.jsonrpc.version: Replaced by `jsonrpc.protocol.version`.
ATTR_RPC_SERVICE // rpc.service: Value should be included in `rpc.method` which is expected to be a fully-qualified name.
ATTR_RPC_SYSTEM // rpc.system: Replaced by `rpc.system.name`.70 added exports
METRIC_MCP_CLIENT_OPERATION_DURATION // mcp.client.operation.duration
METRIC_MCP_CLIENT_SESSION_DURATION // mcp.client.session.duration
METRIC_MCP_SERVER_OPERATION_DURATION // mcp.server.operation.duration
METRIC_MCP_SERVER_SESSION_DURATION // mcp.server.session.duration
METRIC_PROCESS_UNIX_FILE_DESCRIPTOR_COUNT // process.unix.file_descriptor.count
METRIC_PROCESS_WINDOWS_HANDLE_COUNT // process.windows.handle.count
METRIC_RPC_CLIENT_CALL_DURATION // rpc.client.call.duration
METRIC_RPC_SERVER_CALL_DURATION // rpc.server.call.duration
METRIC_SYSTEM_MEMORY_LINUX_AVAILABLE // system.memory.linux.available
METRIC_SYSTEM_MEMORY_LINUX_SLAB_USAGE // system.memory.linux.slab.usage
CLOUD_PLATFORM_VALUE_AKAMAI_CLOUD_COMPUTE // "akamai_cloud.compute"
CLOUD_PLATFORM_VALUE_GCP_AGENT_ENGINE // "gcp.agent_engine"
CLOUD_PLATFORM_VALUE_HETZNER_CLOUD_SERVER // "hetzner.cloud_server"
CLOUD_PLATFORM_VALUE_VULTR_CLOUD_COMPUTE // "vultr.cloud_compute"
CLOUD_PROVIDER_VALUE_AKAMAI_CLOUD // "akamai_cloud"
CLOUD_PROVIDER_VALUE_HETZNER // "hetzner"
CLOUD_PROVIDER_VALUE_VULTR // "vultr"
ATTR_GEN_AI_PROMPT_NAME // gen_ai.prompt.name
ATTR_JSONRPC_PROTOCOL_VERSION // jsonrpc.protocol.version
ATTR_JSONRPC_REQUEST_ID // jsonrpc.request.id
ATTR_K8S_POD_HOSTNAME // k8s.pod.hostname
ATTR_K8S_POD_IP // k8s.pod.ip
ATTR_K8S_POD_START_TIME // k8s.pod.start_time
ATTR_MCP_METHOD_NAME // mcp.method.name
MCP_METHOD_NAME_VALUE_COMPLETION_COMPLETE // "completion/complete"
MCP_METHOD_NAME_VALUE_ELICITATION_CREATE // "elicitation/create"
MCP_METHOD_NAME_VALUE_INITIALIZE // "initialize"
MCP_METHOD_NAME_VALUE_LOGGING_SET_LEVEL // "logging/setLevel"
MCP_METHOD_NAME_VALUE_NOTIFICATIONS_CANCELLED // "notifications/cancelled"
MCP_METHOD_NAME_VALUE_NOTIFICATIONS_INITIALIZED // "notifications/initialized"
MCP_METHOD_NAME_VALUE_NOTIFICATIONS_MESSAGE // "notifications/message"
MCP_METHOD_NAME_VALUE_NOTIFICATIONS_PROGRESS // "notifications/progress"
MCP_METHOD_NAME_VALUE_NOTIFICATIONS_PROMPTS_LIST_CHANGED // "notifications/prompts/list_changed"
MCP_METHOD_NAME_VALUE_NOTIFICATIONS_RESOURCES_LIST_CHANGED // "notifications/resources/list_changed"
MCP_METHOD_NAME_VALUE_NOTIFICATIONS_RESOURCES_UPDATED // "notifications/resources/updated"
MCP_METHOD_NAME_VALUE_NOTIFICATIONS_ROOTS_LIST_CHANGED // "notifications/roots/list_changed"
MCP_METHOD_NAME_VALUE_NOTIFICATIONS_TOOLS_LIST_CHANGED // "notifications/tools/list_changed"
MCP_METHOD_NAME_VALUE_PING // "ping"
MCP_METHOD_NAME_VALUE_PROMPTS_GET // "prompts/get"
MCP_METHOD_NAME_VALUE_PROMPTS_LIST // "prompts/list"
MCP_METHOD_NAME_VALUE_RESOURCES_LIST // "resources/list"
MCP_METHOD_NAME_VALUE_RESOURCES_READ // "resources/read"
MCP_METHOD_NAME_VALUE_RESOURCES_SUBSCRIBE // "resources/subscribe"
MCP_METHOD_NAME_VALUE_RESOURCES_TEMPLATES_LIST // "resources/templates/list"
MCP_METHOD_NAME_VALUE_RESOURCES_UNSUBSCRIBE // "resources/unsubscribe"
MCP_METHOD_NAME_VALUE_ROOTS_LIST // "roots/list"
MCP_METHOD_NAME_VALUE_SAMPLING_CREATE_MESSAGE // "sampling/createMessage"
MCP_METHOD_NAME_VALUE_TOOLS_CALL // "tools/call"
MCP_METHOD_NAME_VALUE_TOOLS_LIST // "tools/list"
ATTR_MCP_PROTOCOL_VERSION // mcp.protocol.version
ATTR_MCP_RESOURCE_URI // mcp.resource.uri
ATTR_MCP_SESSION_ID // mcp.session.id
ATTR_OTEL_EVENT_NAME // otel.event.name
ATTR_PPROF_PROFILE_DOC_URL // pprof.profile.doc_url
ATTR_PPROF_PROFILE_DROP_FRAMES // pprof.profile.drop_frames
ATTR_PPROF_PROFILE_KEEP_FRAMES // pprof.profile.keep_frames
ATTR_RPC_METHOD_ORIGINAL // rpc.method_original
ATTR_RPC_REQUEST_METADATA // (key) => `rpc.request.metadata.${key}`
ATTR_RPC_RESPONSE_METADATA // (key) => `rpc.response.metadata.${key}`
ATTR_RPC_RESPONSE_STATUS_CODE // rpc.response.status_code
ATTR_RPC_SYSTEM_NAME // rpc.system.name
RPC_SYSTEM_NAME_VALUE_CONNECTRPC // "connectrpc"
RPC_SYSTEM_NAME_VALUE_DUBBO // "dubbo"
RPC_SYSTEM_NAME_VALUE_GRPC // "grpc"
RPC_SYSTEM_NAME_VALUE_JSONRPC // "jsonrpc"
ATTR_SERVICE_PEER_NAME // service.peer.name
ATTR_SERVICE_PEER_NAMESPACE // service.peer.namespace
ATTR_SYSTEM_MEMORY_LINUX_SLAB_STATE // system.memory.linux.slab.state
SYSTEM_MEMORY_LINUX_SLAB_STATE_VALUE_RECLAIMABLE // "reclaimable"
SYSTEM_MEMORY_LINUX_SLAB_STATE_VALUE_UNRECLAIMABLE // "unreclaimable"v2.4.0
2.4.0
🐛 Bug Fixes
- fix(sdk-metrics): improve PeriodicExportingMetricReader() constructor input validation #6286 @cjihrig
- fix(core): Avoid using DOM types for otperformance export #6278 @samchungy
🏠 Internal
experimental/v0.210.0
0.210.0
💥 Breaking Changes
- feat(sdk-node)!: do not add default MetricReader when an empty
metricReadersarray is provided to NodeSDK constructor #6272 @pichlermarc- (user-facing): setting
metricsReaders: []now prevents theNodeSDKfrom instantiating a Metrics SDK, regardless of settings inOTEL_METRICS_EXPORTERenv var.
- (user-facing): setting
🐛 Bug Fixes
- fix(sdk-node): ensure invalid metric reader config does not throw on startup #6295 @pichlermarc
v2.3.0
2.3.0
🚀 Features
- feat(sdk-trace-base): implement on ending in span processor #6024 @majanjua-amzn
- note: this feature is experimental and subject to change
🐛 Bug Fixes
- fix(sdk-metrics): remove setImmediate usage in ConsoleMetricExporter #6199 @overbalance
🏠 Internal
- refactor(bundler-tests): split webpack tests into webpack-4 and webpack-5 #6098 @overbalance
- refactor(sdk-metrics): remove isNotNullish() utility function #6151 @cjihrig
- refactor(sdk-metrics): remove FlatMap() utility function #6154 @cjihrig
- refactor(sdk-metrics): simplify AllowList and DenyList processors #6159 @cjihrig
- chore: disallow constructor parameter property syntax #6187 @legendecas
- refactor(sdk-metrics): use test() instead of match() in isValidName() #6205 @cjihrig
- refactor(core): remove TimeOriginLegacy Safari <15 fallback #6235 @overbalance
- chore: remove backcompat workspace #6238 @overbalance
- refactor(core,resources): consolidate platform-specific code #6208 @overbalance
- test(api): remove unnecessary conditional #6241 @cjihrig
- refactor(api): remove several reverse() calls #6252 @cjihrig
- refactor(api): remove unnecessary map() call #6251 @cjihrig
- chore: add zed to gitignore #6258 @overbalance
experimental/v0.209.0
0.209.0
💥 Breaking Changes
- fix(opentelemetry-sdk-node): default to otlp if OTEL_METRICS_EXPORTER is empty #6092 @jeengbe
- (user-facing):
NodeSDKnow automatically instantiates a Metrics SDK. To disable it, set environment varaibleOTEL_METRICS_EXPORTER=none.
- (user-facing):
🚀 Features
- feat(exporter-prometheus): support withoutScopeInfo option #5993 @cjihrig
- refactor(configuration): improvements on package #6101 @maryliag
- feat(configuration): set logger provider exporter type from env variable #6104 @maryliag
- feat(configuration): set meter provider exporter type from env variable #6105 @maryliag
- feat(configuration): set tracer provider exporter type from env variables #6106 @maryliag
- feat(configuration): set meter provider exporter type from env variable #6105 @maryliag
- refactor(configuration): throw warning and not error for invalid files #6124 @maryliag
- refactor(configuration): dont have a default value for node resource detectors #6131 @maryliag
- feat(configuration): doesnt set meter,tracer,logger provider by default #6130 @maryliag
- feat(opentelemetry-sdk-node): set instrumentation and propagators for experimental start #6148 @maryliag
- refactor(configuration): set console exporter as empty object #6164 @maryliag
- feat(instrumentation-http, instrumentation-fetch, instrumentation-xml-http-request): support "QUERY" as a known HTTP method
🐛 Bug Fixes
- fix(instrumentation-grpc): attach correct name to diag message #6097 @pichlermarc
- fix(configuration): merge service name from OTEL_SERVICE_NAME instead of replacing all resource attributes #6162 @maryliag
- fix(configuration): combine resource attributes and attributes list correctly #6166 @maryliag
- fix(sdk-node): add missing direct dependency to @opentelemetry/context-async-hooks #6189 @pichlermarc
- fix(instrumentation-fetch): use feature detection for browser environment #6200 @overbalance
- fix(otlp-exporter-base): ensure retry on network errors during HTTP export #6147 @jsokol805
📚 Documentation
🏠 Internal
- refactor(opentelemetry-sdk-node): simplify calculation of traceExportersList #6132 @cjihrig
- refactor(instrumentation): combine filter() calls in _onRequire #6142 @cjihrig
- test(instrumentation-http): make timing dependent test more robust #6144 @cjihrig
- refactor(opentelemetry-sdk-node): simplify calculation of validPropagators #6143 @cjihrig
- test(instrumentation-http): replace uses of deprecated abort() #6149 @cjihrig
- refactor(configuration): simplify boolean check #6158 @cjihrig
- chore: disallow constructor parameter property syntax #6187 @legendecas
- chore(instrumentation-grpc): use local protobuf-ts plugin instead of buf.build remote #6202 @overbalance
- test(otlp-transformer): add benchmark for ProtobufTraceSerializer #6226 @overbalance
- chore(backcompat): fix backcompat tests and tsconfig cleanup #6232 @overbalance
- refactor(instrumentation-http): refactor getIncomingRequestAttributes() to reduce work #6207 @cjihrig
- refactor(api-logs,instrumentation-fetch): remove platform-specific globalThis, use globalThis directly #6208 @overbalance
- test(otlp-transformer): remove obsolete compat code from toBase64() #6242 @cjihrig
- refactor(otlp-exporter-base): simplify isExportHTTPErrorRetryable() #6249 @cjihrig
- refactor(sdk-logs): remove wrapper Promise in _flushOneBatch() #6253 @cjihrig
semconv/v1.38.0
1.38.0
🚀 Features
- feat: update semantic conventions to v1.38.0 #6090 @trentm
- Semantic Conventions v1.38.0: changelog | latest docs
@opentelemetry/semantic-conventions(stable) changes: none@opentelemetry/semantic-conventions/incubating(unstable) changes: 1 exported value changed, 40 newly deprecated exports, 1 newly undeprecated export, 157 added exports
Unstable changes in v1.38.0
1 exported value changed
ATTR_PROCESS_CONTEXT_SWITCH_TYPE // process.context_switch_type -> process.context_switch.type40 newly deprecated exports
METRIC_K8S_CRONJOB_ACTIVE_JOBS // k8s.cronjob.active_jobs: Replaced by `k8s.cronjob.job.active`.
METRIC_K8S_DAEMONSET_CURRENT_SCHEDULED_NODES // k8s.daemonset.current_scheduled_nodes: Replaced by `k8s.daemonset.node.current_scheduled`.
METRIC_K8S_DAEMONSET_DESIRED_SCHEDULED_NODES // k8s.daemonset.desired_scheduled_nodes: Replaced by `k8s.daemonset.node.desired_scheduled`.
METRIC_K8S_DAEMONSET_MISSCHEDULED_NODES // k8s.daemonset.misscheduled_nodes: Replaced by `k8s.daemonset.node.misscheduled`.
METRIC_K8S_DAEMONSET_READY_NODES // k8s.daemonset.ready_nodes: Replaced by `k8s.daemonset.node.ready`.
METRIC_K8S_DEPLOYMENT_AVAILABLE_PODS // k8s.deployment.available_pods: Replaced by `k8s.deployment.pod.available`.
METRIC_K8S_DEPLOYMENT_DESIRED_PODS // k8s.deployment.desired_pods: Replaced by `k8s.deployment.pod.desired`.
METRIC_K8S_HPA_CURRENT_PODS // k8s.hpa.current_pods: Replaced by `k8s.hpa.pod.current`.
METRIC_K8S_HPA_DESIRED_PODS // k8s.hpa.desired_pods: Replaced by `k8s.hpa.pod.desired`.
METRIC_K8S_HPA_MAX_PODS // k8s.hpa.max_pods: Replaced by `k8s.hpa.pod.max`.
METRIC_K8S_HPA_MIN_PODS // k8s.hpa.min_pods: Replaced by `k8s.hpa.pod.min`.
METRIC_K8S_JOB_ACTIVE_PODS // k8s.job.active_pods: Replaced by `k8s.job.pod.active`.
METRIC_K8S_JOB_DESIRED_SUCCESSFUL_PODS // k8s.job.desired_successful_pods: Replaced by `k8s.job.pod.desired_successful`.
METRIC_K8S_JOB_FAILED_PODS // k8s.job.failed_pods: Replaced by `k8s.job.pod.failed`.
METRIC_K8S_JOB_MAX_PARALLEL_PODS // k8s.job.max_parallel_pods: Replaced by `k8s.job.pod.max_parallel`.
METRIC_K8S_JOB_SUCCESSFUL_PODS // k8s.job.successful_pods: Replaced by `k8s.job.pod.successful`.
METRIC_K8S_NODE_ALLOCATABLE_CPU // k8s.node.allocatable.cpu: Replaced by `k8s.node.cpu.allocatable`.
METRIC_K8S_NODE_ALLOCATABLE_EPHEMERAL_STORAGE // k8s.node.allocatable.ephemeral_storage: Replaced by `k8s.node.ephemeral_storage.allocatable`.
METRIC_K8S_NODE_ALLOCATABLE_MEMORY // k8s.node.allocatable.memory: Replaced by `k8s.node.memory.allocatable`.
METRIC_K8S_NODE_ALLOCATABLE_PODS // k8s.node.allocatable.pods: Replaced by `k8s.node.pod.allocatable`.
METRIC_K8S_REPLICASET_AVAILABLE_PODS // k8s.replicaset.available_pods: Replaced by `k8s.replicaset.pod.available`.
METRIC_K8S_REPLICASET_DESIRED_PODS // k8s.replicaset.desired_pods: Replaced by `k8s.replicaset.pod.desired`.
METRIC_K8S_REPLICATIONCONTROLLER_AVAILABLE_PODS // k8s.replicationcontroller.available_pods: Replaced by `k8s.replicationcontroller.pod.available`.
METRIC_K8S_REPLICATIONCONTROLLER_DESIRED_PODS // k8s.replicationcontroller.desired_pods: Replaced by `k8s.replicationcontroller.pod.desired`.
METRIC_K8S_STATEFULSET_CURRENT_PODS // k8s.statefulset.current_pods: Replaced by `k8s.statefulset.pod.current`.
METRIC_K8S_STATEFULSET_DESIRED_PODS // k8s.statefulset.desired_pods: Replaced by `k8s.statefulset.pod.desired`.
METRIC_K8S_STATEFULSET_READY_PODS // k8s.statefulset.ready_pods: Replaced by `k8s.statefulset.pod.ready`.
METRIC_K8S_STATEFULSET_UPDATED_PODS // k8s.statefulset.updated_pods: Replaced by `k8s.statefulset.pod.updated`.
METRIC_RPC_CLIENT_REQUESTS_PER_RPC // rpc.client.requests_per_rpc: Removed, no replacement at this time.
METRIC_RPC_CLIENT_RESPONSES_PER_RPC // rpc.client.responses_per_rpc: Removed, no replacement at this time.
METRIC_RPC_SERVER_REQUESTS_PER_RPC // rpc.server.requests_per_rpc: Removed, no replacement at this time.
METRIC_RPC_SERVER_RESPONSES_PER_RPC // rpc.server.responses_per_rpc: Removed, no replacement at this time.
METRIC_V8JS_HEAP_SPACE_AVAILABLE_SIZE // v8js.heap.space.available_size: Replaced by `v8js.memory.heap.space.available_size`.
METRIC_V8JS_HEAP_SPACE_PHYSICAL_SIZE // v8js.heap.space.physical_size: Replaced by `v8js.memory.heap.space.physical_size`.
GEN_AI_SYSTEM_VALUE_AZ_AI_INFERENCE // az.ai.inference: Replaced by `azure.ai.inference`.
GEN_AI_SYSTEM_VALUE_AZ_AI_OPENAI // az.ai.openai: Replaced by `azure.ai.openai`.
ATTR_PROCESS_PAGING_FAULT_TYPE // process.paging.fault_type: Replaced by `system.paging.fault.type`.
ATTR_SYSTEM_CPU_LOGICAL_NUMBER // system.cpu.logical_number: Replaced by `cpu.logical_number`.
ATTR_SYSTEM_PAGING_TYPE // system.paging.type: Replaced by `system.paging.fault.type`.
ATTR_SYSTEM_PROCESS_STATUS // system.process.status: Replaced by `process.state`.1 newly undeprecated export
GEN_AI_SYSTEM_VALUE_XAI // xai157 added exports
METRIC_CONTAINER_MEMORY_AVAILABLE // container.memory.available
METRIC_CONTAINER_MEMORY_PAGING_FAULTS // container.memory.paging.faults
METRIC_CONTAINER_MEMORY_RSS // container.memory.rss
METRIC_CONTAINER_MEMORY_WORKING_SET // container.memory.working_set
METRIC_K8S_CONTAINER_CPU_LIMIT_UTILIZATION // k8s.container.cpu.limit_utilization
METRIC_K8S_CONTAINER_CPU_REQUEST_UTILIZATION // k8s.container.cpu.request_utilization
METRIC_K8S_CRONJOB_JOB_ACTIVE // k8s.cronjob.job.active
METRIC_K8S_DAEMONSET_NODE_CURRENT_SCHEDULED // k8s.daemonset.node.current_scheduled
METRIC_K8S_DAEMONSET_NODE_DESIRED_SCHEDULED // k8s.daemonset.node.desired_scheduled
METRIC_K8S_DAEMONSET_NODE_MISSCHEDULED // k8s.daemonset.node.misscheduled
METRIC_K8S_DAEMONSET_NODE_READY // k8s.daemonset.node.ready
METRIC_K8S_DEPLOYMENT_POD_AVAILABLE // k8s.deployment.pod.available
METRIC_K8S_DEPLOYMENT_POD_DESIRED // k8s.deployment.pod.desired
METRIC_K8S_HPA_POD_CURRENT // k8s.hpa.pod.current
METRIC_K8S_HPA_POD_DESIRED // k8s.hpa.pod.desired
METRIC_K8S_HPA_POD_MAX // k8s.hpa.pod.max
METRIC_K8S_HPA_POD_MIN // k8s.hpa.pod.min
METRIC_K8S_JOB_POD_ACTIVE // k8s.job.pod.active
METRIC_K8S_JOB_POD_DESIRED_SUCCESSFUL // k8s.job.pod.desired_successful
METRIC_K8S_JOB_POD_FAILED // k8s.job.pod.failed
METRIC_K8S_JOB_POD_MAX_PARALLEL // k8s.job.pod.max_parallel
METRIC_K8S_JOB_POD_SUCCESSFUL // k8s.job.pod.successful
METRIC_K8S_NODE_CPU_ALLOCATABLE // k8s.node.cpu.allocatable
METRIC_K8S_NODE_EPHEMERAL_STORAGE_ALLOCATABLE // k8s.node.ephemeral_storage.allocatable
METRIC_K8S_NODE_MEMORY_ALLOCATABLE // k8s.node.memory.allocatable
METRIC_K8S_NODE_MEMORY_AVAILABLE // k8s.node.memory.available
METRIC_K8S_NODE_MEMORY_PAGING_FAULTS // k8s.node.memory.paging.faults
METRIC_K8S_NODE_MEMORY_RSS // k8s.node.memory.rss
METRIC_K8S_NODE_MEMORY_WORKING_SET // k8s.node.memory.working_set
METRIC_K8S_NODE_POD_ALLOCATABLE // k8s.node.pod.allocatable
METRIC_K8S_POD_MEMORY_AVAILABLE // k8s.pod.memory.available
METRIC_K8S_POD_MEMORY_PAGING_FAULTS // k8s.pod.memory.paging.faults
METRIC_K8S_POD_MEMORY_RSS // k8s.pod.memory.rss
METRIC_K8S_POD_MEMORY_WORKING_SET // k8s.pod.memory.working_set
METRIC_K8S_POD_STATUS_PHASE // k8s.pod.status.phase
METRIC_K8S_POD_STATUS_REASON // k8s.pod.status.reason
METRIC_K8S_REPLICASET_POD_AVAILABLE // k8s.replicaset.pod.available
METRIC_K8S_REPLICASET_POD_DESIRED // k8s.replicaset.pod.desired
METRIC_K8S_REPLICATIONCONTROLLER_POD_AVAILABLE // k8s.replicationcontroller.pod.available
METRIC_K8S_REPLICATIONCONTROLLER_POD_DESIRED ...experimental/v0.208.0
0.208.0
💥 Breaking Changes
- feat(otlp-exporter-base)!: allow passing an async function to headers option #5994 @pichlermarc
- In addition to static headers, OTLP exporters now allow passing an async function that returns headers which will be called before each export. See TSDoc for
headersinOTLPExporterConfigBasefor details. - Breaking changes:
- (user-facing):
headersoption in all OTLP exporters now accepts a function that returns aPromise<Record<string, string>>in addition to the existingRecord<string, string>type. - (user-facing):
headersinHttpNodeRequestParameters,FetchTransportParameters, andXhrRequestParametersnow only accept async functions. - (user-facing):
headersinOtlpHttpConfigurationnow only accepts async functions.
- (user-facing):
- In addition to static headers, OTLP exporters now allow passing an async function that returns headers which will be called before each export. See TSDoc for
- feat(sdk-logs): remove NoopLogRecordProcessor from exports #6079 @cjihrig
- feat(api-logs): remove ProxyLogger from exports #6082 @cjihrig
- feat(api-logs): remove NOOP_LOGGER_PROVIDER and NoopLoggerProvider from exports #6086 @cjihrig
🚀 Features
- feat(instrumentation): allow error of safeExecuteInTheMiddleAsync to be async #6032 @JPeer264
- feat(opentelemetry-configuration): parse logger provider from config file #5995 @maryliag
- feat(opentelemetry-configuration): parse meter provider from config file #6000 @maryliag
- feat(opentelemetry-configuration): add backup options for certificates and endpoints #6038 @maryliag
- feat(opentelemetry-configuration): add backups for compression, timeout, headers #6058 @JamieDanielson
- feat(opentelemetry-configuration): set attributes from attribute list from env variables #6043 @maryliag
🐛 Bug Fixes
📚 Documentation
🏠 Internal
v2.2.0
2.2.0
🐛 Bug Fixes
- fix(core): avoid leaking Node.js types via
unrefTimer()util #5986 @pichlermarc - fix(core): avoid leaking Node.js types via otperformance #5987 @pichlermarc
- important: this bug fix may be breaking for certain uses of
otperformanceotperformance.now()andotperformance.timeOriginare not affected.- the previously used type was incorrect and overly broad, leading to unexpected run-time behavior runtimes that are not Node.js.
- these problems are now caught on compile-time: if you have been using this API and this change is breaking to you, please consider using your target platform's
performanceimplementation instead.
- important: this bug fix may be breaking for certain uses of
🏠 Internal
- test(shim-opentracing): add comparison thresholds in flaky assertions #5974 @cjihrig
- test(exporter-jaeger): clean up OTEL_EXPORTER_JAEGER_AGENT_PORT between tests #6003 @cjihrig
- test(sdk-trace-base): ensure environment variables are cleaned up between tests #6011 @cjihrig
- perf(opentelemetry-core): optimize attribute serialization #5866 @43081j
- test: test Node.js 25 in CI #6019 @cjihrig