Skip to content

Commit 95ec428

Browse files
committed
Support export OTel metrics to be EMF in starndard output
1 parent 07d9d0d commit 95ec428

File tree

7 files changed

+896
-567
lines changed

7 files changed

+896
-567
lines changed

aws-opentelemetry-distro/src/amazon/opentelemetry/distro/aws_opentelemetry_configurator.py

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -634,10 +634,11 @@ def _validate_and_fetch_logs_header() -> OtlpLogHeaderSetting:
634634
logs_headers = os.environ.get(OTEL_EXPORTER_OTLP_LOGS_HEADERS)
635635

636636
if not logs_headers:
637-
_logger.warning(
638-
"Improper configuration: Please configure the environment variable OTEL_EXPORTER_OTLP_LOGS_HEADERS "
639-
"to include x-aws-log-group and x-aws-log-stream"
640-
)
637+
if not _is_lambda_environment():
638+
_logger.warning(
639+
"Improper configuration: Please configure the environment variable OTEL_EXPORTER_OTLP_LOGS_HEADERS "
640+
"to include x-aws-log-group and x-aws-log-stream"
641+
)
641642
return OtlpLogHeaderSetting(None, None, None, False)
642643

643644
log_group = None
@@ -771,8 +772,24 @@ def _check_emf_exporter_enabled() -> bool:
771772

772773
return True
773774

774-
775775
def _create_emf_exporter():
776+
"""
777+
Create the appropriate EMF exporter based on the environment and configuration.
778+
779+
"""
780+
log_header_setting = _validate_and_fetch_logs_header()
781+
782+
if _is_lambda_environment() and not log_header_setting.is_valid:
783+
# Lambda without valid logs http headers - use Console EMF exporter
784+
from amazon.opentelemetry.distro.exporter.aws.metrics.console_emf_exporter import (
785+
ConsoleEmfExporter,
786+
)
787+
return ConsoleEmfExporter(namespace=log_header_setting.namespace)
788+
else:
789+
# Non-Lambda environment - use CloudWatch EMF exporter
790+
return _create_cloudwatch_emf_exporter()
791+
792+
def _create_cloudwatch_emf_exporter():
776793
"""Create and configure the CloudWatch EMF exporter."""
777794
try:
778795
session = get_aws_session()

0 commit comments

Comments
 (0)