Documentation
¶
Overview ¶
Package telemetry implements the open telemetry in ADK.
Package telemetry contains OpenTelemetry related functionality for ADK.
Index ¶
- type Option
- func WithGcpQuotaProject(projectID string) Option
- func WithGcpResourceProject(project string) Option
- func WithGenAICaptureMessageContent(capture bool) Option
- func WithGoogleCredentials(c *google.Credentials) Option
- func WithLogRecordProcessors(p ...sdklog.Processor) Option
- func WithLoggerProvider(lp *sdklog.LoggerProvider) Option
- func WithOtelToCloud(value bool) Option
- func WithResource(r *resource.Resource) Option
- func WithSpanProcessors(p ...sdktrace.SpanProcessor) Option
- func WithTracerProvider(tp *sdktrace.TracerProvider) Option
- type Providers
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 ¶
WithGcpQuotaProject sets the quota project for the telemetry export.
func WithGcpResourceProject ¶
WithGcpResourceProject sets the gcp.project.id resource attribute.
func WithGenAICaptureMessageContent ¶
WithGenAICaptureMessageContent overrides the default [config.genAICaptureMessageContent].
func WithGoogleCredentials ¶
func WithGoogleCredentials(c *google.Credentials) Option
WithGoogleCredentials overrides the application default credentials.
func WithLogRecordProcessors ¶
WithLogRecordProcessors registers additional log processors.
func WithLoggerProvider ¶
func WithLoggerProvider(lp *sdklog.LoggerProvider) Option
WithLoggerProvider overrides the default LoggerProvider with preconfigured instance.
func WithOtelToCloud ¶
WithOtelToCloud enables/disables exporting telemetry to GCP.
func WithResource ¶
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 ¶
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.