Changelog

Improving AppSignal, one deploy at a time.

Sep 22, 2026

Fix request header filtering and other improvements

Collector0.11.6

Fixed

  • Use case-insensitive comparison when filtering request and response headers (http.request.header.* and http.response.header.* span attributes) using the values in the appsignal.config.request_headers and appsignal.config.response_headers resource attribute configuration options.
  • Keep reporting a request's path when the appsignal.config.send_request_query_parameters resource attribute configuration option is set to false. The url.full and http.target span attributes now lose their query string rather than being removed, because they hold the request path as well. Applications whose instrumentation reports the path in http.target, without also reporting an http.route attribute, showed no path on their samples and error incidents.
  • Report request and response headers in lowercase and using dashes as separators, following the current OpenTelemetry semantic conventions. The values in the lists of allowed header names in the appsignal.config.request_headers and appsignal.config.response_headers resource attribute configuration options are also normalized to this shape before comparison.

This release can be installed through our collector packages and Docker image.

Sep 01, 2026

Fix host metrics and query sanitization

Collector0.11.3

Fixed

  • Fix host-metrics leaking zombie [timeout] processes in Alpine Linux containers.

    Before this release AppSignal collector relied on a proper init process that reaps child processes killed by system timeout. Now the collector terminates and reaps unresponsive child processes in host-metrics collection and a subreaper is no longer required.

  • Sanitize Redis spans' query text instead of the command name.

    The collector previously redacted db.operation / db.operation.name, which per the OpenTelemetry semantic conventions only contains the command verb (e.g. GET, HMSET) with nothing to redact, and left the full command-with-arguments in db.query.text / db.statement unredacted. The full command is now correctly sanitized, matching how the official OpenTelemetry Redis instrumentations emit data.

    As a side effect, Redis spans now group by command shape rather than by exact arguments, the same way SQL spans group by query shape.

  • Sanitize SQL queries for database systems reported using the current OpenTelemetry semantic conventions.

    The collector's SQL sanitization only recognized the db.system values from semantic conventions up to v1.29.0. Values renamed in v1.30.0, when the attribute became db.system.name, such as microsoft.sql_server for Microsoft SQL Server, were not recognized, so their queries were stored without sanitization. Both the older db.system values and the current db.system.name values are now recognized.

This release can be installed through our collector packages and Docker image.

Jul 17, 2026

Report internal memory usage

Collector0.11.0

Added

  • Track Collector's memory usage as internal metrics. The Collector will now self-report memory usage and uptime every minute.

Changed

  • Handle HTTP HEAD requests on the /up and / endpoints. These now respond with 200 OK so health checks and uptime monitors that use HEAD requests no longer receive a 404 response.

This release can be installed through our collector packages and Docker image.

Jun 09, 2026

Improve stability

Added

  • Allow appsignal.group and appsignal.format attributes in OpenTelemetry logs to override the log line's group and format.

    When present, appsignal.group overrides the resource-level service name as the log group, and appsignal.format (one of plaintext, logfmt, json, autodetect) overrides the log source's parsing format.

Fixed

  • Fix crashes when truncating attribute keys and values whose length limit fell in the middle of a multi-byte UTF-8 character. Truncation now rounds the cut point down to the nearest character boundary instead of panicking.
  • Continue reporting non-disk host metrics when a mount is frozen.

This release can be installed through our collector packages and Docker image.

Apr 24, 2026

Limit collector memory usage

Fixed

  • Cap the amount of metric states stored for cumulative-to-delta conversion, preventing high-cardinality tag combinations from causing excessive memory usage.
  • Evict and block traces that accumulate large amounts of orphaned spans, preventing them from growing unboundedly in memory.

This release can be installed through our collector packages and Docker image.

Feb 09, 2026

Better Database and HTTP span recognition

Added

  • Use db.stored_operation.name as one of the attributes to determine if two spans are the same. When it is present, ignore db.statement and db.query.text for the same purpose.

Changed

  • Improve recognition of HTTP client spans. This will help our 'slow requests' feature recognize grouped HTTP client spans and improve our N+1 detection.

This release can be installed through our collector packages and Docker image.

Dec 16, 2025

Allow app-level push API keys

Changed

  • Allow the use of app-level push API keys. When an app-level push API key is used, the resource attributes for the name and environment should not be specified. These resource attributes are now optional, although the use of one requires the other.

  • Make most resource attributes optional. Allow for the resource attributes pertaining the revision, the hostname, the language integration and the application path to not be present. This allows the AppSignal collector to more easily ingest data from arbitrary OpenTelemetry sources.

    Note that usage of these resource attributes is still recommended. Traces sent without these attributes may be tagged with the wrong hostname or revision, or have their error backtraces parsed incorrectly.

This release can be installed through our collector packages and Docker image.

$appsignal install

Make your next crash make sense.

Free for 30 days. No credit card. Two-minute install.