Changelog

Improving AppSignal, one deploy at a time.

Mar 04, 2024

Improved container CPU metrics, fix long running traces, histogram support

Python1.1.0

Added

  • Add histogram support to the OpenTelemetry HTTP server. This allows OpenTelemetry-based instrumentations to report histogram data to AppSignal as distribution metrics.

Changed

  • Breaking change: Normalize CPU metrics for cgroups v1 systems. When we can detect how many CPUs are configured in the container's limits, we will normalize the CPU percentages to a maximum of 100%. This is a breaking change. Triggers for CPU percentages that are configured for a CPU percentage higher than 100% will no longer trigger after this update. Please configure triggers to a percentage with a maximum of 100% CPU percentage.
  • Make the debug log message for OpenTelemetry spans from libraries we don't automatically recognize more clear. Mention the span id and the instrumentation library.
  • Fix an issue where queries containing a MySQL leading type indicator would only be partially sanitised.
  • Support fractional CPUs for cgroups v2 metrics. Previously a CPU count of 0.5 would be interpreted as 1 CPU. Now it will be correctly seen as half a CPU and calculate CPU percentages accordingly.
  • Update bundled trusted root certificates.

Fixed

  • Fix (sub)traces not being reported in their entirety when the OpenTelemetry exporter sends one trace in multiple export requests. This would be an issue for long running traces, that are exported in several requests.

See the Python package 1.1.0 changelog for more information.

Feb 26, 2024

Ruby gem 3.6.0

Ruby3.6.0

Added

  • Add instrumentation for all Rack responses, including streaming responses. New response_body_each.rack, response_body_call.rack and response_body_to_ary.rack events will be shown in the event timeline. This will show how long it takes to complete responses, depending on the response implementation.

    This Sinatra route with a streaming response will be better instrumented, for example:

    ruby
    get "/stream" do stream do |out| sleep 1 out << "1" sleep 1 out << "2" sleep 1 out << "3" end end
  • Add histogram support to the OpenTelemetry HTTP server. This allows OpenTelemetry-based instrumentations to report histogram data to AppSignal as distribution metrics.

Changed

  • Breaking change: Normalize CPU metrics for cgroups v1 systems. When we can detect how many CPUs are configured in the container's limits, we will normalize the CPU percentages to a maximum of 100%. This is a breaking change. Triggers for CPU percentages that are configured for a CPU percentage higher than 100% will no longer trigger after this update. Please configure triggers to a percentage with a maximum of 100% CPU percentage.
  • Support fractional CPUs for cgroups v2 metrics. Previously a CPU count of 0.5 would be interpreted as 1 CPU. Now it will be correctly seen as half a CPU and calculate CPU percentages accordingly.
  • Update bundled trusted root certificates.

Fixed

  • Fix (sub)traces not being reported in their entirety when the OpenTelemetry exporter sends one trace in multiple export requests. This would be an issue for long running traces, that are exported in several requests.

See the Ruby gem 3.6.0 changelog for more information.

Feb 23, 2024

Standalone agent 0.33.2

Fixed

  • Fix (sub)traces not being reported in their entirety when the OpenTelemetry exporter sends one trace in multiple export requests. This would be an issue for long running traces, that are exported in several requests.

This release can be installed through our standalone agent packages and as a Docker image.

Feb 21, 2024

Standalone agent 0.33.1

Added

  • Add histogram support to the OpenTelemetry HTTP server. This allows OpenTelemetry-based instrumentations to report histogram data to AppSignal as distribution metrics.

This release can be installed through our standalone agent packages and as a Docker image.

Feb 14, 2024

Standalone agent 0.33.0

Changed

  • Breaking change: Normalize CPU metrics for cgroups v1 systems. When we can detect how many CPUs are configured in the container's limits, we will normalize the CPU percentages to a maximum of 100%. This is a breaking change. Triggers for CPU percentages that are configured for a CPU percentage higher than 100% will no longer trigger after this update. Please configure triggers to a percentage with a maximum of 100% CPU percentage.
  • Support fractional CPUs for cgroups v2 metrics. Previously a CPU count of 0.5 would be interpreted as 1 CPU. Now it will be correctly seen as half a CPU and calculate CPU percentages accordingly.

This release can be installed through our standalone agent packages and as a Docker image.

Feb 13, 2024

App updates

We've improved a number of smaller details in the App. Here's a list of the changes we've made:

  • Selected columns on the Error/Performance sample pages are now persisted.
  • Alerts in the Time Detective now link to Anomaly Incidents, instead of the edit form.
  • Add log view params to the url, this allows for additional filtering on a log view, and the ability to save it as a new view.
  • The chart on the log view page now handles large timeframes. It now loads data in batches, preventing timeouts, and a broken graph.
  • Link templates for Error/Performance sample tags can now include dashes (-).
  • Expand SQL syntax highlighting to additional Event Payload bodies, such as active_record, ecto, knex, mysql, pg, sequel, psycopg2 and sql.
Feb 08, 2024

Default headers don't include `REQUEST_URI` anymore

Ruby3.5.6

Changed

  • The default headers no longer include REQUEST_URI as query params are not sanitize and might include PII. Now the REQUEST_PATH is used instead.

See the Ruby gem 3.5.6 changelog for more information.

Feb 07, 2024

OpenTelemetry metrics extractor

Node.js3.1.0

Added

  • OpenTelemetry instrumentations that emit metrics are now automatically extracted and reported to AppSignal. The metric provider is also globally available for you to send custom metrics using OpenTelemetry. Only gauges and counters are supported at the moment.

Fixed

  • An issue with boolean options not being correctly parsed in the appsignal configuration file.
  • An issue with MySQL queries with leading type indicators not being correctly sanitized.

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

Feb 02, 2024

Standalone agent 0.32.0

Added

  • Add a Debian 12 (Bookworm) package for the standalone agent.
  • Add support for Debian 12 (Bookworm) for the ARM architecture for standalone agent packages. This is a beta package and may not work as expected. Please report any issues you may encounter.

This release can be installed through our standalone agent packages and as a Docker image.

Feb 01, 2024

Add custom_on_create_fun hook for span creation

Elixir2.8.3

Added

  • Set data on spans with the custom_on_create_fun hook. This hook is called upon the creation of every span. This can be useful to add tags to internal traces and otherwise difficult to access traces.

    This won't be necessary for most scenarios. We recommend following our tagging guide instead.

    elixir
    defmodule MyApp.Appsignal do def custom_on_create_fun(_span) do Appsignal.Span.set_sample_data(Appsignal.Tracer.root_span, "tags", %{"locale": "en"}) end end
    elixir
    # config/config.exs config :appsignal, custom_on_create_fun: &MyApp.Appsignal.custom_on_create_fun/1

Changed

  • Make the debug log message for OpenTelemetry spans from libraries we don't automatically recognize more clear. Mention the span id and the instrumentation library.
  • Fix an issue where queries containing a MySQL leading type indicator would only be partially sanitised.

See the changelog for AppSignal for Elixir package 2.8.3 for more information.

Feb 01, 2024

redis-client support and MySQL query sanitization fix

Ruby3.5.5

Added

  • Add support for the redis-client gem, which is used by the redis gem since version 5.

Changed

  • Make the debug log message for OpenTelemetry spans from libraries we don't automatically recognize more clear. Mention the span id and the instrumentation library.
  • Fix an issue where queries containing a MySQL leading type indicator would only be partially sanitised.

Fixed

  • Add more testing to JRuby extension installation to better report the installation result and any possible failures.

See the Ruby gem 3.5.5 changelog for more information.

Jan 25, 2024

Add support for Ecto parallel preloads

Elixir2.8.2

Replacing use Ecto.Repo with use Appsignal.Ecto.Repo allows the Ecto instrumentation to keep context across the Elixir processes spawned by Ecto preload queries, ensuring that these queries are correctly instrumented:

elixir
defmodule MyApp.Repo do # replace `use Ecto.Repo` with `use Appsignal.Ecto.Repo` use Appsignal.Ecto.Repo, otp_app: :my_app, adapter: Ecto.Adapters.Postgres end

See the changelog for AppSignal for Elixir package 2.8.2 for more information.

Jan 24, 2024

Standalone agent 0.0.31

Changed

  • Fix disk usage returning a Vec with no entries on Alpine Linux when the df --local command fails.
  • Log a warning when no mountpoints are found to report the disk usage metrics. This scenario shouldn't happen (it should log an error, message about skipping a mountpoint or log the disk usage). Log a warning to detect if this issue really occurs.
  • Improve extraction of OpenTelemetry span details from the Requests library, by using the HTTP method, scheme, host and port as the event name. This improves grouping in the "Slow API requests" performance panel.
  • Remove extra HTTP attributes from Django root spans.
  • Remove route tag from HTTP server spans. Since the span will already have the route attribute as part of its name, the tag is redundant.
  • Filter more disk mountpoints for disk usage and disk IO stats. This helps reduce noise in the host metrics by focussing on more important mountpoints. Any mountpoint containing /etc/hostname, /etc/hosts, /etc/resolv.conf, /snap/ or /proc/ is ignored.
  • Make the debug log message for OpenTelemetry spans from libraries we don't automatically recognize more clear. Mention the span id and the instrumentation library.

Fixed

  • Fix missing error metrics for the error rate and error count graphs in some scenarios, like with Koa apps.
  • Fix an issue where the method tag extracted from an incoming HTTP request span would be overriden with the method used for an outgoing HTTP request span.
  • Support disk usage reporting (using df) on Alpine Linux. This host metric would report an error on Alpine Linux.
  • When a disk mountpoint has no inodes usage percentage, skip the mountpoint, and report the inodes information successfully for the inodes that do have an inodes usage percentage.
  • Fix an issue where queries containing a MySQL leading type indicator would only be partially sanitised.

This release can be installed through our standalone agent packages and as a Docker image.

Jan 19, 2024

Warn about committing Push API key

JavaScript@appsignal/cli@1.2.8

Changed

  • Warn about Push API key being committed in the AppSignal config file and recommend using system environment variables instead.

See the changelog for the AppSignal CLI package 1.2.8 for more information.

Jan 17, 2024

Long-term storage for logging

We've added a feature that allows for long-term storage of log sources. Provide an S3 bucket and credentials; we'll transfer our logs to your bucket.

AppSignal Long-term Log Storage UI

Long-term log storage is part of a suite of Business features that don't modify our core features but make administration and staying compliant more manageable.

So far, long-term log storage, enforcing two-factor authentication, and the ability to sign a Business Associate Agreement for HIPAA compliance are available. For pricing, please contact our Customer Success team.

Jan 16, 2024

Fix Alpine Linux disk usage metrics and keywords list as sample data

Elixir2.8.1

Changed

  • Fix disk usage returning a Vec with no entries on Alpine Linux when the df --local command fails.

  • Add support for lists in the sample data as root values on spans, as shown below. Previously we only supported lists as nested objects in maps.

    elixir
    Appsignal.Span.set_sample_data( Appsignal.Tracer.root_span, "custom_data", [ "value 1", "value 2" ] )

Removed

  • Remove the appsignal_set_host_gauge and appsignal_set_process_gauge extension functions. These functions were already deprecated and did not report any metrics.

Fixed

  • Fix missing error metrics for the error rate and error count graphs in some scenarios, like with Node.js Koa apps.

  • Add support for keywords lists in sample data on spans. These would previously be shown an empty list.

    elixir
    Appsignal.Span.set_sample_data( Appsignal.Tracer.root_span, "custom_data", %{"keyword_list": [foo: "some value", "bar": "other value"]} )

See the changelog for AppSignal for Elixir package 2.8.1 for more information.

Jan 15, 2024

Fix Alpine Linux disk usage metrics

Node.js3.0.29

Added

  • When the AppSignal log level is set to "trace". Additional information from the OpenTelemetry instrumentations is now logged.

Changed

  • Fix disk usage returning a Vec with no entries on Alpine Linux when the df --local command fails.

Removed

  • Remove the appsignal_set_host_gauge and appsignal_set_process_gauge extension functions. These functions were already deprecated and did not report any metrics.

Fixed

  • Fix the demo sample recognition. Demo samples didn't show the helpful explanation box in the UI, because the demo_sample tag was set incorrectly as an attribute.

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

Jan 15, 2024

Fix Alpine Linux disk usage metrics

Python1.0.4

Changed

  • Fix disk usage returning a Vec with no entries on Alpine Linux when the df --local command fails.

Fixed

  • Fix missing error metrics for the error rate and error count graphs in some scenarios, like with Node.js Koa apps.

See the Python package 1.0.4 changelog for more information.

Jan 15, 2024

Fix Alpine Linux disk usage metrics

Ruby3.5.4

Changed

  • Fix disk usage returning a Vec with no entries on Alpine Linux when the df --local command fails.

Deprecated

  • Deprecate the Appsignal.set_host_gauge and Appsignal.set_process_gauge helper methods in the Ruby gem. These methods would already log deprecation warnings in the appsignal.log file, but now also as a Ruby warning. These methods will be removed in the next major version. These methods already did not report any metrics, and still do not.

Removed

  • Remove the appsignal_set_host_gauge and appsignal_set_process_gauge extension functions. These functions were already deprecated and did not report any metrics.

Fixed

  • Fix the Makefile log path inclusion in the diagnose report. The diagnose tool didn't look in the correct gem extension directory for this log file.
  • Fix reporting of the Ruby syntax version and JRuby version in install report better.

See the Ruby gem 3.5.4 changelog for more information.

Jan 09, 2024

Fix Vue 3 composition component names

JavaScript@appsignal/vue@1.1.5

Report the name for Vue 3 components built using composition. It will now report the component name, rather than [unknown Vue component] as the action name for an error.

See the changelog for AppSignal for Vue package 1.1.5 for more information.

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!