- An AppSignal integration: install one package. It instruments your application and brings its own agent, or reports through the collector.
- An OpenTelemetry SDK: instrument your application yourself, and send the data through the AppSignal collector.
Languages and frameworks
Ruby
AppSignal integration. Instruments Rails, Sinatra, Sidekiq, and other Ruby libraries without code changes.
Elixir
AppSignal integration. Instruments Phoenix, Ecto, Oban, and other Elixir libraries without code changes.
Node.js
AppSignal integration, built on OpenTelemetry. Instruments Express, Fastify, NestJS, Prisma, and other packages.
Python
AppSignal integration, built on OpenTelemetry. Monitors Django, Flask, Celery, and other Python applications.
PHP
AppSignal integration, built on OpenTelemetry. Instruments Laravel and Symfony, and sends data through the AppSignal collector.
Go
OpenTelemetry SDK. Sends data through the AppSignal collector.
Java
OpenTelemetry SDK. Sends data through the AppSignal collector.
JavaScript (browser)
Track front-end errors, and measure Core Web Vitals from real users. Breadcrumbs and vitals need no configuration.
JavaScript
Track errors in front-end JavaScript applications, with plugins for breadcrumbs and framework integrations.
Other languages
Use the OpenTelemetry SDK for your language, and send data through the AppSignal collector.
How data reaches AppSignal
Back-end data takes one of three routes:- An AppSignal integration with its agent: Ruby, Elixir, Node.js, and Python. The package starts the AppSignal agent, a separate process on the same host. The agent aggregates your data before sending it, and reads host metrics. When AppSignal is unreachable, it stores payloads on disk and retries.
- An AppSignal integration through the collector: PHP always reports this way. Ruby (gem 5.0) and Python (1.8) can switch to it, which distributed tracing needs. You keep the integration’s instrumentation, and the data travels as OpenTelemetry.
- An OpenTelemetry SDK through the collector: Go, Java, and any other language. You add the SDK and its instrumentation packages, and the collector prepares the data.
Choosing a route
- If your language has an AppSignal integration, install it.
- If you use Ruby or Python and need distributed tracing, switch the integration to collector mode. Distributed tracing follows one request across your services, and shows each trace as a service map and timeline.
- If you are on Go, Java, or another language, use the OpenTelemetry SDK with the collector.
- If you already instrument with OpenTelemetry, keep that instrumentation, and point the SDK at the collector.
What the agent and collector do
On every route, an agent or the collector prepares your data before it reaches AppSignal. The integrations add more on top.The AppSignal collector
The AppSignal collector receives data from any OpenTelemetry SDK. Before it sends your data to AppSignal, the collector:- Groups spans into traces, and names each trace by namespace and action. Express, NestJS, Next.js, Django, Flask, Celery, and Sidekiq get framework-specific names.
- Calculates throughput, duration, and error metrics from every trace.
- Removes values from SQL queries and Redis commands.
- Filters request parameters, headers, and session data, and drops the errors, actions, and namespaces you choose to ignore.
- Links each log line to the trace it came from.
- Accepts OpenTelemetry metrics whether your SDK reports them as cumulative or delta values.
- Stores data on disk when it can’t reach AppSignal, and sends it later. Queued data is kept for up to an hour.
- Can collect host metrics from the Linux server it runs on.
AppSignal integrations
The integrations do the instrumentation for you, and collect data that OpenTelemetry SDKs don’t:- Instrument frameworks and libraries without code changes.
- Report runtime metrics every minute, such as Ruby garbage collection, Sidekiq queues, Erlang VM memory, and Node.js heap size. These metrics create Intelligence dashboards for you.
- Report host metrics by default, in Ruby, Elixir, Node.js, and Python.
- Include helpers to add tags, report errors, send custom metrics, and send logs.
- Include command-line tools to install the integration, send test data, and check your setup.
- Create deploy markers from the
revisionoption.
Telemetry tools
Standalone tools that monitor processes and hosts, and collect telemetry outside your application code.Wrap
Monitor any process running on your servers, such as cron jobs or database servers.
Collector
Collect and process OpenTelemetry data before sending it to AppSignal.
Standalone agent
Collect host metrics, StatsD, and NGINX data from servers that don’t run your application.