Skip to content
This repository was archived by the owner on Oct 3, 2023. It is now read-only.

Commit 3ee9422

Browse files
authored
Allow specifying apiEndpoint for stackdriver exporters (#985)
* feat: allow specifying apiEndpoint for stackdriver exporters
1 parent 1c12e6f commit 3ee9422

File tree

3 files changed

+22
-7
lines changed

3 files changed

+22
-7
lines changed

packages/opencensus-exporter-stackdriver/src/stackdriver-cloudtrace.ts

+8-3
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import {
2222
} from '@opencensus/core';
2323
import { logger, Logger } from '@opencensus/core';
2424
import { auth as globalAuth, GoogleAuth, JWT } from 'google-auth-library';
25-
import { google } from 'googleapis';
25+
import { google, cloudtrace_v2 } from 'googleapis';
2626
import { getDefaultResource } from './common-utils';
2727
import {
2828
createAttributes,
@@ -39,7 +39,6 @@ import {
3939
} from './types';
4040

4141
google.options({ headers: { 'x-opencensus-outgoing-request': 0x1 } });
42-
const cloudTrace = google.cloudtrace('v2');
4342
let auth = globalAuth;
4443

4544
/** Format and sends span information to Stackdriver */
@@ -49,6 +48,7 @@ export class StackdriverTraceExporter implements Exporter {
4948
logger: Logger;
5049
failBuffer: SpanContext[] = [];
5150
private RESOURCE_LABELS: Promise<Record<string, AttributeValue>>;
51+
private cloudTrace: cloudtrace_v2.Cloudtrace;
5252

5353
constructor(options: StackdriverExporterOptions) {
5454
this.projectId = options.projectId;
@@ -63,6 +63,11 @@ export class StackdriverTraceExporter implements Exporter {
6363
scopes: ['https://www.googleapis.com/auth/cloud-platform'],
6464
});
6565
}
66+
this.cloudTrace = google.cloudtrace({
67+
version: 'v2',
68+
rootUrl:
69+
'https://' + (options.apiEndpoint || 'cloudtrace.googleapis.com'),
70+
});
6671
}
6772

6873
/**
@@ -165,7 +170,7 @@ export class StackdriverTraceExporter implements Exporter {
165170
// data to backend :
166171
// https://cloud.google.com/trace/docs/reference/v2/rpc/google.devtools.
167172
// cloudtrace.v2#google.devtools.cloudtrace.v2.TraceService
168-
cloudTrace.projects.traces.batchWrite(spans, (err: Error | null) => {
173+
this.cloudTrace.projects.traces.batchWrite(spans, (err: Error | null) => {
169174
if (err) {
170175
err.message = `batchWriteSpans error: ${err.message}`;
171176
this.logger.error(err.message);

packages/opencensus-exporter-stackdriver/src/stackdriver-monitoring.ts

+9-4
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import {
2929
View,
3030
} from '@opencensus/core';
3131
import { auth as globalAuth, GoogleAuth, JWT } from 'google-auth-library';
32-
import { google } from 'googleapis';
32+
import { google, monitoring_v3 } from 'googleapis';
3333
import { getDefaultResource } from './common-utils';
3434
import {
3535
createMetricDescriptorData,
@@ -50,7 +50,6 @@ const OC_HEADER = {
5050
};
5151

5252
google.options({ headers: OC_HEADER });
53-
const monitoring = google.monitoring('v3');
5453
let auth = globalAuth;
5554

5655
/** Format and sends Stats to Stackdriver */
@@ -71,6 +70,7 @@ export class StackdriverStatsExporter implements StatsEventListener {
7170
> = new Map();
7271
private DEFAULT_RESOURCE: Promise<MonitoredResource>;
7372
logger: Logger;
73+
private monitoring: monitoring_v3.Monitoring;
7474

7575
constructor(options: StackdriverExporterOptions) {
7676
this.period =
@@ -93,6 +93,11 @@ export class StackdriverStatsExporter implements StatsEventListener {
9393
scopes: ['https://www.googleapis.com/auth/cloud-platform'],
9494
});
9595
}
96+
this.monitoring = google.monitoring({
97+
version: 'v3',
98+
rootUrl:
99+
'https://' + (options.apiEndpoint || 'monitoring.googleapis.com'),
100+
});
96101
}
97102

98103
/**
@@ -195,7 +200,7 @@ export class StackdriverStatsExporter implements StatsEventListener {
195200
};
196201

197202
return new Promise((resolve, reject) => {
198-
monitoring.projects.timeSeries.create(
203+
this.monitoring.projects.timeSeries.create(
199204
request,
200205
{ headers: OC_HEADER, userAgentDirectives: [OC_USER_AGENT] },
201206
(err: Error | null) => {
@@ -224,7 +229,7 @@ export class StackdriverStatsExporter implements StatsEventListener {
224229
};
225230

226231
return new Promise((resolve, reject) => {
227-
monitoring.projects.metricDescriptors.create(
232+
this.monitoring.projects.metricDescriptors.create(
228233
request,
229234
{ headers: OC_HEADER, userAgentDirectives: [OC_USER_AGENT] },
230235
(err: Error | null) => {

packages/opencensus-exporter-stackdriver/src/types.ts

+5
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,11 @@ export interface StackdriverExporterOptions extends ExporterConfig {
156156
* instead of your application default credentials. Optional
157157
*/
158158
credentials?: JWTInput;
159+
/**
160+
* The endpoint of the service. Defaults to cloudtrace.googleapis.com
161+
* for trace, and monitoring.googleapis.com for monitoring.
162+
*/
163+
apiEndpoint?: string;
159164

160165
/**
161166
* Is called whenever the exporter fails to upload metrics to stackdriver.

0 commit comments

Comments
 (0)