Fix unused variables warnings introduced in the previous release.
See the changelog for AppSignal for Phoenix package 2.3.7 for more information.
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.
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.
ignore_logs
configuration optionAdd 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 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:
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:
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.
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.
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:
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.
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:
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) })
See the Node.js package 3.4.0 changelog for more information.
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:
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:
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.
ignore_logs
configuration optionAdd 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 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:
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:
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.
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.
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:
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.
We've introduced search functionality to the Assignee filter, making it easier to filter, find, and assign users to incidents:
Fix CPU user
/system
usage measurements, as to take into account the amount of CPUs available.
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.
Fix CPU user
/system
usage measurements, as to take into account the amount of CPUs available.
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.
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.
Add a minutely probes system. This can be used, alongside our metric helpers, to report metrics to AppSignal once per minute.
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.
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, from Python ASGI applications that have been instrumented with AppSignal, mistakenly showing up in the "Slow API requests" panel.
Add request parameters, "path" and "method" tags to errors reported in controllers via the Rails error reporter. (Thanks @bdewater-thatch!)
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.
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.
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!