# OpenLIT Observability - Monitor LLMs & GenAI Apps

> Source: <https://signoz.io/docs/openlit>
> Published: 2026-08-03 00:00:00+00:00

Overview

This guide walks you through integrating SigNoz with OpenLIT to gain visibility into your LLM and AI applications. By combining OpenLIT's specialized LLM instrumentation with SigNoz's observability platform, you can monitor and analyze traces and metrics from your AI workloads.

Prerequisites

- A
[SigNoz Cloud account](https://signoz.io/teams/)with an active ingestion key or[Self Hosted SigNoz instance](https://signoz.io/docs/install/self-host/) - Internet access to send telemetry data to SigNoz Cloud
- Python 3.10+ with
`openlit`

installed - For Python:
`pip`

installed for managing Python packages - For this example: An OpenAI API key. You can get it from
[OpenAI platform](https://platform.openai.com/settings/organization/api-keys)

Integrate SigNoz with OpenLIT

For more information on getting started with OpenLIT in your Python environment, refer to the [OpenLIT Overview](https://docs.openlit.io/latest/overview).
For more information on integrating SigNoz with OpenLIT, refer to the [OpenLIT SigNoz Guide](https://docs.openlit.io/latest/operator/destinations/signoz).

Step 1: Install the necessary packages in your Python environment.

```
pip install \
  openlit \
  openai
```

Step 2: Create an example LLM application (using OpenAI in this example)

``` python
import openlit
import os
from openai import OpenAI
 
 
openlit.init(application_name="<service_name>")
 
 
client = OpenAI()
 
chat_completion = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": "What is SigNoz?",
        }
    ],
    model="gpt-3.5-turbo",
)
print(chat_completion.choices[0].message.content)
```

`<service_name>`

is the name of your service

Step 3: Run your application with env variables

Run your application with the following environment variables set. This configures OpenTelemetry to export traces to SigNoz.

```
OTEL_EXPORTER_OTLP_ENDPOINT="https://ingest.<region>.signoz.cloud:443" \
OTEL_EXPORTER_OTLP_HEADERS="signoz-ingestion-key=<your-ingestion-key>" \
<your_run_command>
```

`<region>`

: Your[SigNoz Cloud region](https://signoz.io/docs/ingestion/signoz-cloud/overview/#endpoint)`<your-ingestion-key>`

: Your SigNoz[ingestion key](https://signoz.io/docs/ingestion/signoz-cloud/keys/)- Replace
`<your_run_command>`

with the actual command you would use to run your application. In this case we would use:`python main.py`

View Traces and Metrics in SigNoz

Your AI usage should now automatically emit traces.

You should be able to view traces in Signoz Cloud under the traces tab:

When you click on a trace in SigNoz, you'll see a detailed view of the trace, including all associated spans, along with their events and attributes.

You should be able to see OpenLIT related metrics in Signoz Cloud under the metrics tab:

When you click on any of these metrics in SigNoz, you'll see a detailed view of the metric, including attributes:

Troubleshooting

[Troubleshooting](#troubleshooting)

If you don't see your telemetry data:

**Verify network connectivity**- Ensure your application can reach SigNoz Cloud endpoints** Check ingestion key**- Verify your SigNoz ingestion key is correct** Wait for data**- OpenTelemetry batches data before sending, so wait 10-30 seconds after making API calls** Try a console exporter**— Enable a console exporter locally to confirm that your application is generating telemetry data before it’s sent to SigNoz

Setup OpenTelemetry Collector (Optional)

[Setup OpenTelemetry Collector (Optional)](#setup-opentelemetry-collector-optional)

What is the OpenTelemetry Collector?

Think of the OTel Collector as a middleman between your app and SigNoz. Instead of your application sending data directly to SigNoz, it sends everything to the Collector first, which then forwards it along.

Why use it?

**Cleaning up data**— Filter out noisy traces you don't care about, or remove sensitive info before it leaves your servers.** Keeping your app lightweight**— Let the Collector handle batching, retries, and compression instead of your application code.** Adding context automatically**— The Collector can tag your data with useful info like which Kubernetes pod or cloud region it came from.** Future flexibility**— Want to send data to multiple backends later? The Collector makes that easy without changing your app.

See [Switch from direct export to Collector](https://signoz.io/docs/opentelemetry-collection-agents/opentelemetry-collector/switch-to-collector/) for step-by-step instructions to convert your setup.

For more details, see [Why use the OpenTelemetry Collector?](https://signoz.io/docs/opentelemetry-collection-agents/opentelemetry-collector/why-to-use-collector/) and the [Collector configuration guide](https://signoz.io/docs/opentelemetry-collection-agents/opentelemetry-collector/configuration/).

Related integrations

Use the same OpenTelemetry pipeline for the frameworks and providers you instrument:

[Instrument LLM apps with Langtrace](https://signoz.io/docs/langtrace/)- an OpenTelemetry-native SDK that exports LLM spans straight to SigNoz[Instrument LLM apps with Traceloop OpenLLMetry](https://signoz.io/docs/traceloop/)- an OpenTelemetry SDK that auto-instruments 20+ LLM providers[Monitor Mistral AI with OpenTelemetry](https://signoz.io/docs/mistral-observability/)- track Mistral model latency, token usage, and error rates[Monitor Hermes with OpenTelemetry](https://signoz.io/docs/hermes-monitoring/)- trace long-running agent sessions, skill execution, and subagent runs[Semantic Kernel observability with OpenTelemetry](https://signoz.io/docs/semantic-kernel-observability/)- trace plugins, planners, and kernel function calls

Browse [all LLM observability integrations](https://signoz.io/docs/llm-observability/) to instrument the rest of your stack.
