oteltelemetry

package
v1.1.12 Latest Latest
Warning

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

Go to latest
Published: Oct 22, 2026 License: MIT Imports: 18 Imported by: 0

Documentation

Overview

Package oteltelemetry menginisialisasi OpenTelemetry (trace, log, metric) untuk service Goravel dalam satu panggilan, menggantikan TelemetryServiceProvider yang sebelumnya di-copy-paste ke setiap service.

Konfigurasi exporter, TLS, sampling, dan resource mengikuti environment variable standar OpenTelemetry, sehingga bisa diatur dari helm chart tanpa ubah kode:

OTEL_EXPORTER_OTLP_ENDPOINT   http://otel-collector:4318 (scheme http → tanpa TLS, https → TLS)
OTEL_EXPORTER_OTLP_HEADERS    header tambahan (mis. auth ke collector)
OTEL_TRACES_SAMPLER           default parentbased_always_on; mis. parentbased_traceidratio
OTEL_TRACES_SAMPLER_ARG       rasio sampling, mis. 0.1
OTEL_SERVICE_NAME             override nama service (default: APP_NAME)
OTEL_RESOURCE_ATTRIBUTES      mis. service.version=1.2.3,k8s.namespace.name=mks

Penggunaan di provider Goravel:

func (t *TelemetryServiceProvider) Boot(app foundation.Application) {
    if !facades.Config().GetBool("OTEL_ENABLED", false) {
        return
    }
    shutdown, err := oteltelemetry.Setup(context.Background(), oteltelemetry.ConfigFromEnv())
    if err != nil {
        fmt.Printf("[telemetry] OTEL init failed: %v\n", err)
        return
    }
    app.Singleton(oteltelemetry.ShutdownKey, func(foundation.Application) (any, error) { return shutdown, nil })
}

dan saat proses berhenti (SIGTERM):

oteltelemetry.Shutdown(5 * time.Second)

Index

Constants

View Source
const ShutdownKey = "otelShutdown"

ShutdownKey adalah key container Goravel yang disarankan untuk menyimpan fungsi shutdown.

Variables

This section is empty.

Functions

func Shutdown

func Shutdown(timeout time.Duration) error

Shutdown menutup provider dari Setup terakhir dengan batas waktu timeout. Aman dipanggil walau Setup tidak pernah dipanggil (OTEL_ENABLED=false) atau dipanggil berkali-kali.

Types

type Config

type Config struct {
	// ServiceName dipakai sebagai service.name (di-override OTEL_SERVICE_NAME bila diset).
	ServiceName string
	// Environment dipakai sebagai deployment.environment.
	Environment string
	// MetricInterval interval export metric. Default 30s.
	MetricInterval time.Duration
	// DisableRuntimeMetrics mematikan Go runtime metrics (goroutine, heap, GC).
	DisableRuntimeMetrics bool
}

Config untuk Setup. Field kosong memakai default.

func ConfigFromEnv

func ConfigFromEnv() Config

ConfigFromEnv membaca APP_NAME dan APP_ENV dari environment proses.

type ShutdownFunc

type ShutdownFunc func(context.Context) error

ShutdownFunc mem-flush dan menutup semua provider yang dibuat oleh Setup.

func Setup

func Setup(ctx context.Context, cfg Config) (ShutdownFunc, error)

Setup membuat TracerProvider, LoggerProvider, dan MeterProvider dengan exporter OTLP/HTTP, lalu memasangnya sebagai provider global beserta propagator W3C TraceContext + Baggage. Jika salah satu gagal dibuat, provider yang sudah terbentuk ditutup kembali dan error dikembalikan (global tidak diubah).

Jump to

Keyboard shortcuts

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