Skip to content

Commit

Permalink
feat(sdk): add OpenTelemetry logging support (#2112)
Browse files Browse the repository at this point in the history
  • Loading branch information
jinsongo authored Oct 11, 2024
1 parent a1b82d8 commit e373d2d
Show file tree
Hide file tree
Showing 6 changed files with 144 additions and 40 deletions.
69 changes: 42 additions & 27 deletions packages/traceloop-sdk/poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/traceloop-sdk/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ opentelemetry-api = "^1.27.0"
opentelemetry-sdk = "^1.27.0"
opentelemetry-exporter-otlp-proto-http = "^1.26.0"
opentelemetry-exporter-otlp-proto-grpc = "^1.26.0"
opentelemetry-instrumentation-logging = "^0.48b0"
opentelemetry-instrumentation-requests = "^0.48b0"
opentelemetry-instrumentation-sqlalchemy = "^0.48b0"
opentelemetry-instrumentation-urllib3 = "^0.48b0"
Expand Down
39 changes: 26 additions & 13 deletions packages/traceloop-sdk/traceloop/sdk/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,21 @@
from opentelemetry.sdk.trace import SpanProcessor
from opentelemetry.sdk.trace.export import SpanExporter
from opentelemetry.sdk.metrics.export import MetricExporter
from opentelemetry.sdk._logs.export import LogExporter
from opentelemetry.sdk.resources import SERVICE_NAME
from opentelemetry.propagators.textmap import TextMapPropagator
from opentelemetry.util.re import parse_env_headers

from traceloop.sdk.images.image_uploader import ImageUploader
from traceloop.sdk.metrics.metrics import MetricsWrapper
from traceloop.sdk.logging.logging import LoggerWrapper
from traceloop.sdk.telemetry import Telemetry
from traceloop.sdk.instruments import Instruments
from traceloop.sdk.config import (
is_content_tracing_enabled,
is_tracing_enabled,
is_metrics_enabled,
is_logging_enabled,
)
from traceloop.sdk.fetcher import Fetcher
from traceloop.sdk.tracing.tracing import (
Expand Down Expand Up @@ -48,6 +51,7 @@ def init(
exporter: SpanExporter = None,
metrics_exporter: MetricExporter = None,
metrics_headers: Dict[str, str] = None,
logging_exporter: LogExporter = None,
processor: SpanProcessor = None,
propagator: TextMapPropagator = None,
traceloop_sync_enabled: bool = False,
Expand Down Expand Up @@ -135,23 +139,32 @@ def init(
instruments=instruments,
)

if not metrics_exporter and exporter:
return

metrics_endpoint = os.getenv("TRACELOOP_METRICS_ENDPOINT") or api_endpoint
metrics_headers = (
os.getenv("TRACELOOP_METRICS_HEADERS") or metrics_headers or headers
)

if not is_metrics_enabled() or not metrics_exporter and exporter:
print(Fore.YELLOW + "Metrics are disabled" + Fore.RESET)
return
else:
metrics_endpoint = os.getenv("TRACELOOP_METRICS_ENDPOINT") or api_endpoint
metrics_headers = (
os.getenv("TRACELOOP_METRICS_HEADERS") or metrics_headers or headers
)
if metrics_exporter or processor:
print(Fore.GREEN + "Traceloop exporting metrics to a custom exporter")

MetricsWrapper.set_static_params(
resource_attributes, metrics_endpoint, metrics_headers
)
MetricsWrapper.set_static_params(
resource_attributes, metrics_endpoint, metrics_headers
)
Traceloop.__metrics_wrapper = MetricsWrapper(exporter=metrics_exporter)

Traceloop.__metrics_wrapper = MetricsWrapper(exporter=metrics_exporter)
if not is_logging_enabled() or not logging_exporter and exporter:
print(Fore.YELLOW + "Logging are disabled" + Fore.RESET)
else:
logging_endpoint = os.getenv("TRACELOOP_LOGGING_ENDPOINT") or api_endpoint
if logging_exporter or processor:
print(Fore.GREEN + "Traceloop exporting logs to a custom exporter")

LoggerWrapper.set_static_params(
resource_attributes, logging_endpoint
)
Traceloop.__logger_wrapper = LoggerWrapper(exporter=logging_exporter)

def set_association_properties(properties: dict) -> None:
set_association_properties(properties)
Expand Down
4 changes: 4 additions & 0 deletions packages/traceloop-sdk/traceloop/sdk/config/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,7 @@ def is_content_tracing_enabled() -> bool:

def is_metrics_enabled() -> bool:
return (os.getenv("TRACELOOP_METRICS_ENABLED") or "true").lower() == "true"


def is_logging_enabled() -> bool:
return (os.getenv("TRACELOOP_LOGGING_ENABLED") or "false").lower() == "true"
Empty file.
Loading

0 comments on commit e373d2d

Please sign in to comment.