Skip to content

Commit 1b66c01

Browse files
authored
Merge branch 'main' into lambda-emf-support
2 parents 1953f78 + 629faf5 commit 1b66c01

File tree

1 file changed

+35
-34
lines changed

1 file changed

+35
-34
lines changed

aws-distro-opentelemetry-node-autoinstrumentation/src/aws-opentelemetry-configurator.ts

Lines changed: 35 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -565,42 +565,52 @@ export class AwsLoggerProcessorProvider {
565565
case 'http/json':
566566
exporters.push(new OTLPHttpLogExporter());
567567
break;
568-
case 'http/protobuf':
569-
if (
570-
otlpExporterLogsEndpoint &&
571-
isAwsOtlpEndpoint(otlpExporterLogsEndpoint, 'logs') &&
572-
validateAndFetchLogsHeader().isValid
573-
) {
568+
case 'http/protobuf': {
569+
let logExporter: LogRecordExporter | undefined = undefined;
570+
if (otlpExporterLogsEndpoint && isAwsOtlpEndpoint(otlpExporterLogsEndpoint, 'logs')) {
574571
diag.debug('Detected CloudWatch Logs OTLP endpoint. Switching exporter to OTLPAwsLogExporter');
575-
exporters.push(
576-
new OTLPAwsLogExporter(otlpExporterLogsEndpoint.toLowerCase(), {
572+
if (validateAndFetchLogsHeader().isValid) {
573+
logExporter = new OTLPAwsLogExporter(otlpExporterLogsEndpoint.toLowerCase(), {
577574
compression: CompressionAlgorithm.GZIP,
578-
})
579-
);
580-
} else {
581-
exporters.push(new OTLPProtoLogExporter());
575+
});
576+
} else {
577+
diag.warn(
578+
`Invalid configuration for OTLPAwsLogExporter, please configure the environment variable OTEL_EXPORTER_OTLP_LOGS_HEADERS to have values for ${AWS_OTLP_LOGS_GROUP_HEADER} and ${AWS_OTLP_LOGS_STREAM_HEADER}. Falling back to OTLPProtoLogExporter`
579+
);
580+
}
582581
}
582+
583+
if (!logExporter) {
584+
logExporter = new OTLPProtoLogExporter();
585+
}
586+
exporters.push(logExporter);
583587
break;
588+
}
584589
case undefined:
585590
case '':
586591
exporters.push(new OTLPProtoLogExporter());
587592
break;
588-
default:
593+
default: {
589594
diag.warn(`Unsupported OTLP logs protocol: "${protocol}". Using http/protobuf.`);
590-
if (
591-
otlpExporterLogsEndpoint &&
592-
isAwsOtlpEndpoint(otlpExporterLogsEndpoint, 'logs') &&
593-
validateAndFetchLogsHeader().isValid
594-
) {
595+
let logExporter: LogRecordExporter | undefined = undefined;
596+
if (otlpExporterLogsEndpoint && isAwsOtlpEndpoint(otlpExporterLogsEndpoint, 'logs')) {
595597
diag.debug('Detected CloudWatch Logs OTLP endpoint. Switching exporter to OTLPAwsLogExporter');
596-
exporters.push(
597-
new OTLPAwsLogExporter(otlpExporterLogsEndpoint.toLowerCase(), {
598+
if (validateAndFetchLogsHeader().isValid) {
599+
logExporter = new OTLPAwsLogExporter(otlpExporterLogsEndpoint.toLowerCase(), {
598600
compression: CompressionAlgorithm.GZIP,
599-
})
600-
);
601-
} else {
602-
exporters.push(new OTLPProtoLogExporter());
601+
});
602+
} else {
603+
diag.warn(
604+
`Invalid configuration for OTLPAwsLogExporter, please configure the environment variable OTEL_EXPORTER_OTLP_LOGS_HEADERS to have values for ${AWS_OTLP_LOGS_GROUP_HEADER} and ${AWS_OTLP_LOGS_STREAM_HEADER}. Falling back to OTLPProtoLogExporter`
605+
);
606+
}
607+
}
608+
609+
if (!logExporter) {
610+
logExporter = new OTLPProtoLogExporter();
603611
}
612+
exporters.push(logExporter);
613+
}
604614
}
605615
} else if (exporter === 'console') {
606616
exporters.push(new ConsoleLogRecordExporter());
@@ -973,7 +983,6 @@ export function validateAndFetchLogsHeader(): OtlpLogHeaderSetting {
973983
let logGroup: string | undefined = undefined;
974984
let logStream: string | undefined = undefined;
975985
let namespace: string | undefined = undefined;
976-
let filteredLogHeadersCount: number = 0;
977986

978987
for (const pair of logHeaders.split(',')) {
979988
const splitIndex = pair.indexOf('=');
@@ -983,23 +992,15 @@ export function validateAndFetchLogsHeader(): OtlpLogHeaderSetting {
983992

984993
if (key === AWS_OTLP_LOGS_GROUP_HEADER && value) {
985994
logGroup = value;
986-
filteredLogHeadersCount++;
987995
} else if (key === AWS_OTLP_LOGS_STREAM_HEADER && value) {
988996
logStream = value;
989-
filteredLogHeadersCount++;
990997
} else if (key === AWS_EMF_METRICS_NAMESPACE && value) {
991998
namespace = value;
992999
}
9931000
}
9941001
}
9951002

996-
const isValid = filteredLogHeadersCount === 2 && !!logGroup && !!logStream;
997-
if (!isValid) {
998-
diag.warn(
999-
'Incomplete configuration: Please configure the environment variable OTEL_EXPORTER_OTLP_LOGS_HEADERS ' +
1000-
`to have values for ${AWS_OTLP_LOGS_GROUP_HEADER} and ${AWS_OTLP_LOGS_STREAM_HEADER}`
1001-
);
1002-
}
1003+
const isValid = !!logGroup && !!logStream;
10031004

10041005
return {
10051006
logGroup: logGroup,

0 commit comments

Comments
 (0)