> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appsignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenTelemetry Troubleshooting

When no data is reported from your app to AppSignal, please check the common problems below.

## No data is being reported

### The OpenTelemetry export endpoint is misconfigured

OpenTelemetry apps default to exporting data to `http://localhost:4318`.
AppSignal requires a custom endpoint to send data to the AppSignal collector.

The AppSignal collector can run as a hosted or self-hosted type. Read our [Hosted vs Self-hosted page](/collector/hosted-vs-self-hosted) for more information about the difference between these collector types.

Follow the help for the collector type your application uses below:

* [Hosted collector](#hosted-collector)
* [Self-hosted collector](#self-hosted-collector), installed as a [Linux package] and [Docker image]

#### Hosted collector

When using the hosted collector, make sure to use the collector's URL shown in the [add app wizard](https://appsignal.com/redirect-to/organization?to=sites/new) as the OpenTelemetry exporter's endpoint.

In the add app wizard select the language your application uses that AppSignal supports for OpenTelemetry, or use the "More languages" option, to view the hosted collector endpoint.
It may be in a code example, assigned to a variable named `endpoint`.

The hosted collector's format is as follows:

* `https://COLLECTOR-ID.REGION.appsignal-collector.net`

The exporter endpoint needs to be configured either via the `OTEL_EXPORTER_OTLP_ENDPOINT` environment variable or in the app itself, where OpenTelemetry is configured.
Refer to the [language-specific installation guide][install guide] your application is using for more detail.

#### Self-hosted collector

When using a self-hosted collector, the OpenTelemetry exporter endpoint needs to point to the location the collector is running.

If the collector is running on the same host (installed using the [Linux package]) the hostname is `localhost`.

If the collector runs in a [Docker container][Docker image] or Kubernetes cluster, the hostname may differ based on the specified service name.
We recommend naming the service `appsignal` and updating the exporter's endpoint to match the `appsignal` hostname.

* Hostname, several values are possible:
  * [Linux package]: `localhost:8099`
  * [Docker image]: `appsignal:8099`
* Examples:
  * `http://localhost:8099`, or `http://appsignal:8099` on Docker.

For some languages, in the OpenTelemetry SDK the URI scheme (`http`/`https`) should not be set as part of the OpenTelemetry exporter endpoint. Please refer to the [installation guide](/opentelemetry/installation) for the language your application uses.

The exporter endpoint needs to be configured either via the `OTEL_EXPORTER_OTLP_ENDPOINT` environment variable or in the app itself, where OpenTelemetry is configured.
Refer to the [language-specific installation guide][install guide] your application is using for more detail.

#### Exporter endpoints

Some OpenTelemetry exporters may need to be configured per OpenTelemetry data type to specific endpoints.

When configuring a trace/span exporter, use the trace endpoint, for metrics, use the metrics endpoint, etc.

These endpoints on the AppSignal collector are:

* Trace data:
  * `/v1/traces` or,
  * `/v1/traces`
* Metric data:
  * `/v1/metrics` or,
  * `/v1/metrics`
* Log data:
  * `/v1/logs` or,
  * `/v1/logs`

### The OpenTelemetry export protocol is not set to http/protobuf

The AppSignal collector only supports the OpenTelemetry Protocol (OTLP) over HTTP with Protobuf encoding.

Required config:

* Protocol format: `http/protobuf`

If OpenTelemetry in your app is using gRPC or JSON as an export format, update the configuration to use the HTTP/protobuf format.

To configure the exporter protocol format, follow [the installation steps](/opentelemetry/installation) for the language your application is using.

### The self-hosted collector is not running or is unreachable

To send data to AppSignal, the self-hosted collector needs to have started correctly.
Export errors visible in the application logs may indicate the collector isn't running.
To check if it's running, check the collector logs.

The collector logs can be found in:

* The container logs for the [Docker container installation method](/collector/installation/docker-image).
  Check your container manager for the best way to access container logs.
* The system logs for the [Linux package installation method](/collector/installation/linux-package#debugging).

If the collector is running but can't be reached, check internal network settings to see if the application is able to reach the collector's host.

## Missing or incomplete data reported

If you're only seeing some data and are missing more data about what your application is doing, it's likely due to missing OpenTelemetry instrumentation in your application.

OpenTelemetry does not automatically instrument everything out of the box. To collect data from specific frameworks and libraries, you'll need to install and configure additional instrumentation libraries.

To report more data, install the appropriate OpenTelemetry instrumentation libraries for the corresponding libraries used in your application.

Refer to [add additional OpenTelemetry instrumentation guide](/guides/instrumentation/additional-opentelemetry-instrumentation) for your application's language on how to install more instrumentation packages.

[install guide]: /opentelemetry/installation.html

[Linux package]: /collector/installation/linux-package.html

[Docker image]: /collector/installation/docker-image.html
