Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .changesets/add-collector-attribute-options.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
bump: minor
type: add
---

Add configuration options that map to OpenTelemetry resource attributes under collector mode: `service_name`, `filter_attributes`, `filter_function_parameters`, `filter_request_query_parameters`, `filter_request_payload`, `response_headers`, `send_function_parameters`, `send_request_query_parameters`, and `send_request_payload`. These tell the AppSignal Collector how to filter and forward telemetry data.

When collector mode is active, existing configuration options (`name`, environment, `hostname`, `revision`, `ignore_actions`, `ignore_errors`, `ignore_namespaces`, `request_headers`, `filter_session_data`, `send_session_data`) are now passed to the collector as OpenTelemetry resource attributes.

Setting any of these options without `collector_endpoint`, or `filter_parameters`/`filter_metadata`/`send_params` with `collector_endpoint`, now logs a warning at startup.
19 changes: 19 additions & 0 deletions .changesets/add-collector-mode.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
bump: minor
type: add
---

Add a new `collector_endpoint` configuration option (`APPSIGNAL_COLLECTOR_ENDPOINT` environment variable) that puts the integration in _collector mode_. When set, AppSignal additionally configures an OpenTelemetry SDK that exports OTLP/HTTP protobuf traces, metrics, and logs to the configured endpoint. The existing AppSignal agent continues to run unchanged; no AppSignal-collected data flows through the OpenTelemetry SDK yet.

Collector mode requires Ruby 3.1 or newer and the OpenTelemetry gems, which are optional and not installed by default. To use it, add them to your application's `Gemfile`:

```ruby
gem "opentelemetry-sdk", ">= 1.8.0"
gem "opentelemetry-metrics-sdk", ">= 0.7.1"
gem "opentelemetry-logs-sdk", ">= 0.2.0"
gem "opentelemetry-exporter-otlp", ">= 0.30.0"
gem "opentelemetry-exporter-otlp-metrics", ">= 0.4.0"
gem "opentelemetry-exporter-otlp-logs", ">= 0.2.0"
```

If these gems are missing or older than the minimum versions, AppSignal logs a warning and falls back to the bundled agent.
8 changes: 8 additions & 0 deletions .changesets/add-delayed-job-enqueue-instrumentation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
bump: minor
type: add
---

Instrument Delayed Job enqueues. Enqueuing a job now records an
`enqueue.delayed_job` event on the active transaction, so enqueues made from
within a web request or another job show up in the event timeline.
6 changes: 6 additions & 0 deletions .changesets/add-que-distributed-tracing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
bump: minor
type: add
---

Improve Que support. In collector mode, AppSignal now propagates trace context when enqueuing Que jobs, so each job links back to the trace that enqueued it. This covers single and bulk enqueues, on both Que 1 and Que 2.
10 changes: 10 additions & 0 deletions .changesets/complete-transaction-when-a-block-raises.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
bump: patch
type: fix
---

Complete the transaction even when a block handed to it raises.

The error block given to `Appsignal.send_error` and `Appsignal.report_error`, and the internal `after_create` and `before_complete` hooks, are user code that can raise. An error block runs at completion in agent mode, and the hooks run during creation and completion, so these blocks run far from where they were defined.

Until now, an exception from any of these blocks propagated out of transaction creation or completion. That surfaced the error in unrelated code, and it could leave the transaction unfinished. These blocks are now run defensively. The failure is logged, naming the error and where the block was defined, and creation and completion carry on.
6 changes: 6 additions & 0 deletions .changesets/drop-actionless-collector-transactions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
bump: patch
type: fix
---

In collector mode, drop a transaction that never set an action name instead of reporting it under the placeholder `appsignal.transaction <namespace>` action. A request that is not routed to an action -- for example a static asset served without a controller -- has no action to group by. Agent mode does not report such a transaction, but collector mode was surfacing every one of them under a single shared placeholder action. The transaction's root span is now flagged with `appsignal.ignore_subtrace` on completion, so the AppSignal Collector (0.10.0 and newer) drops it, matching agent mode.
11 changes: 11 additions & 0 deletions .changesets/sequel-query-spans-client-kind.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
bump: patch
type: fix
---

Mark Sequel query spans as CLIENT kind in collector mode. The sequel-rails gem
emits its queries as `sql.sequel` ActiveSupport::Notifications events, which are
recorded through the generic notifications integration rather than the dedicated
Sequel hook. That path only tagged `sql.active_record` as an outgoing datastore
call, so Sequel queries were exported with the default span kind. They now carry
CLIENT kind, matching ActiveRecord and the dedicated Sequel hook.
Loading
Loading