|
14 | 14 |
|
15 | 15 | from __future__ import annotations |
16 | 16 |
|
| 17 | +import os |
17 | 18 | from typing import Optional, Union |
18 | 19 |
|
19 | 20 | from google.adk.agents import LlmAgent, RunConfig |
@@ -132,6 +133,8 @@ def model_post_init(self, __context: Any) -> None: |
132 | 133 | "You are trying to use your own LiteLLM client, some default request headers may be missing." |
133 | 134 | ) |
134 | 135 |
|
| 136 | + self._prepare_tracers() |
| 137 | + |
135 | 138 | if self.knowledgebase: |
136 | 139 | from veadk.tools.builtin_tools.load_knowledgebase import ( |
137 | 140 | LoadKnowledgebaseTool, |
@@ -194,6 +197,42 @@ async def event_generator(): |
194 | 197 |
|
195 | 198 | return final_output |
196 | 199 |
|
| 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 | + |
197 | 236 | async def run( |
198 | 237 | self, |
199 | 238 | prompt: str | list[str], |
|
0 commit comments