Documentation forAppOptics

Node.js Agent (legacy) Release Notes

AppOptics agents are no longer receiving updates. The new SolarWinds Observability Libraries can send APM data to AppOptics and are regularly updated with new features and improvements. If your components are supported by the new libraries, consider transitioning to the SolarWinds Observability Libraries for your APM needs. Alternatively, you can also consider using SolarWinds Observability as your primary APM monitoring solution.

SolarWinds Observability Libraries are not compatible with AppOptics agents. Do not use a mix of SolarWinds Observability Libraries and AppOptics agents to instrument applications that are part of a distributed trace.

10.2.2 - May 24, 2022

Return to top

Maintenance:

  • Supports Node 18
  • Updated dependencies

Fixes:

  • No error when using without Service Key.
  • No error logging for failing to report error on an aborted connection.

Breaking changes:

  • None

10.2.1 - February 22, 2022

Return to top

Maintenance:

  • Fixed package dependencies.
  • Fixed longstanding bugs in tedious and oracledb probes.

Breaking changes:

  • None

10.2.0 - January 12, 2022

Return to top

Features:

  • Added a config option to deregister the fs probe

Maintenance

  • Modified agent initialization to minimize usage of patched fs at startup
  • Changed prepack script to fully support install from branch
  • Supports Node 17 (preview for 18)

Breaking changes

  • None

10.1.0 - September 23, 2021

Return to top

Maintenance:

  • Published using GitHub Actions
  • Supports Node 16
  • Added node-pre-gyp distributable binaries for Node 16
  • Using oboe c-lib v10.1.1
  • Updated and trimmed dependencies
  • Updated and trimmed files in package
  • Code lint

Breaking changes:

  • None

10.0.1 - February 11, 2021

Return to top

Fixes:

  • avoid triggering non-existent property warning during module.exports on Node 14
  • documentation updates

10.0.0 - February 4, 2021

Return to top

Features

  • @appoptics/apm-bindings replaces appoptics-bindings.
  • @appoptics/apm-bindings uses node-pre-gyp so that users of LTS versions of node do not need to have the c/c++ build chain installed.
  • if APPOPTICS_LOG_SETTINGS is empty suppress all logging
  • .eslintrc.yaml renamed to .eslintrc.json
  • use shimmer instead of ximmer
  • add span.runPromise() - native async span runner
  • updated to Apache 2.0 license
  • [breaking] removed ao.serviceKey
  • [breaking] configuration file name-change

Fixes:

  • pass options to koa constructor
  • check if module needs patching before doing builtin lookup
  • set txname when not set by frameworks

9.0.0 - December 2, 2020

Return to top

Features

  • lambda support
  • capture agent version in init message

Breaking change

  • removed ao.serviceKey property.

Bug fix

  • change config file name appoptics-apm.{js|json} => appoptics-apm-config.{js|json}

8.1.0 - August 19, 2020

Return to top

Features and bug fixes

  • http/https probe configuration property to specify header to be used for ClientIP KV.
  • an error is no longer logged when the http socket address is undefined

8.0.1 - July 6, 2020

Return to top

  • add support for cassandra-driver >= v4.4.0
  • document proxy in configuration guide

8.0.0 - July 1, 2020

Return to top

Features

  • minimize span/event creation for unsampled traces
  • support HTTP proxy configuration

Miscellaneous

  • improve span.runAsync() and span.runSync() logic
  • debounce metric send errors to maximum one per metrics interval.
  • test.sh reworked to avoid mocha-created async context.
  • more consistent logging
  • getFormattedTraceId() uses ao.lastEvent not ao.topSpan for task ID and sample flag.
  • implement messaging for collector-requested soft-disable [AO-15324]
  • incorporate bindings@10 changes for RPC size [AO-16062]
  • replace span.descended => span.topSpan [AO-15140]

Breaking changes

7.1.1 - February 28, 2020

Return to top

  • Fix undefined reporter in sendMetrics()

7.1.0 - February 20, 2020

Return to top

New feature

  • Run-time metrics

Testing changes

  • add selectone for finer grained target range selection

7.0.0 - January 2, 2020

Return to top

major changes & bug fixes

  • move to ace-context with cls-hooked as backup. remove continuation-local-storage.
  • add forceNewTrace option to startOrContinueTrace()
  • force new context on inbound HTTP requests
  • support restify v7+
  • fix http RemoteURL when search/query
  • exit http/s client spans correctly on socket error events
  • exit http/s client spans on upgrade events
  • update zlib to handle brotli compression
  • don't add Database KV when database is undefined in connect

minor changes

  • suppress logging of missing spans during node bootstrap phase
  • add static debugging config for ace-context
  • more consistent span logging messages
  • optimize built-in patching
  • check new http_parser values during init

testing changes

  • test q and bluebird promises in custom.test.js
  • fix sendReport() being called twice on outer:exit event in zlib testing
  • add .mocharc with exit: true to prevent tests from hanging.
  • make http/https testing use common code test/probes/http-common.js
  • http/https tests now generate real socket errors.
  • test/composite/request.test.js now generates a real socket error
  • add forceNewTrace testing to test/custom.test.js
  • add websocket tests
  • clear context after pg6-plus test
  • don't test zlib's brotli before node v11.7.0
  • update pino to 5.15.0 for pino/flatstr intermittent failures

bookkeeping

  • ignore *.log files in package root
  • .eslintrc.yaml - add BigInt, ignore template literal max line length
  • updated guides/api.md
  • change form of license to "SEE LICENSE IN "

6.9.0 - Oct 28, 2019

Return to top

Features

  • new mongodb probe since v3.3.0 no longer uses mongodb-core
  • allow the fs probe to ignore specific errors (ENOENT, etc.)
  • disable mongodb-core versions < 3 when node version >= 11.15.0 (v8 memory leak)
  • include version patched when APPOPTICS_LOG_SETTINGS include patching.

Fixes

  • supply a default when there is no TransactionName.
  • log only one error for each bad KV pair
  • fix duplicate/incorrect logging of getTraceSettings() errors
  • reset count and time-window when issuing a debounced log message
  • fix bug where FileDescriptor would not be added to an exit event
  • require-patch now logs the version for patched modules.

6.8.0 - Oct 1, 2019

Return to top

  • fetch container information in azure app service environment

6.7.1- Sep 25, 2019

Return to top

  • bind context for response finalizer in instrumentHttp.
  • lib/probes/zlib.js - only bind emitter when context exists.
  • lib/probes/@hapi/hapi.js - consistently report template language without dot.
  • test/ various - use port 3500 to avoid conflicts with commonly used 3000.
  • test/probes/hapi/hapi-17-and-above.js - add zlib testing and fix when invalid vision plugin.
  • update guides/configuration.md.

6.7.0 - Sep 10, 2019

Return to top

  • trigger trace
  • replace legacy event-pre-handle with emitter.prependListener
  • add ec2MetadataTimeout property to configuration file
  • improve hapi TemplateLanguage detection, fix invalid type
  • log invalid/unknown APPOPTICS_ environment variables
  • add checks for valid logger in Debounce constructor
  • add test/probes/http-trigger-trace.test.js to suite
  • start to centralize env vars in lib/c-lib-env-vars.js and test/config.test.js

6.6.0 - Jul 5, 2019

Return to top

  • context management simplification + bindings 6.4.0
  • handle more boolean environment variable variations.
  • propagate FilePath KV value correctly in edge case
  • add log setting 'event:create', cassandra-driver now always uses 'patching'

6.5.1 - Jun 10, 2019

Return to top

  • Use appoptics-bindings@6.3.1 (fixes memory leak)

6.5.0 - Jun 10, 2019

Return to top

  • fix for node v11.10.0+ corrupted histograms
  • support new @hapi/hapi and @hapi/vision packages
  • improved environment variable handling

6.4.0 - May 12, 2019

Return to top

  • support new API token format
  • update bindings to version with swoken support (v6.2.1).
  • test against v12 in matrix tests (git@github.com:appoptics/node-apm-matrix.git)
  • update dependencies to v12 compatible versions (level, bcrypt)

6.3.2 - May 6, 2019

Return to top

  • use appoptics-bindings v6.1.1
  • split majority of api into separate module
  • improve startup logging when errors or disabled
  • additional testing for agent-disabled mode

6.3.1 - Apr 29, 2019

Return to top

  • Update guides/configuration.md for log insertion settings.
  • Update config file example with default settings.
  • Correct default log settings.

6.3.0 - Apr 29, 2019

Return to top

  • full log insertion support and tests (morgan, winston, pino, bunyan)
  • add config property insertTraceIdsIntoLogs to insert trace IDs into all loggers except morgan.
  • add config property insertTraceIdsIntoMorgan to auto-append trace IDs for morgan.
  • add createTraceIdsToken config file property. Set to 'morgan' to create token ao-auto-trace-id.
  • set config serviceKey to service key actually used
  • improve "task IDs don't match" logging
  • fix aws-sdk bad signature on retry
  • correct reversed promise/non-promise API docs.

6.2.1 - Apr 10, 2019

Return to top

  • fix sampledOnly bug

6.2.0 - Apr 9, 2019

Return to top

  • Add traceId insertion to bunyan logger.
  • insertTraceIdsIntoLogs options are false, true, 'traced', 'sampledOnly', 'always'

6.1.0 - Apr 7, 2019

Return to top

  • insert trace IDs into logs
  • automatic for pino, winston
  • new API function getFormattedTraceId for inserting the token using code
  • custom metrics via ao.sendMetric()
  • fix config file path error

6.0.3 - Mar 22, 2019

Return to top

  • promise-based custom SDK methods pStartOrContinueTrace and pInstrument
  • koa-route v3 support
  • update dependencies

6.0.2 - Mar 11, 2019

Return to top

use function names in koa and express route spans

documentation updates

6.0.1 - Mar 5, 2019

Return to top

try to add x-trace header back to http response if koa's error handler removes it

handle thrown exceptions in koa-router/patchAsyncHandler

6.0.0 - Mar 4, 2019

Return to top

Features

  • per-URL transaction filtering
  • add instrumentation of routes and middleware for express, koa, and restify
  • set logging with APPOPTICS_LOG_SETTINGS=error,warn as opposed to DEBUG=appoptics:error,appoptics:warn

Bug fixes

  • fix koa-router probe for multiple middleware in single call
  • fix incorrect library version reported in init message

Breaking changes

  • API-level breaking changes in guides/migration-5to6.md

5.9.5 - Jan 25, 2019

Return to top

  • koa/koa-router updates
  • add support for koa-router v6 &v7

5.9.4 - Dec 19, 2018

Return to top

  • mongoose updates
  • update probes/mongoose to handle version mongoose@5
  • update tests for mongoose@4
  • add support for queued queries.

5.9.3 - Dec 13, 2018

Return to top

  • This release supports postgres v7.
  • v7 supports promises and callbacks
  • v6 and before supports callbacks and events
  • create extensive test suite for pg7 (split from pg6 tests)
  • use testeachversion's dependencies for including pg-native

5.9.2 - Nov 29, 2018

Return to top

  • fix failure to trace https.get() for node 9.9.0+
  • handle node 10.9.0+ signature for http/https request()
  • add tests for the different request() signatures.
  • move to testeachversion@8
  • update devDependencies to latest versions supported under node 8.

5.9.1 - Nov 15, 2018

Return to top

  • redis - support through most recently released version
  • cassandra-driver - change incorrect info level to patching

5.9.0 - Nov 12, 2018

Return to top

  • fix CLS-not-active errors in amqplib, levelup
  • fix lost-context errors in cassandra-driver, mysql
  • ao.bindEmitter now returns the possibly bound emitter as documented
  • don't mask .native functions for fs.realpath and fs.realpathSync (node >= 9.2.0)
  • implement makeLogMissing() for patching errors.

5.8.0 - Oct 24, 2018

Return to top

  • Handle malformed service keys by transforming them if possible.
  • Use appoptics-bindings@5.7.1 for improved network interface handling.
  • Fix invalid FilePath error when setting KVs.
  • Fix invalid Port error when setting KVs.
  • Don't allow KV value to be NaN.
  • Update API docs on how to report errors.

5.7.0 - Oct 16, 2018

Return to top

  • support hapi version 17
  • add custom transaction name function for hapi. (hapi request object is single argument)
  • remove babel preprocessing, use native es6
  • start checking expected log messages in tests
  • use shimmer fork (ximmer) until shimmer function check is fixed
  • treat vision as a separate package from hapi (when it is)

5.6.1 - Sep 13, 2018

Return to top

  • use appoptics-bindings v5.5.1 (alpine detection fix)

5.6.0 - Sep 12, 2018

Return to top

  • Fixes possible file corruption by http instrumentation
  • Add support for koa@2
  • Use cls-hooked for node versions 8+
  • Maintain context for redis pub/sub.
  • Logging improvements.
  • Testing improvements.
  • Use appoptics-bindings@5.4.1 for host metadata changes

5.4.2 - Aug 28, 2018

Return to top

  • Add missing 4th argument to hapi.decorate (#21).
  • Issue patching log messages whenever a hapi patch fails.

5.4.1 - Aug 21, 2018

Return to top

  • Update generic-pool to promise-based interface. (#15)
  • Fix bindEmitter errors.
  • Define missing log object in hapi probe. (#14)

5.4.0 - Aug 14, 2018

Return to top

  • Do not re-execute appoptics-apm require file even if cache entry is deleted.
  • Do not log warning if a domain prefix is added to a custom transaction name.
  • Add test to verify single execution of appoptics-apm.

5.3.2 - Aug 2, 2018

Return to top

  • Fix x-trace formatting bug

5.3.1 - Aug 1, 2018

Return to top

  • Add diagnostic information to bind emitter errors.
  • Debounce repetitive bind emitter errors.
  • Improve checking when adding edges.
  • Fix missing context for pg (postgres).
  • Fix spurious txname changed warnings.
  • Setup composite tests (multiple modules in combination).
  • Add checks for bad x-trace header in response headers.
  • Test improvements.
  • Work towards eslint compliance.

5.2.3 - Jul 10, 2018

Return to top

  • Tighten checks on inbound x-trace IDs.
  • Avoid expected info logging during startup.
  • Don't edge to unsampled x-trace
  • Avoid creating string for sampling check.
  • Add tests for sampling checks.
  • Incremental eslintification.

5.2.2 - Jul 5, 2018

Return to top

  • fix ao.bind - not a function warning.

5.2.1 - Jul 3, 2018

Return to top

  • alpine support
  • bindings 5.3.0
  • improve install
  • start eslint cleanup
  • move oracle and pg installs to deps.sh
  • log warning on library transaction name change
  • bluebird update for v3
  • update "bash" test configuration
  • move levelup test-db location
  • change README to reflect node 4 no longer in LTS window

5.0.0 - Jun 11, 2018

Return to top

  • Fix bindEmitter test.
  • Support appoptics-bindings@5
  • add domainPrefix support
  • add custom transaction name support
  • add isReadyToSample function
  • Update documentation
  • move from yuidoc to jsdoc via jsdoc2md
  • provide more examples in api doc
  • Breaking changes from previous v4.3.2-beta release
  • log.force has been removed
  • enabled now defaults to true in options arg to instrument or startOrContinueTrace
  • some testing may require setting APPOPTICS_TOKEN_BUCKET_* environment variables.
  • Dependency update: appoptics-bindings@4.6.2 fixes std::isnan reference error.
  • mongodb-core support through version 3 (replica-sets not yet supported)
  • remove support for node versions less than 4
  • config file env var now APPOPTICS_APM_CONFIG_NODE
  • remove node-cassandra-cql support
  • bin/node-ao updated
  • remove dev-only files from npm package
  • add hostname alias support