Add support for HTTP OpenTelemetry exporters (#6357)

This commit is contained in:
Billy Biggs
2025-08-15 18:10:21 -07:00
committed by GitHub
parent 4896c7739f
commit d57cc0b930
10 changed files with 301 additions and 34 deletions

View File

@@ -567,5 +567,30 @@ describe('Server Config (config.ts)', () => {
const config = new Config(paramsWithoutTelemetry);
expect(config.getTelemetryOtlpEndpoint()).toBe(DEFAULT_OTLP_ENDPOINT);
});
it('should return provided OTLP protocol', () => {
const params: ConfigParameters = {
...baseParams,
telemetry: { enabled: true, otlpProtocol: 'http' },
};
const config = new Config(params);
expect(config.getTelemetryOtlpProtocol()).toBe('http');
});
it('should return default OTLP protocol if not provided', () => {
const params: ConfigParameters = {
...baseParams,
telemetry: { enabled: true },
};
const config = new Config(params);
expect(config.getTelemetryOtlpProtocol()).toBe('grpc');
});
it('should return default OTLP protocol if telemetry object is not provided', () => {
const paramsWithoutTelemetry: ConfigParameters = { ...baseParams };
delete paramsWithoutTelemetry.telemetry;
const config = new Config(paramsWithoutTelemetry);
expect(config.getTelemetryOtlpProtocol()).toBe('grpc');
});
});
});

View File

@@ -81,6 +81,7 @@ export interface TelemetrySettings {
enabled?: boolean;
target?: TelemetryTarget;
otlpEndpoint?: string;
otlpProtocol?: 'grpc' | 'http';
logPrompts?: boolean;
outfile?: string;
}
@@ -292,6 +293,7 @@ export class Config {
enabled: params.telemetry?.enabled ?? false,
target: params.telemetry?.target ?? DEFAULT_TELEMETRY_TARGET,
otlpEndpoint: params.telemetry?.otlpEndpoint ?? DEFAULT_OTLP_ENDPOINT,
otlpProtocol: params.telemetry?.otlpProtocol,
logPrompts: params.telemetry?.logPrompts ?? true,
outfile: params.telemetry?.outfile,
};
@@ -564,6 +566,10 @@ export class Config {
return this.telemetrySettings.otlpEndpoint ?? DEFAULT_OTLP_ENDPOINT;
}
getTelemetryOtlpProtocol(): 'grpc' | 'http' {
return this.telemetrySettings.otlpProtocol ?? 'grpc';
}
getTelemetryTarget(): TelemetryTarget {
return this.telemetrySettings.target ?? DEFAULT_TELEMETRY_TARGET;
}