Improve query sanitisation performance
Fixed
- Fix a performance issue when sanitising
INSERT INTO ... VALUES
queries.
View the Node.js package v3.5.5 changelog for more information.
INSERT INTO ... VALUES
queries.View the Node.js package v3.5.5 changelog for more information.
Allow Pino transport to be used as a transport. Before, our Pino transport could only be used as a destination:
This meant it was not possible to log both to our transport and to another destination.
Now, it is also possible to use it as a Pino transport, with the transport
Pino config option or the pino.transport()
function:
It is no longer necessary to pass the AppSignal client to the Pino transport. AppSignal must be active for the Pino transport to work.
By enabling its use as a transport, it is now possible to use it alongside other transports:
View the Node.js package v3.5.4 changelog for more information.
CONTAINER_VERSION
system environment variable is present, it will use used to set the revision
config option automatically. Overwrite it's value by configuring the revision
config option for your application.View the Node.js package v3.5.3 changelog for more information.
View the Node.js package v3.5.2 changelog for more information.
A Pino transport is now available. If Pino is your main logger, you can now use the AppSignal pino transport to send those logs to AppSignal.
View the Node.js package v3.5.1 changelog for more information.
Add support for heartbeat check-ins.
Use the checkIn.heartbeat
method to send a single heartbeat check-in event from your application. This can be used, for example, in your application's main loop:
Heartbeats are deduplicated and sent asynchronously, without blocking the current thread. Regardless of how often the .heartbeat
method is called, at most one heartbeat with the same identifier will be sent every ten seconds.
Pass {continuous: true}
as the second argument to send heartbeats continuously during the entire lifetime of the current process. This can be used, for example, after your application has finished its boot process:
Appsignal.checkIn.cron
, instead of blocking the current process while the check-in events are sent, schedule them to be sent in a separate process.Appsignal.stop
for the Node.js engine to allow itself to shut down. It should still be called and awaited in production scenarios and at the end of scripts, as it ensures that scheduled check-ins are delivered.View the Node.js package v3.5.0 changelog for more information.
Rename heartbeats to cron check-ins. Calls to Appsignal.heartbeat
and Appsignal.Heartbeat
should be replaced with calls to Appsignal.checkIn.cron
and Appsignal.checkIn.Cron
, for example:
Appsignal.heartbeat
and to the Appsignal.Heartbeat
constructor will emit a deprecation warning.View the Node.js package v3.4.9 changelog for more information.
View the Node.js package v3.4.8 changelog for more information.
View the Node.js package v3.4.7 changelog for more information.
Fix an issue where a later span close time than accurate, and therefore a longer span duration, is reported to AppSignal under certain circumstances.
View the Node.js package v3.4.6 changelog for more information.
Add BullMQ support through the @appsignal/opentelemetry-instrumentation-bullmq
instrumentation. AppSignal will automatically instrument the use of BullMQ in your application.
Calls to functions that enqueue jobs, such as Queue.add and others, will be instrumented as an event in the event timeline for the performance sample in which it takes place.
When a BullMQ Worker processes a job, this will result in a performance sample in the background namespace.
Rename the hostname
tag, which contains the host of the URI that an HTTP request was made against, to request_host
. This fixes an issue where the hostname tag would later be internally overriden to the hostname of the machine processing the request, but notifications would still be emitted containing the previous hostname value.
Improve the amqlib instrumentation by parsing it like other messaging spans following the OpenTelemetry messaging spec.
View the Node.js package v3.4.5 changelog for more information.
Instrument calls to fetch
in Node.js. Requests made using Node.js' global fetch
, or through the underlying undici
library, will be automatically instrumented and shown as events in your performance samples' event timeline.
Support Kamal-based deployments. Read the KAMAL_VERSION
environment variable, which Kamal exposes within the deployed container, if present, and use it as the application revision if it is not set. This will automatically report deploy markers for applications using Kamal.
See the Node.js package 3.4.4 changelog for more information.
Added support for amqplib
. All spans containing amqplib
will now have child spans related to the amqplib
operations.
See the Node.js package 3.4.2 changelog for more information.
ignoreLogs
configuration optionAdd the ignoreLogs
configuration option, which can also be configured as the APPSIGNAL_IGNORE_LOGS
environment variable.
The value of ignoreLogs
is a list (comma-separated, when using the environment variable) of log line messages that should be ignored. For example, the value "start"
will cause any message containing the word "start" to be ignored. Any log line message containing a value in ignoreLogs
will not be reported to AppSignal.
The values can use a small subset of regular expression syntax (specifically, ^
, $
and .*
) to narrow or expand the scope of lines that should be matched.
For example, the value "^start$"
can be used to ignore any message that is exactly the word "start", but not messages that merely contain it, like "Process failed to start". The value "Task .* succeeded"
can be used to ignore messages about task success regardless of the specific task name.
Heartbeats are currently only available to beta testers. If you are interested in trying it out, send an email to support@appsignal.com!
Add heartbeats support. You can send heartbeats directly from your code, to track the execution of certain processes:
You can pass a function to heartbeat
, to report to AppSignal both when the
process starts, and when it finishes, allowing you to see the duration of the
process:
If an exception is raised within the function, the finish event will not be reported to AppSignal, triggering a notification about the missing heartbeat. The exception will bubble outside of the heartbeat function.
If the function passed to heartbeat
returns a promise, the finish event will
be reported to AppSignal if the promise resolves. This means that you can use
heartbeats to track the duration of async functions:
If the promise is rejected, or if it never resolves, the finish event will not be reported to AppSignal.
Appsignal.stop()
must be awaitedAppsignal.stop()
now returns a promise. For your application to wait until
AppSignal has been gracefully stopped, this promise must be awaited:
In older Node.js versions where top-level await is not available, terminate the application when the promise is settled:
See the Node.js package 3.4.0 changelog for more information.
Implement CPU count configuration option. Use it to override the auto-detected, cgroups-provided number of CPUs that is used to calculate CPU usage percentages.
To set it, use the the cpuCount
configuration option or the APPSIGNAL_CPU_COUNT
environment variable.
Fix UNKNOWN
HTTP method in Next.js 14 performance incidents.
See the Node.js 3.3.3 package changelog for more information.
In previous versions of the Node.js integration, environment variables were evaluated to read their values. This version instead parses them based on their expected values.
See the Node.js 3.2.0 package changelog for more information.
See the Node.js 3.3.0 package changelog for more information.
appsignal
configuration file.See the Node.js 3.1.0 package changelog for more information.
AppSignal offers a 30-day free trial, no credit card is required. All features are available in all plans. Start monitoring your application in just a few clicks!