From 5029917b0e10463c011d09ad4a7942f73a8431fc Mon Sep 17 00:00:00 2001 From: Dan Kowalski Date: Sat, 7 Nov 2026 03:21:08 -0500 Subject: [PATCH] docs: gRPC-only OTLP, Windows 11, and availability targets Bug 3907: ingest accepts OTLP over gRPC only. Remove every claim that OTLP over HTTP is supported and the Node.js proxy advice, set the protocol explicitly where the SDK default is http/protobuf (Java agent, Spring Boot starter, Go autoexport), and split the Kubernetes Operator example so Java, Python, .NET and Go go through a Collector. Work item 3931: Windows 10 is dropped, the supported client is Windows 11, 64-bit. Plans: 99 / 99.9 / 99.99% are availability targets, not an uptime SLA. Only Visualize carries a contractual 99.0%. Co-Authored-By: Claude Opus 5.5 --- .../3D/Guides/Installation/Windows/index.md | 3 ++ docs/DC/3D/Guides/Preferences/index.md | 2 +- docs/DC/3D/Supported-Configurations/index.md | 2 +- docs/DC/Studio/Guides/Installation/index.md | 2 +- .../Studio/Supported-Configurations/index.md | 2 +- docs/DC/Web/Troubleshooting/index.md | 2 +- docs/Getting-Started/Plans/index.md | 10 +++-- docs/Instrument/collector/index.md | 3 +- docs/Instrument/dotnet/index.md | 2 +- docs/Instrument/go/index.md | 4 +- docs/Instrument/index.md | 6 ++- docs/Instrument/java/index.md | 9 +++- docs/Instrument/kubernetes/index.md | 43 ++++++++++++++----- docs/Instrument/nodejs/index.md | 12 +----- docs/Instrument/python/index.md | 2 +- .../Frameworks/OpenTelemetry/index.md | 9 ++-- 16 files changed, 74 insertions(+), 39 deletions(-) diff --git a/docs/DC/3D/Guides/Installation/Windows/index.md b/docs/DC/3D/Guides/Installation/Windows/index.md index 1eab29e..e585083 100644 --- a/docs/DC/3D/Guides/Installation/Windows/index.md +++ b/docs/DC/3D/Guides/Installation/Windows/index.md @@ -4,6 +4,9 @@ description: Install DeepCube™ on Windows, through Steam or the offline MS # Installing on Windows +!!! note "Requirements" + Windows 11, 64-bit. See [Supported Configurations](../../../Supported-Configurations/index.md) for full details. + ## Steam [Open in Steam :material-steam:](steam://store/3624760){ .md-button .md-button--primary } diff --git a/docs/DC/3D/Guides/Preferences/index.md b/docs/DC/3D/Guides/Preferences/index.md index d88ed4c..8920ca3 100644 --- a/docs/DC/3D/Guides/Preferences/index.md +++ b/docs/DC/3D/Guides/Preferences/index.md @@ -102,7 +102,7 @@ client: [contact support](../../../../contact.md) and say which GPU you have. !!! info "Minimum requirements" On Windows, the client needs at least a DirectX 12 capable GPU with 3 GB of memory, - on 64-bit Windows 10, and 8 GB is recommended. Below the minimum, lowering these + on 64-bit Windows 11, and 8 GB is recommended. Below the minimum, lowering these settings may not be enough. The full list, including experimental macOS support, is on [Supported Configurations](../../Supported-Configurations/index.md). diff --git a/docs/DC/3D/Supported-Configurations/index.md b/docs/DC/3D/Supported-Configurations/index.md index a4355fc..2fb0e83 100644 --- a/docs/DC/3D/Supported-Configurations/index.md +++ b/docs/DC/3D/Supported-Configurations/index.md @@ -14,7 +14,7 @@ DeepCube runs on Windows, with experimental support for macOS. Linux support is | Component | Minimum | Recommended | |-----------|---------|-------------| -| **Operating System** | Windows 10 64-bit | Windows 11 64-bit (latest) | +| **Operating System** | Windows 11 64-bit | Windows 11 64-bit (latest) | | **Processor** | 4 cores, 3.0 GHz | 6 cores, 3.5 GHz | | **Graphics** | DirectX 12, 3 GB VRAM | DirectX 12, 8 GB VRAM | | **Memory** | 8 GB RAM | 32 GB RAM | diff --git a/docs/DC/Studio/Guides/Installation/index.md b/docs/DC/Studio/Guides/Installation/index.md index 9b6a225..acf5c52 100644 --- a/docs/DC/Studio/Guides/Installation/index.md +++ b/docs/DC/Studio/Guides/Installation/index.md @@ -27,7 +27,7 @@ A subscription is required to use DeepCube Studio. 5. Select a grid to connect to !!! note "Requirements" - Windows 10 or later (64-bit). See [Supported Configurations](../../Supported-Configurations/index.md) for full details. + Windows 11 (64-bit). See [Supported Configurations](../../Supported-Configurations/index.md) for full details. ## macOS diff --git a/docs/DC/Studio/Supported-Configurations/index.md b/docs/DC/Studio/Supported-Configurations/index.md index 9901658..7a88a76 100644 --- a/docs/DC/Studio/Supported-Configurations/index.md +++ b/docs/DC/Studio/Supported-Configurations/index.md @@ -16,7 +16,7 @@ DeepCube Studio is a lightweight native desktop application. It does not require | Component | Requirement | |-----------|-------------| -| **Operating System** | Windows 10 64-bit or later | +| **Operating System** | Windows 11 64-bit | | **Processor** | 2 cores, 2.0 GHz or faster | | **Memory** | 4 GB RAM | | **Storage** | 500 MB available | diff --git a/docs/DC/Web/Troubleshooting/index.md b/docs/DC/Web/Troubleshooting/index.md index a679232..9a4c415 100644 --- a/docs/DC/Web/Troubleshooting/index.md +++ b/docs/DC/Web/Troubleshooting/index.md @@ -114,7 +114,7 @@ CORS (Cross-Origin Resource Sharing) errors occur when your instrumented applica |---------|-------|------------| | `Access-Control-Allow-Origin` error in browser console | Browser-based exporter sending directly to DeepCube endpoint | Browser-based (front-end) applications should route telemetry through a backend collector or proxy rather than sending directly to the DeepCube endpoint. | | CORS error only in production | Different origin in production vs development | Verify that your production domain is configured correctly in your collector setup. | -| Preflight (OPTIONS) request fails | Firewall or proxy blocking OPTIONS requests | Ensure your network infrastructure allows HTTP OPTIONS requests to the DeepCube ingestion endpoint. | +| Preflight (OPTIONS) request fails | Browser-based exporter sending directly to DeepCube endpoint | DeepCube does not accept telemetry from the browser directly. Route it through a backend OpenTelemetry Collector. | !!! warning "Browser instrumentation" Sending telemetry directly from browser JavaScript to the DeepCube endpoint will trigger CORS errors. Use a backend OpenTelemetry Collector as a relay to avoid this issue. diff --git a/docs/Getting-Started/Plans/index.md b/docs/Getting-Started/Plans/index.md index b4047ea..b36f34f 100644 --- a/docs/Getting-Started/Plans/index.md +++ b/docs/Getting-Started/Plans/index.md @@ -23,13 +23,15 @@ each plan does. | **Data Retention** | 7 days | 30 days | 90 days | 365 days | | **AI (Tessa)** | 7 queries/day | 35 queries/day | Large daily budget + Code Fix | Large daily budget + Code Fix + Infra | | **Support** | Discord | Chat/Email | Chat/Email/Phone | Chat/Email/Phone | -| **Uptime SLA** | - | 99% | 99.9% | 99.99% | +| **Availability target** | None | 99% | 99.9% | 99.99% | | **Dedicated Success Rep** | :material-close: | :material-close: | :material-check: | :material-check: | | **Professional Consulting** | :material-close: | :material-close: | :material-check: | :material-check: | | **Early Access Features** | :material-close: | :material-close: | :material-close: | :material-check: | *Throughput = traces + logs per second* +*Availability targets are not a service level agreement. Visualize is the one exception: its contractual commitment is 99.0%, with service credits. Your subscription terms are in the [Subscription Agreement](https://immersivefusion.com/legal/){ target="_blank" }.* + *AI (Tessa) usage is a daily budget that scales with your monitored nodes, not an unlimited allowance. No plan is ever blocked: when a budget is spent, Tessa keeps working with lighter, faster responses until it refills.* ## Plan Details @@ -50,7 +52,7 @@ Experience application immersion with zero risk, allowing you to gain valuable i Enhance your application immersion capabilities with expanded availability and comprehensive support. - Shared infrastructure -- 99% uptime SLA +- 99% availability target; the contractual commitment is 99.0%, with service credits - 200 traces + logs per second - 30 days data retention - 35 AI Assistant queries per day @@ -61,7 +63,7 @@ Enhance your application immersion capabilities with expanded availability and c Improve your application visualization capabilities by incorporating historical data retention and dedicated resources. - Dedicated infrastructure -- 99.9% uptime SLA +- 99.9% availability target - 1,000 traces + logs per second - 90 days data retention - Large daily AI Assistant budget + Code Fix @@ -74,7 +76,7 @@ Improve your application visualization capabilities by incorporating historical Elevate your application monitoring and management with the stability, scalability, and expertise. - Dedicated infrastructure -- 99.99% uptime SLA +- 99.99% availability target - 2,000 traces + logs per second - 365 days data retention - Large daily AI Assistant budget + Code Fix + Infra diff --git a/docs/Instrument/collector/index.md b/docs/Instrument/collector/index.md index fd9fbb6..687b856 100644 --- a/docs/Instrument/collector/index.md +++ b/docs/Instrument/collector/index.md @@ -174,7 +174,7 @@ service: | Exporter | Description | |----------|-------------| | `otlp` | Exports via OTLP gRPC | -| `otlphttp` | Exports via OTLP HTTP | +| `otlphttp` | Exports via OTLP HTTP. Not accepted by DeepCube; use `otlp` | | `debug` | Prints telemetry to stdout (for development) | ## Docker Compose Example @@ -202,6 +202,7 @@ services: build: . environment: - OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4317 + - OTEL_EXPORTER_OTLP_PROTOCOL=grpc - OTEL_SERVICE_NAME=my-app depends_on: - otel-collector diff --git a/docs/Instrument/dotnet/index.md b/docs/Instrument/dotnet/index.md index 28d72ae..f0aebfa 100644 --- a/docs/Instrument/dotnet/index.md +++ b/docs/Instrument/dotnet/index.md @@ -174,7 +174,7 @@ Instead of hardcoding values, use environment variables. The OpenTelemetry .NET | `OTEL_EXPORTER_OTLP_ENDPOINT` | `https://otlp.deepcube.ai` | OTLP collector endpoint | | `OTEL_EXPORTER_OTLP_HEADERS` | `api-key=YOUR-API-KEY` | Authentication header | | `OTEL_SERVICE_NAME` | `your-service-name` | Service name shown in DeepCube | -| `OTEL_EXPORTER_OTLP_PROTOCOL` | `grpc` | Protocol (grpc or http/protobuf) | +| `OTEL_EXPORTER_OTLP_PROTOCOL` | `grpc` | Protocol (must be `grpc`) | When using environment variables, your code simplifies to: diff --git a/docs/Instrument/go/index.md b/docs/Instrument/go/index.md index 8c84406..d0bb78b 100644 --- a/docs/Instrument/go/index.md +++ b/docs/Instrument/go/index.md @@ -293,7 +293,7 @@ The OpenTelemetry Go SDK reads these variables when using the autoconfigure opti | `OTEL_EXPORTER_OTLP_ENDPOINT` | `https://otlp.deepcube.ai` | OTLP collector endpoint | | `OTEL_EXPORTER_OTLP_HEADERS` | `api-key=YOUR-API-KEY` | Authentication header | | `OTEL_SERVICE_NAME` | `your-service-name` | Service name shown in DeepCube | -| `OTEL_EXPORTER_OTLP_PROTOCOL` | `grpc` | Protocol (grpc or http/protobuf) | +| `OTEL_EXPORTER_OTLP_PROTOCOL` | `grpc` | Protocol (must be `grpc`) | !!! note "Environment variables in Go" Unlike some other language SDKs, the Go SDK does not automatically read `OTEL_EXPORTER_OTLP_ENDPOINT` by default. You need to either configure the exporter programmatically (as shown above) or use the `autoexport` package: @@ -302,6 +302,8 @@ The OpenTelemetry Go SDK reads these variables when using the autoconfigure opti go get go.opentelemetry.io/contrib/exporters/autoexport ``` + `autoexport` defaults to `http/protobuf`, so set `OTEL_EXPORTER_OTLP_PROTOCOL=grpc` when you use it. + ## Verify It's Working 1. Run your instrumented application diff --git a/docs/Instrument/index.md b/docs/Instrument/index.md index 7570dd0..adb741d 100644 --- a/docs/Instrument/index.md +++ b/docs/Instrument/index.md @@ -11,9 +11,11 @@ All you need is your **OTLP endpoint** and **API key**: | Setting | Value | |---------|-------| | **Endpoint** | `https://otlp.deepcube.ai` | -| **Protocol** | `grpc` (default) or `http/protobuf` | +| **Protocol** | `grpc` | | **API Key Header** | `api-key: YOUR-API-KEY` | +DeepCube accepts OTLP over gRPC only. OTLP over HTTP (`http/protobuf`) is not accepted, and exports that use it fail. + Get your API key by logging in at [portal.deepcube.ai](https://portal.deepcube.ai){ target="_blank" }, then go to **Administration > Grids** and click **Instrument** on your Grid. ### Environment Variables @@ -24,6 +26,7 @@ The fastest way to configure any OpenTelemetry SDK is with environment variables |----------|-------|-------------| | `OTEL_EXPORTER_OTLP_ENDPOINT` | `https://otlp.deepcube.ai` | OTLP collector endpoint | | `OTEL_EXPORTER_OTLP_HEADERS` | `api-key=YOUR-API-KEY` | Authentication header | +| `OTEL_EXPORTER_OTLP_PROTOCOL` | `grpc` | Protocol (must be `grpc`; some SDKs default to `http/protobuf`) | | `OTEL_SERVICE_NAME` | `your-service-name` | Identifies your service in DeepCube | ## Quick Start by Language @@ -64,6 +67,7 @@ Choose your language to see the minimal configuration needed to start sending te # Run your application with auto-instrumentation java -javaagent:opentelemetry-javaagent.jar \ -Dotel.exporter.otlp.endpoint=https://otlp.deepcube.ai \ + -Dotel.exporter.otlp.protocol=grpc \ -Dotel.exporter.otlp.headers=api-key=YOUR-API-KEY \ -Dotel.service.name=your-service-name \ -jar your-app.jar diff --git a/docs/Instrument/java/index.md b/docs/Instrument/java/index.md index ce2f3c6..cfea029 100644 --- a/docs/Instrument/java/index.md +++ b/docs/Instrument/java/index.md @@ -22,11 +22,15 @@ curl -L -o opentelemetry-javaagent.jar \ ```bash java -javaagent:opentelemetry-javaagent.jar \ -Dotel.exporter.otlp.endpoint=https://otlp.deepcube.ai \ + -Dotel.exporter.otlp.protocol=grpc \ -Dotel.exporter.otlp.headers=api-key=YOUR-API-KEY \ -Dotel.service.name=my-java-app \ -jar your-application.jar ``` +!!! warning "Keep the protocol set to gRPC" + Versions 2.0 and later of the Java agent and the Spring Boot starter default to `http/protobuf`, which DeepCube does not accept. Set the protocol to `grpc` wherever you configure them. + The agent automatically instruments: - Spring Web MVC, WebFlux @@ -81,6 +85,7 @@ otel: exporter: otlp: endpoint: https://otlp.deepcube.ai + protocol: grpc headers: api-key: YOUR-API-KEY service: @@ -91,6 +96,7 @@ Or in `application.properties`: ```properties otel.exporter.otlp.endpoint=https://otlp.deepcube.ai +otel.exporter.otlp.protocol=grpc otel.exporter.otlp.headers.api-key=YOUR-API-KEY otel.service.name=my-spring-boot-app ``` @@ -253,7 +259,7 @@ The Java agent and SDK autoconfigure module read these variables: | `OTEL_EXPORTER_OTLP_ENDPOINT` | `https://otlp.deepcube.ai` | OTLP collector endpoint | | `OTEL_EXPORTER_OTLP_HEADERS` | `api-key=YOUR-API-KEY` | Authentication header | | `OTEL_SERVICE_NAME` | `your-service-name` | Service name shown in DeepCube | -| `OTEL_EXPORTER_OTLP_PROTOCOL` | `grpc` | Protocol (grpc or http/protobuf) | +| `OTEL_EXPORTER_OTLP_PROTOCOL` | `grpc` | Protocol (must be `grpc`) | | `OTEL_TRACES_EXPORTER` | `otlp` | Trace exporter type | | `OTEL_METRICS_EXPORTER` | `otlp` | Metrics exporter type | | `OTEL_LOGS_EXPORTER` | `otlp` | Logs exporter type | @@ -263,6 +269,7 @@ You can also use JVM system properties (prefix with `-D` and replace underscores ```bash java -javaagent:opentelemetry-javaagent.jar \ -Dotel.exporter.otlp.endpoint=https://otlp.deepcube.ai \ + -Dotel.exporter.otlp.protocol=grpc \ -Dotel.exporter.otlp.headers=api-key=YOUR-API-KEY \ -Dotel.service.name=my-java-app \ -jar your-app.jar diff --git a/docs/Instrument/kubernetes/index.md b/docs/Instrument/kubernetes/index.md index ad04d09..578410d 100644 --- a/docs/Instrument/kubernetes/index.md +++ b/docs/Instrument/kubernetes/index.md @@ -36,7 +36,7 @@ kubectl apply -f https://github.com/open-telemetry/opentelemetry-operator/releas ### Create an Instrumentation Resource -Define an `Instrumentation` custom resource that tells the Operator how to configure auto-instrumentation: +Define an `Instrumentation` custom resource that tells the Operator how to configure auto-instrumentation. This resource covers Node.js, which exports directly to DeepCube: ```yaml # instrumentation.yaml @@ -57,14 +57,34 @@ spec: secretKeyRef: name: deepcube-api-key key: api-key + nodejs: + image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-nodejs:latest +``` + +!!! warning "Use a Collector for Java, Python, .NET, and Go" + DeepCube accepts OTLP over gRPC only. The Operator's auto-instrumentation defaults to `http/protobuf` for Java, Python, .NET, and Go, and the Operator's Python image does not support gRPC at this time. Only Node.js defaults to gRPC. Send the other languages through a [Collector](#otel-collector-as-daemonset), which receives OTLP over HTTP on port 4318 and exports to DeepCube over gRPC. + +For those languages, deploy the Collector, then create a second resource that points at it. Replace `YOUR-COLLECTOR-HOST` with the DNS name of your Collector's Kubernetes Service, and make sure that Service exposes port 4318: + +```yaml +# instrumentation-collector.yaml +apiVersion: opentelemetry.io/v1alpha1 +kind: Instrumentation +metadata: + name: deepcube-collector-instrumentation + namespace: default +spec: + exporter: + endpoint: http://YOUR-COLLECTOR-HOST:4318 + propagators: + - tracecontext + - baggage dotnet: image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-dotnet:latest java: image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-java:latest python: image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-python:latest - nodejs: - image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-nodejs:latest go: image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-go:latest ``` @@ -83,18 +103,19 @@ kubectl create secret generic deepcube-api-key \ ```bash kubectl apply -f instrumentation.yaml +kubectl apply -f instrumentation-collector.yaml ``` ### Annotate Your Pods -Add an annotation to your pod spec to enable auto-instrumentation for your language: +Add an annotation to your pod spec to enable auto-instrumentation for your language. The value names the `Instrumentation` resource to use: === ".NET" ```yaml metadata: annotations: - instrumentation.opentelemetry.io/inject-dotnet: "true" + instrumentation.opentelemetry.io/inject-dotnet: "deepcube-collector-instrumentation" ``` === "Java" @@ -102,7 +123,7 @@ Add an annotation to your pod spec to enable auto-instrumentation for your langu ```yaml metadata: annotations: - instrumentation.opentelemetry.io/inject-java: "true" + instrumentation.opentelemetry.io/inject-java: "deepcube-collector-instrumentation" ``` === "Python" @@ -110,7 +131,7 @@ Add an annotation to your pod spec to enable auto-instrumentation for your langu ```yaml metadata: annotations: - instrumentation.opentelemetry.io/inject-python: "true" + instrumentation.opentelemetry.io/inject-python: "deepcube-collector-instrumentation" ``` === "Node.js" @@ -118,7 +139,7 @@ Add an annotation to your pod spec to enable auto-instrumentation for your langu ```yaml metadata: annotations: - instrumentation.opentelemetry.io/inject-nodejs: "true" + instrumentation.opentelemetry.io/inject-nodejs: "deepcube-instrumentation" ``` === "Go" @@ -126,7 +147,7 @@ Add an annotation to your pod spec to enable auto-instrumentation for your langu ```yaml metadata: annotations: - instrumentation.opentelemetry.io/inject-go: "true" + instrumentation.opentelemetry.io/inject-go: "deepcube-collector-instrumentation" ``` Example Deployment with auto-instrumentation: @@ -146,7 +167,7 @@ spec: labels: app: my-app annotations: - instrumentation.opentelemetry.io/inject-java: "true" + instrumentation.opentelemetry.io/inject-nodejs: "deepcube-instrumentation" spec: containers: - name: my-app @@ -236,6 +257,8 @@ env: fieldPath: status.hostIP - name: OTEL_EXPORTER_OTLP_ENDPOINT value: "http://$(NODE_IP):4317" + - name: OTEL_EXPORTER_OTLP_PROTOCOL + value: grpc - name: OTEL_SERVICE_NAME value: my-app ``` diff --git a/docs/Instrument/nodejs/index.md b/docs/Instrument/nodejs/index.md index b19ca9d..67bb3da 100644 --- a/docs/Instrument/nodejs/index.md +++ b/docs/Instrument/nodejs/index.md @@ -246,7 +246,7 @@ The OpenTelemetry Node.js SDK reads these variables automatically: | `OTEL_EXPORTER_OTLP_ENDPOINT` | `https://otlp.deepcube.ai` | OTLP collector endpoint | | `OTEL_EXPORTER_OTLP_HEADERS` | `api-key=YOUR-API-KEY` | Authentication header | | `OTEL_SERVICE_NAME` | `your-service-name` | Service name shown in DeepCube | -| `OTEL_EXPORTER_OTLP_PROTOCOL` | `grpc` | Protocol (grpc or http/protobuf) | +| `OTEL_EXPORTER_OTLP_PROTOCOL` | `grpc` | Protocol (must be `grpc`) | | `OTEL_TRACES_EXPORTER` | `otlp` | Trace exporter type | | `OTEL_METRICS_EXPORTER` | `otlp` | Metrics exporter type | | `OTEL_LOG_LEVEL` | `info` | SDK diagnostic log level | @@ -295,15 +295,7 @@ const sdk = new NodeSDK({ ### gRPC connection errors - Ensure `@grpc/grpc-js` is installed: `npm install @grpc/grpc-js`. -- If behind a corporate proxy, you may need to use the HTTP/protobuf exporter instead: - - ```bash - npm install @opentelemetry/exporter-trace-otlp-proto - ``` - - ```javascript - const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-proto'); - ``` +- If you are behind a corporate proxy, make sure it allows gRPC (HTTP/2) traffic to `otlp.deepcube.ai:443`. DeepCube does not accept OTLP over HTTP, so switching to an HTTP exporter does not help. ### ES Modules (import/export) compatibility diff --git a/docs/Instrument/python/index.md b/docs/Instrument/python/index.md index c74df4f..899917a 100644 --- a/docs/Instrument/python/index.md +++ b/docs/Instrument/python/index.md @@ -270,7 +270,7 @@ The OpenTelemetry Python SDK reads these variables automatically: | `OTEL_EXPORTER_OTLP_ENDPOINT` | `https://otlp.deepcube.ai` | OTLP collector endpoint | | `OTEL_EXPORTER_OTLP_HEADERS` | `api-key=YOUR-API-KEY` | Authentication header | | `OTEL_SERVICE_NAME` | `your-service-name` | Service name shown in DeepCube | -| `OTEL_EXPORTER_OTLP_PROTOCOL` | `grpc` | Protocol (grpc or http/protobuf) | +| `OTEL_EXPORTER_OTLP_PROTOCOL` | `grpc` | Protocol (must be `grpc`) | | `OTEL_TRACES_EXPORTER` | `otlp` | Trace exporter type | | `OTEL_METRICS_EXPORTER` | `otlp` | Metrics exporter type | | `OTEL_LOGS_EXPORTER` | `otlp` | Logs exporter type | diff --git a/docs/Resources/Terms-and-Concepts/Observability/Frameworks/OpenTelemetry/index.md b/docs/Resources/Terms-and-Concepts/Observability/Frameworks/OpenTelemetry/index.md index a27e32e..28914ff 100644 --- a/docs/Resources/Terms-and-Concepts/Observability/Frameworks/OpenTelemetry/index.md +++ b/docs/Resources/Terms-and-Concepts/Observability/Frameworks/OpenTelemetry/index.md @@ -42,13 +42,14 @@ All you need is the OTLP endpoint and your API key: | Setting | Value | |---------|-------| | **Endpoint** | `https://otlp.deepcube.ai` | -| **Protocol** | OTLP/gRPC (port 443) or OTLP/HTTP | +| **Protocol** | OTLP/gRPC (port 443) | | **Auth Header** | `api-key: YOUR-API-KEY` | ```bash # Environment variables - works with any OTel SDK export OTEL_EXPORTER_OTLP_ENDPOINT=https://otlp.deepcube.ai export OTEL_EXPORTER_OTLP_HEADERS="api-key=YOUR-API-KEY" +export OTEL_EXPORTER_OTLP_PROTOCOL=grpc ``` For per-language setup, see the [Instrumentation Guides](../../../../../Instrument/index.md). @@ -67,12 +68,12 @@ For per-language setup, see the [Instrumentation Guides](../../../../../Instrume ### OTLP Protocol -OpenTelemetry Protocol (OTLP) is the wire format DeepCube natively supports: +OpenTelemetry Protocol (OTLP) is the wire format DeepCube natively supports. The OTLP specification defines two transports: - **gRPC** (port 4317) - Best performance, binary encoding -- **HTTP/protobuf** (port 4318) - Firewall-friendly alternative +- **HTTP/protobuf** (port 4318) - Not accepted by DeepCube -DeepCube accepts both on port 443 with TLS. +DeepCube accepts OTLP over gRPC only, on port 443 with TLS. OTLP over HTTP is not accepted. ### Sampling