Changelog

Improving AppSignal, one deploy at a time.

Apr 26, 2024

Fix unused variable warnings

Elixirphoenix 2.3.7

Fix unused variables warnings introduced in the previous release.

See the changelog for AppSignal for Phoenix package 2.3.7 for more information.

Apr 25, 2024

Support parial key matches in Phoenix's filter_parameters

Elixir2.10.1

Fix the Phoenix filter_parameters config option support for partial key matches. When configuring config :phoenix, filter_parameters with ["key"] or {:discard, ["key"]}, it now also matches partial keys like "my_key", just like Phoenix's logger does.


See the Elixir package 2.10.1 changelog for more information.

Apr 25, 2024

Improved Phoenix.ActionClauseError support

Elixirphoenix 2.3.6

Set an action name for Phoenix.ActionClauseError errors. It will now group these errors per controller-action combination for more convenient grouping.

See the changelog for AppSignal for Phoenix package 2.3.6 for more information.

Apr 22, 2024

Add heartbeats and `ignore_logs` config option

Elixir2.10.0

Added

ignore_logs configuration option

Add the ignore_logs configuration option, which can also be configured as the APPSIGNAL_IGNORE_LOGS environment variable.

The value of ignore_logs 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 ignore_logs 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

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:

elixir
def send_invoices do # ... your code here ... Appsignal.heartbeat("send_invoices") end

You can pass a function to Appsignal.heartbeat, to report to AppSignal both when the process starts, and when it finishes, allowing you to see the duration of the process:

elixir
def send_invoices do Appsignal.heartbeat("send_invoices", fn -> # ... your code here ... end) end

If an exception is thrown 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.

Changed

Remove a broken link pointing to a 1.x upgrade page during the installation flow.


See the Elixir package 2.10.0 changelog for more information.

Apr 22, 2024

Add heartbeats and `ignoreLogs` config option

Node.js3.4.0

Added

ignoreLogs configuration option

Add 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

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:

javascript
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:

javascript
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:

javascript
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.

Changed

Appsignal.stop() must be awaited

Appsignal.stop() now returns a promise. For your application to wait until AppSignal has been gracefully stopped, this promise must be awaited:

javascript
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:

javascript
import { Appsignal } from "@appsignal/nodejs" Appsignal.stop().finally(() => { process.exit(0) })

See the Node.js package 3.4.0 changelog for more information.

Apr 22, 2024

Add heartbeats

Python1.3.0

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 use the heartbeat function to send heartbeats directly from your code, to track the execution of certain processes:

python
from appsignal import heartbeat def send_invoices(): # ... your code here ... heartbeat("send_invoices")

It is also possible to pass a defined function as an argument to the heartbeat function:

python
def send_invoices(): # ... your code here ... heartbeat("send_invoices", send_invoices)

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 be raised outside of the heartbeat function.


See the Python package 1.3.0 changelog for more information.

Apr 22, 2024

Add heartbeats and `ignore_logs` config option

Ruby3.7.0

ignore_logs configuration option

Add the ignore_logs configuration option, which can also be configured as the APPSIGNAL_IGNORE_LOGS environment variable.

The value of ignore_logs 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 ignore_logs 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

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:

ruby
def send_invoices() # ... your code here ... Appsignal.heartbeat("send_invoices") end

You can pass a block to Appsignal.heartbeat, to report to AppSignal both when the process starts, and when it finishes, allowing you to see the duration of the process:

ruby
def send_invoices() Appsignal.heartbeat("send_invoices") do # ... your code here ... end end

If an exception is raised within the block, the finish event will not be reported to AppSignal, triggering a notification about the missing heartbeat. The exception will bubble outside of the heartbeat block.


See the Ruby gem 3.7.0 changelog for more information.

Apr 15, 2024

Fix Flask 404 spans

Python1.2.1

When Flask apps received requests that didn't match with any app routes, those 404s were instrumented. This made the actions panel to show tons of actions corresponding to bots requests and the like, giving no meaningful information. This has been fixed and 404s will only be reported if they are part of your Flask app.

Apr 10, 2024

AppSignal for Kubernetes

We've released the first version of AppSignal for Kubernetes. After configuring and deploying AppSignal for Kubernetes in your cluster, an automated dashboard apears with Kubernetes Node metrics:

AppSignal Assignee Filter

We're curently gathering feedback on the current implementation, so please reach out via support@appsignal.com if you install AppSignal for Kubernetes in your cluster.

Apr 04, 2024

Assignee filter

We've introduced search functionality to the Assignee filter, making it easier to filter, find, and assign users to incidents:

AppSignal Assignee Filter
Mar 25, 2024

Fix CPU usage measurements

Ruby3.6.4

Fix CPU user/system usage measurements, as to take into account the amount of CPUs available.

Mar 25, 2024

Fix instrumentation for older redis-client versions

Ruby3.6.5

Fix a bug where performing queries using older versions of redis-client would result in a NoMethodError being raised.

Using redis-client version 0.14.0 or greater is a requirement for AppSignal to instrument Redis queries.

See the Ruby gem 3.6.5 changelog for more information.

Mar 25, 2024

Fix CPU usage measurements

Fix CPU user/system usage measurements, as to take into account the amount of CPUs available.

Mar 22, 2024

Add CPU count configuration option

Node.js3.3.2

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.

Mar 22, 2024

Fix performance incidents in Next.js 14

Node.js3.3.3

Fix UNKNOWN HTTP method in Next.js 14 performance incidents.

See the Node.js 3.3.3 package changelog for more information.

Mar 21, 2024

Don’t evaluate environment variable values to read configuration

Node.js3.3.1

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.

Mar 20, 2024

Add CPU count configuration option

Elixir2.9.1

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 cpu_count configuration option or the APPSIGNAL_CPU_COUNT environment variable.

Mar 20, 2024

Add minutely probes and other improvements

Python1.2.0

Add minutely probes

Add a minutely probes system. This can be used, alongside our metric helpers, to report metrics to AppSignal once per minute.

python
from appsignal import probes, set_gauge def new_carts(previous_carts=None): current_carts = Cart.objects.all().count() if previous_carts is not None: set_gauge("new_carts", current_carts - previous_carts) return current_carts probes.register("new_carts", new_carts)

The minutely probes system starts by default, but no probes are automatically registered. You can use the enable_minutely_probes configuration option to disable it.

Add CPU count configuration option

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 cpu_count configuration option or the APPSIGNAL_CPU_COUNT environment variable.

Fix ASGI events showing up as slow API requests

Fix ASGI events, from Python ASGI applications that have been instrumented with AppSignal, mistakenly showing up in the "Slow API requests" panel.

Mar 20, 2024

Improve Rails error reporter and other improvements

Ruby3.6.3

Improve Rails error reporter

Add request parameters, "path" and "method" tags to errors reported in controllers via the Rails error reporter. (Thanks @bdewater-thatch!)

Add CPU count configuration option

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 cpu_count configuration option or the APPSIGNAL_CPU_COUNT environment variable.

Mar 20, 2024

Add CPU count configuration option

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 cpu_count configuration option or the APPSIGNAL_CPU_COUNT environment variable.

Start your free trial

Don’t let the bad bugs bite. Try AppSignal for free.

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!