Skip to main content
AppSignal monitors applications and services built with the languages and frameworks below. Back-end applications send their data through an AppSignal agent or the AppSignal collector. That is where the data is prepared for AppSignal. You choose how it gets there:
  • 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.
On both routes, traces arrive grouped, named, sanitized, and filtered. What the agent and collector do lists what happens on each route before your data reaches AppSignal.

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.
Using a language not listed here? Instrument it with OpenTelemetry and send the data to AppSignal.

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.
The collector runs hosted by AppSignal or on your own servers. The hosted collector needs no setup or maintenance, which suits serverless and platform-as-a-service deployments. A self-hosted collector processes your data before it leaves your network, and can report host metrics from its server.

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 revision option.

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.