Skip to content

Commit 03c20fa

Browse files
yeesiancopybara-github
authored andcommitted
feat: Add enable_telemetry to the initializer
PiperOrigin-RevId: 703574132
1 parent b9fecea commit 03c20fa

File tree

3 files changed

+423
-1
lines changed

3 files changed

+423
-1
lines changed

google/cloud/aiplatform/initializer.py

+28
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ def init(
151151
api_key: Optional[str] = None,
152152
api_transport: Optional[str] = None,
153153
request_metadata: Optional[Sequence[Tuple[str, str]]] = None,
154+
enable_telemetry: Optional[bool] = False,
154155
):
155156
"""Updates common initialization parameters with provided options.
156157
@@ -218,6 +219,9 @@ def init(
218219
beta state (preview).
219220
request_metadata:
220221
Optional. Additional gRPC metadata to send with every client request.
222+
enable_telemetry:
223+
Optional. Whether to enable telemetry. If True, traces will be
224+
sent to Cloud Trace (under the given project). Default is False.
221225
Raises:
222226
ValueError:
223227
If experiment_description is provided but experiment is not.
@@ -298,6 +302,30 @@ def init(
298302
backing_tensorboard=experiment_tensorboard,
299303
)
300304

305+
if enable_telemetry:
306+
logging.info("Telemetry is enabled.")
307+
import google.cloud.trace_v2
308+
from opentelemetry import trace
309+
from opentelemetry.exporter.cloud_trace import CloudTraceSpanExporter
310+
from opentelemetry.sdk.trace import TracerProvider
311+
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
312+
313+
credentials, _ = google.auth.default()
314+
span_exporter = CloudTraceSpanExporter(
315+
project_id=self.project,
316+
client=trace_v2.TraceServiceClient(
317+
credentials=credentials.with_quota_project(self.project),
318+
),
319+
)
320+
span_processor = SimpleSpanProcessor(span_exporter=span_exporter)
321+
tracer_provider = trace.get_tracer_provider()
322+
trace.set_tracer_provider(tracer_provider)
323+
cloud_trace_exporter = CloudTraceSpanExporter(project_id=self.project)
324+
trace.get_tracer_provider().add_span_processor(
325+
SimpleSpanProcessor(cloud_trace_exporter)
326+
)
327+
telemetry.VertexAIInstrumentor().instrument()
328+
301329
def get_encryption_spec(
302330
self,
303331
encryption_spec_key_name: Optional[str],

0 commit comments

Comments
 (0)