Skip to content

Commit e094a4d

Browse files
committed
feat: support env to enable exporters
1 parent 8eed1be commit e094a4d

File tree

2 files changed

+45
-3
lines changed

2 files changed

+45
-3
lines changed

veadk/agent.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
from __future__ import annotations
1616

17+
import os
1718
from typing import Optional, Union
1819

1920
from google.adk.agents import LlmAgent, RunConfig
@@ -132,6 +133,8 @@ def model_post_init(self, __context: Any) -> None:
132133
"You are trying to use your own LiteLLM client, some default request headers may be missing."
133134
)
134135

136+
self._prepare_tracers()
137+
135138
if self.knowledgebase:
136139
from veadk.tools.builtin_tools.load_knowledgebase import (
137140
LoadKnowledgebaseTool,
@@ -194,6 +197,42 @@ async def event_generator():
194197

195198
return final_output
196199

200+
def _prepare_tracers(self):
201+
enable_apmplus_tracer = os.getenv("ENABLE_APMPLUS", "false").lower() == "true"
202+
enable_cozeloop_tracer = os.getenv("ENABLE_COZELOOP", "false").lower() == "true"
203+
enable_tls_tracer = os.getenv("ENABLE_TLS", "false").lower() == "true"
204+
205+
if not self.tracers:
206+
from veadk.tracing.telemetry.opentelemetry_tracer import OpentelemetryTracer
207+
208+
self.tracers.append(OpentelemetryTracer())
209+
210+
exporters = self.tracers[0].exporters # type: ignore
211+
212+
from veadk.tracing.telemetry.exporters.apmplus_exporter import APMPlusExporter
213+
from veadk.tracing.telemetry.exporters.cozeloop_exporter import CozeloopExporter
214+
from veadk.tracing.telemetry.exporters.tls_exporter import TLSExporter
215+
216+
if enable_apmplus_tracer and not any(
217+
isinstance(e, APMPlusExporter) for e in exporters
218+
):
219+
self.tracers[0].exporters.append(APMPlusExporter()) # type: ignore
220+
logger.info("Enable APMPlus exporter by env.")
221+
222+
if enable_cozeloop_tracer and not any(
223+
isinstance(e, CozeloopExporter) for e in exporters
224+
):
225+
self.tracers[0].exporters.append(CozeloopExporter()) # type: ignore
226+
logger.info("Enable CozeLoop exporter by env.")
227+
228+
if enable_tls_tracer and not any(isinstance(e, TLSExporter) for e in exporters):
229+
self.tracers[0].exporters.append(TLSExporter()) # type: ignore
230+
logger.info("Enable TLS exporter by env.")
231+
232+
logger.debug(
233+
f"Opentelemetry Tracer init {len(self.tracers[0].exporters)} exporters" # type: ignore
234+
)
235+
197236
async def run(
198237
self,
199238
prompt: str | list[str],

veadk/tracing/telemetry/opentelemetry_tracer.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
from opentelemetry import trace as trace_api
2222
from opentelemetry.sdk import trace as trace_sdk
2323
from opentelemetry.sdk.resources import Resource
24-
from opentelemetry.sdk.trace import TracerProvider, SpanLimits
24+
from opentelemetry.sdk.trace import SpanLimits, TracerProvider
2525
from opentelemetry.sdk.trace.export import BatchSpanProcessor, SimpleSpanProcessor
2626
from pydantic import BaseModel, ConfigDict, Field, field_validator
2727
from typing_extensions import override
@@ -31,8 +31,8 @@
3131
from veadk.tracing.telemetry.exporters.base_exporter import BaseExporter
3232
from veadk.tracing.telemetry.exporters.inmemory_exporter import InMemoryExporter
3333
from veadk.utils.logger import get_logger
34-
from veadk.utils.patches import patch_google_adk_telemetry
3534
from veadk.utils.misc import get_temp_dir
35+
from veadk.utils.patches import patch_google_adk_telemetry
3636

3737
logger = get_logger(__name__)
3838

@@ -131,12 +131,15 @@ def _init_global_tracer_provider(self) -> None:
131131
) + global_tracer_provider._active_span_processor._span_processors
132132

133133
self._processors.append(self._inmemory_exporter.processor)
134+
self.exporters.append(self._inmemory_exporter)
134135
else:
135136
logger.warning(
136137
"InMemoryExporter processor is not initialized, cannot add to OpentelemetryTracer."
137138
)
138139

139-
logger.info(f"Init OpentelemetryTracer with {len(self._processors)} exporters.")
140+
logger.info(
141+
f"Init OpentelemetryTracer with {len(self._processors)} exporter(s)."
142+
)
140143

141144
@property
142145
def trace_file_path(self) -> str:

0 commit comments

Comments
 (0)