telemetry

package
v1.1.10-ollama Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 15, 2026 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Overview

Package telemetry implements the open telemetry in ADK.

Package telemetry contains OpenTelemetry related functionality for ADK.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Option

type Option interface {
	// contains filtered or unexported methods
}

Option configures adk telemetry.

func WithGcpQuotaProject

func WithGcpQuotaProject(projectID string) Option

WithGcpQuotaProject sets the quota project for the telemetry export.

func WithGcpResourceProject

func WithGcpResourceProject(project string) Option

WithGcpResourceProject sets the gcp.project.id resource attribute.

func WithGenAICaptureMessageContent

func WithGenAICaptureMessageContent(capture bool) Option

WithGenAICaptureMessageContent overrides the default [config.genAICaptureMessageContent].

func WithGoogleCredentials

func WithGoogleCredentials(c *google.Credentials) Option

WithGoogleCredentials overrides the application default credentials.

func WithLogRecordProcessors

func WithLogRecordProcessors(p ...sdklog.Processor) Option

WithLogRecordProcessors registers additional log processors.

func WithLoggerProvider

func WithLoggerProvider(lp *sdklog.LoggerProvider) Option

WithLoggerProvider overrides the default LoggerProvider with preconfigured instance.

func WithOtelToCloud

func WithOtelToCloud(value bool) Option

WithOtelToCloud enables/disables exporting telemetry to GCP.

func WithResource

func WithResource(r *resource.Resource) Option

WithResource configures the OTel resource.

func WithSpanProcessors

func WithSpanProcessors(p ...sdktrace.SpanProcessor) Option

WithSpanProcessors registers additional span processors.

func WithTracerProvider

func WithTracerProvider(tp *sdktrace.TracerProvider) Option

WithTracerProvider overrides the default TracerProvider with preconfigured instance.

type Providers

type Providers struct {

	// TracerProvider is the configured TracerProvider or nil.
	TracerProvider *sdktrace.TracerProvider
	// LoggerProvider is the configured LoggerProvider or nil.
	LoggerProvider *sdklog.LoggerProvider
	// contains filtered or unexported fields
}

Providers wraps all telemetry providers and provides [Shutdown] function.

func New

func New(ctx context.Context, opts ...Option) (*Providers, error)

New initializes telemetry providers: TraceProvider, LogProvider, and MeterProvider. Options can be used to customize the defaults, e.g. use custom credentials, add SpanProcessors, or use preconfigured TraceProvider. Telemetry providers have to be registered in the global OTel providers either manually or via Providers.SetGlobalOtelProviders. If your library doesn't use the global providers, you can use the providers directly and pass them to the instrumented libraries.

Usage

 import (
	"context"
	"log"
	"time"

	"go.opentelemetry.io/otel/sdk/resource"
	semconv "go.opentelemetry.io/otel/semconv/v1.36.0"
	"github.com/rinaldes/adk-go/telemetry"
 )

 func main() {
		ctx := context.Background()
		res, err := resource.New(ctx,
			resource.WithAttributes(
				semconv.ServiceNameKey.String("my-service"),
				semconv.ServiceVersionKey.String("1.0.0"),
			),
		)
		if err != nil {
			log.Fatalf("failed to create resource: %v", err)
		}

		telemetryProviders, err := telemetry.New(ctx,
			telemetry.WithOtelToCloud(true),
			telemetry.WithResource(res),
		)
		if err != nil {
			log.Fatal(err)
		}
		defer func() {
			shutdownCtx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
			defer cancel()
			if err := telemetryProviders.Shutdown(shutdownCtx); err != nil {
				log.Printf("telemetry shutdown failed: %v", err)
			}
		}()
		telemetryProviders.SetGlobalOtelProviders()

		tp := telemetryProviders.TracerProvider
		instrumentedlib.SetTracerProvider(tp) // Set TracerProvider manually if your lib doesn't use the global provider.

		// app code
	}

The caller must call Providers.Shutdown method to gracefully shut down the underlying telemetry and release resources.

func (*Providers) SetGlobalOtelProviders

func (t *Providers) SetGlobalOtelProviders()

SetGlobalOtelProviders registers the configured providers as the global OTel providers.

func (*Providers) Shutdown

func (t *Providers) Shutdown(ctx context.Context) error

Shutdown shuts down underlying OTel providers.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL