@appsignal/nodejs
Advanced tools
Changelog
3.4.5
Published on 2024-06-12.
388cade patch - 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.
388cade patch - Add basic OpenTelemetry messaging support. This adds support for any OpenTelemetry instrumentation that complies with the OpenTelemetry Semantic Conventions specification for messaging.
388cade patch - 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.
1a01c5d patch - Improve the amqlib instrumentation by parsing it like other messaging spans following the OpenTelemetry messaging spec.
Changelog
3.4.3
Published on 2024-05-14.
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.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.6bf596c patch - ### Improve error reporting during initialisation
Do not report an error with the extension installation when AppSignal is imported -- instead, report it when attempting to initialise AppSignal. Do not report an error with the extension if AppSignal is not configured to be active.
When AppSignal does not start due to its configuration (active
is set to false
, or the push API key is missing) report the specific reason why.
Changelog
3.4.2
amqplib
. Packages using amqplib such as Rascal are supported.Changelog
3.4.0
Published on 2024-04-22.
81bd0a9 minor - 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:
import { heartbeat } from "@appsignal/nodejs"
function sendInvoices() {
// ... your code here ...
heartbeat("send_invoices")
}
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:
import { heartbeat } from "@appsignal/nodejs"
function sendInvoices() {
heartbeat("send_invoices", () => {
// ... your code here ...
})
}
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:
import { heartbeat } from "@appsignal/nodejs"
async function sendInvoices() {
await heartbeat("send_invoices", async () => {
// ... your async code here ...
})
}
If the promise is rejected, or if it never resolves, the finish event will not be reported to AppSignal.
9985d08 patch - Implement 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.
6224018 patch - Appsignal.stop()
now returns a promise. For your application to wait until
AppSignal has been gracefully stopped, this promise must be awaited:
import { Appsignal } from "@appsignal/nodejs"
await Appsignal.stop()
process.exit(0)
In older Node.js versions where top-level await is not available, terminate the application when the promise is settled:
import { Appsignal } from "@appsignal/nodejs"
Appsignal.stop().finally(() => {
process.exit(0)
})