OpenTelemetry Generic Installation

Make sure to install the AppSignal collector before proceeding with these instructions.

Configure the OpenTelemetry SDK

Follow the instructions in the OpenTelemetry documentation to set up the SDK for your language.

You must configure the OpenTelemetry SDK to export the data to the AppSignal collector. The AppSignal collector expects data to be sent using the OTLP protocol format over HTTP. It is often necessary to install an additional OpenTelemetry package to export in a specific format.

The AppSignal collector does not currently support logging data, so it's recommended to disable the logging exporter to silence export errors.

By default, the AppSignal collector listens on port 8099. The OpenTelemetry exporters must be configured to send data to these endpoints on the collector:

  • Traces: http://localhost:8099/v1/traces
  • Metrics: http://localhost:8099/v1/metrics

Most OpenTelemetry exporter packages automatically set the export path to /v1/traces for traces and /v1/metrics for metrics, so you'd only need to specify localhost:8099 as the endpoint. However, for some languages it may be necessary to specify the entire path.

If you are running the AppSignal collector on a different host, replace localhost with the address of your AppSignal collector.

Configure the OpenTelemetry resource

The AppSignal collector requires certain attributes to be present in the OpenTelemetry resource. Configure the OpenTelemetry resource with the SDK with the following required attributes:

  • appsignal.config.name: The application's name in AppSignal.
  • appsignal.config.environment: The application's environment in AppSignal.
  • appsignal.config.push_api_key: The push API key to use to send data to AppSignal. This can be the same Push API key that was configured when installing the AppSignal collector.
  • appsignal.config.revision: Automatically create deploys in AppSignal by specifying the app revision.
  • appsignal.config.language_integration: Set the programming language name. This helps us recognize the programming language that is being used and improve how our servers interpret the data. Example values: "python", "rust", "ruby", "elixir", "golang", "node.js".
  • service.name: The service name. See below for more details.
  • host.name: The name of the host.

See also our configuration options page for a list of all supported config options.

If you already have an application that uses the same name and environment, reported by one of our existing language integration packages, please use another name and/or environment. This beta introduces new UI elements and pages that are not compatible with the data reported by our integration packages. We recommend reporting the application OpenTelemetry data to a new AppSignal application so the UI will not be so confusing.

Choosing a service name

Choose a service name for your app that makes each component or service easily recognizable. This service name will be used to group namespaces by service.

The resulting namespaces are formatted like so: <service name>/<namespace>

If the service name is "My service name" and the namespace is "admin", the resulting namespace on AppSignal.com becomes: "My service namespace/admin"

The important part of naming is that it makes sense to you and your team. A service name can be the name of the application, its purpose, or the name of the framework used.