Skip to content

Commit e80685a

Browse files
feat: Add Google Cloud destination support (#814)
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
1 parent b2af9a2 commit e80685a

File tree

4 files changed

+174
-4
lines changed

4 files changed

+174
-4
lines changed

packages/traceloop-sdk/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
"@traceloop/instrumentation-pinecone": "workspace:*",
7676
"@traceloop/instrumentation-qdrant": "workspace:*",
7777
"@traceloop/instrumentation-together": "workspace:*",
78+
"@google-cloud/opentelemetry-cloud-trace-exporter": "^1.0.0",
7879
"@traceloop/instrumentation-vertexai": "workspace:*",
7980
"@types/nunjucks": "^3.2.6",
8081
"cross-fetch": "^4.1.0",

packages/traceloop-sdk/src/lib/interfaces/initialize-options.interface.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,4 +141,10 @@ export interface InitializeOptions {
141141
* Defaults to the TRACELOOP_EXP_SLUG environment variable.
142142
*/
143143
experimentSlug?: string;
144+
145+
/**
146+
* The Google Cloud Project ID for sending traces data. Optional.
147+
* This is used to configure the Google Cloud Trace Exporter.
148+
*/
149+
gcpProjectId?: string;
144150
}

packages/traceloop-sdk/src/lib/tracing/index.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { NodeSDK } from "@opentelemetry/sdk-node";
22
import { SpanProcessor } from "@opentelemetry/sdk-trace-node";
33
import { context, diag } from "@opentelemetry/api";
44
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto";
5+
import { TraceExporter as GcpTraceExporter } from "@google-cloud/opentelemetry-cloud-trace-exporter";
56
import { Resource } from "@opentelemetry/resources";
67
import { ATTR_SERVICE_NAME } from "@opentelemetry/semantic-conventions";
78
import { Instrumentation } from "@opentelemetry/instrumentation";
@@ -286,10 +287,12 @@ export const startTracing = (options: InitializeOptions) => {
286287

287288
const traceExporter =
288289
options.exporter ??
289-
new OTLPTraceExporter({
290-
url: `${options.baseUrl}/v1/traces`,
291-
headers,
292-
});
290+
(options.gcpProjectId
291+
? new GcpTraceExporter({ projectId: options.gcpProjectId })
292+
: new OTLPTraceExporter({
293+
url: `${baseUrl}/v1/traces`,
294+
headers,
295+
}));
293296

294297
_spanProcessor = createSpanProcessor({
295298
apiKey: options.apiKey,

pnpm-lock.yaml

Lines changed: 160 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)