Documentation forAppOptics

Node.js Agent Release Notes

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

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