Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
2c9466a
add http middleware
krishankumar01 Dec 23, 2025
7ccca56
add http transport
krishankumar01 Dec 29, 2025
8df0782
optimise http telemetry package
krishankumar01 Dec 29, 2025
01ecf4b
add test cases for Telemetry middleware
krishankumar01 Dec 29, 2025
0d8fda5
add auto instrumentation configs
krishankumar01 Dec 29, 2025
b2c07d5
Merge branch 'master' into kkumar-gcc/#726-auto-instrumentation-2
krishankumar01 Jan 2, 2026
395f109
add config to enable Telemetry for http clients
krishankumar01 Jan 2, 2026
bb1f529
add docs for config facade
krishankumar01 Jan 2, 2026
441ba96
add ConfigFacade nil warning
krishankumar01 Jan 2, 2026
cb3cb89
Merge branch 'master' into kkumar-gcc/#726-auto-instrumentation-2
krishankumar01 Jan 4, 2026
7c59c97
disable default telemetry
krishankumar01 Jan 4, 2026
ab72e2a
optimise transport
krishankumar01 Jan 4, 2026
413bdd6
add kill switch for instrumentation
krishankumar01 Jan 4, 2026
f999029
update the stubs
krishankumar01 Jan 4, 2026
98ec1f7
remove unnecessary handler
krishankumar01 Jan 4, 2026
ad59c56
optimise log instrumentation
krishankumar01 Jan 4, 2026
1fea34b
move route registration in the end
krishankumar01 Jan 4, 2026
794ed71
lazily initialize middleware and transport to work with new applicati…
krishankumar01 Jan 4, 2026
76021c2
optimise channel test
krishankumar01 Jan 4, 2026
eb97e1b
optimise channel test
krishankumar01 Jan 4, 2026
c23884a
merge master
krishankumar01 Jan 18, 2026
e4faad6
accept telemetry facade as an input instead of using global instance
krishankumar01 Jan 18, 2026
5141d18
use a callback to resolve the telemetry facade instance
krishankumar01 Jan 18, 2026
5a26971
optimise grpc handler to remove usage of telemetry and config facade
krishankumar01 Jan 18, 2026
5a5d9fc
optimise the grpc handler
krishankumar01 Jan 18, 2026
75130b9
Merge branch 'master' into kkumar-gcc/#726-auto-instrumentation-2
krishankumar01 Jan 20, 2026
09f4745
use telemetry transport if enabled
krishankumar01 Jan 20, 2026
9793141
optimise http auto instrumentation
krishankumar01 Jan 20, 2026
bd0645b
optimize log test cases
krishankumar01 Jan 20, 2026
f7e34b8
optimise
krishankumar01 Jan 21, 2026
777ce25
optimise
krishankumar01 Jan 21, 2026
43a7d8f
optimise
krishankumar01 Jan 26, 2026
9d3460c
optimise
krishankumar01 Jan 26, 2026
4fcd103
Merge branch 'master' into kkumar-gcc/#726-auto-instrumentation-2
krishankumar01 Jan 26, 2026
6567e6f
revert PR#1357
krishankumar01 Feb 7, 2026
61af1b4
fix log test cases
krishankumar01 Feb 7, 2026
16b6ec3
Merge branch 'master' into kkumar-gcc/#726-auto-instrumentation-2
krishankumar01 Feb 7, 2026
75c8123
revert GRPC changes
krishankumar01 Feb 13, 2026
b6d4be5
optimise middleware
krishankumar01 Feb 13, 2026
fc31980
remove zipkin trace driver
krishankumar01 Feb 13, 2026
6ab8e5e
correct GRPC enable condition
krishankumar01 Feb 14, 2026
e2dd04e
correct http transport enable condition
krishankumar01 Feb 14, 2026
739df23
correct log channel enable condition
krishankumar01 Feb 14, 2026
7cdc2f1
Merge branch 'master' into kkumar-gcc/#726-auto-instrumentation-2
krishankumar01 Feb 14, 2026
6129105
update go mod
krishankumar01 Feb 14, 2026
2f6e23f
fix test cases
krishankumar01 Feb 14, 2026
542dfa6
fix test cases
krishankumar01 Feb 14, 2026
2ce4115
fix test cases
krishankumar01 Feb 14, 2026
0d36c61
fix tests
hwbrzzl Feb 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions contracts/binding/binding.go
Original file line number Diff line number Diff line change
Expand Up @@ -369,14 +369,14 @@ var (
},
},
},
// Telemetry: {
// Description: "Provides distributed tracing with OpenTelemetry.",
// PkgPath: "github.com/goravel/framework/telemetry",
// Dependencies: []string{
// Config,
// Log,
// },
// },
Telemetry: {
Description: "Provides distributed tracing with OpenTelemetry.",
PkgPath: "github.com/goravel/framework/telemetry",
Dependencies: []string{
Config,
Log,
},
},
Testing: {
Description: "Provides tools for testing your application.",
PkgPath: "github.com/goravel/framework/testing",
Expand Down
3 changes: 2 additions & 1 deletion contracts/foundation/application.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import (
"github.com/goravel/framework/contracts/route"
"github.com/goravel/framework/contracts/schedule"
"github.com/goravel/framework/contracts/session"
"github.com/goravel/framework/contracts/telemetry"
"github.com/goravel/framework/contracts/testing"
"github.com/goravel/framework/contracts/translation"
"github.com/goravel/framework/contracts/validation"
Expand Down Expand Up @@ -174,7 +175,7 @@ type Application interface {
// MakeStorage resolves the storage instance.
MakeStorage() filesystem.Storage
// MakeTelemetry resolves the telemetry instance.
// MakeTelemetry() telemetry.Telemetry
MakeTelemetry() telemetry.Telemetry
// MakeTesting resolves the testing instance.
MakeTesting() testing.Testing
// MakeValidation resolves the validation instance.
Expand Down
2 changes: 2 additions & 0 deletions contracts/telemetry/telemetry.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import (
oteltrace "go.opentelemetry.io/otel/trace"
)

type Resolver = func() Telemetry

type Telemetry interface {
// Logger returns a log.Logger instance for emitting structured log records under the given instrumentation name.
// Optional log.LoggerOption parameters allow customization of logger behavior.
Expand Down
22 changes: 12 additions & 10 deletions errors/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -241,16 +241,18 @@ var (
TemplateFailedToFormatGoCode = New("failed to format go code: %v")
TemplateFailedToParse = New("failed to parse template: %v")

TelemetryPropagatorRequired = New("telemetry propagator is required").SetModule(ModuleTelemetry)
TelemetryExporterNotFound = New("telemetry exporter not found").SetModule(ModuleTelemetry)
TelemetryUnsupportedDriver = New("unsupported telemetry exporter driver: %s").SetModule(ModuleTelemetry)
TelemetryUnsupportedPropagator = New("unsupported telemetry propagator: %s").SetModule(ModuleTelemetry)
TelemetryZipkinEndpointRequired = New("telemetry zipkin endpoint is required").SetModule(ModuleTelemetry)
TelemetryServiceNameRequired = New("telemetry service name is required").SetModule(ModuleTelemetry)
TelemetryViaRequired = New("custom driver requires a factory function to be provided in the 'via' field").SetModule(ModuleTelemetry)
TelemetryMetricViaTypeMismatch = New("custom metrics driver requires func(context.Context) (sdkmetric.Reader, error), received %s").SetModule(ModuleTelemetry)
TelemetryTraceViaTypeMismatch = New("custom traces driver requires func(context.Context) (sdktrace.SpanExporter, error), received %s").SetModule(ModuleTelemetry)
TelemetryLogViaTypeMismatch = New("custom logger driver requires func(context.Context) (sdklog.Exporter, error), received %s").SetModule(ModuleTelemetry)
TelemetryPropagatorRequired = New("telemetry propagator is required").SetModule(ModuleTelemetry)
TelemetryExporterNotFound = New("telemetry exporter not found").SetModule(ModuleTelemetry)
TelemetryUnsupportedDriver = New("unsupported telemetry exporter driver: %s").SetModule(ModuleTelemetry)
TelemetryUnsupportedPropagator = New("unsupported telemetry propagator: %s").SetModule(ModuleTelemetry)
TelemetryZipkinEndpointRequired = New("telemetry zipkin endpoint is required").SetModule(ModuleTelemetry)
TelemetryServiceNameRequired = New("telemetry service name is required").SetModule(ModuleTelemetry)
TelemetryViaRequired = New("custom driver requires a factory function to be provided in the 'via' field").SetModule(ModuleTelemetry)
TelemetryMetricViaTypeMismatch = New("custom metrics driver requires func(context.Context) (sdkmetric.Reader, error), received %s").SetModule(ModuleTelemetry)
TelemetryTraceViaTypeMismatch = New("custom traces driver requires func(context.Context) (sdktrace.SpanExporter, error), received %s").SetModule(ModuleTelemetry)
TelemetryLogViaTypeMismatch = New("custom logger driver requires func(context.Context) (sdklog.Exporter, error), received %s").SetModule(ModuleTelemetry)
TelemetryGrpcServerStatsHandlerDisabled = New("Facade not initialized. gRPC server stats instrumentation is disabled.").SetModule(ModuleTelemetry)
TelemetryGrpcClientStatsHandlerDisabled = New("Facade not initialized. gRPC client stats instrumentation is disabled.").SetModule(ModuleTelemetry)

TestingImageBuildFailed = New("init %s docker error: %v")
TestingImageNoContainerId = New("no container id return when creating %s docker")
Expand Down
7 changes: 4 additions & 3 deletions facades/facades.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import (
"github.com/goravel/framework/contracts/route"
"github.com/goravel/framework/contracts/schedule"
"github.com/goravel/framework/contracts/session"
"github.com/goravel/framework/contracts/telemetry"
"github.com/goravel/framework/contracts/testing"
"github.com/goravel/framework/contracts/translation"
"github.com/goravel/framework/contracts/validation"
Expand Down Expand Up @@ -139,9 +140,9 @@ func Storage() filesystem.Storage {
return App().MakeStorage()
}

// func Telemetry() telemetry.Telemetry {
// return App().MakeTelemetry()
// }
func Telemetry() telemetry.Telemetry {
return App().MakeTelemetry()
}

func Testing() testing.Testing {
return App().MakeTesting()
Expand Down
2 changes: 1 addition & 1 deletion foundation/application_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -922,7 +922,7 @@ func (s *ApplicationTestSuite) TestStart() {
// Only trigger cancel for non-panic cases
// For panic cases, the error handling will call cancel automatically
go func() {
time.Sleep(100 * time.Millisecond) // Wait for goroutines to start
time.Sleep(2 * time.Second) // Wait for goroutines to start
s.cancel()
}()

Expand Down
34 changes: 17 additions & 17 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -28,29 +28,29 @@ require (
github.com/spf13/viper v1.21.0
github.com/stretchr/testify v1.11.1
github.com/urfave/cli/v3 v3.6.2
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0
go.opentelemetry.io/contrib/propagators/b3 v1.40.0
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.64.0
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0
go.opentelemetry.io/contrib/propagators/b3 v1.39.0
go.opentelemetry.io/otel v1.40.0
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.15.0
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.40.0
go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.16.0
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.40.0
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.40.0
go.opentelemetry.io/otel/exporters/zipkin v1.39.0
go.opentelemetry.io/otel/log v0.16.0
go.opentelemetry.io/otel/log/logtest v0.16.0
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.15.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.39.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.39.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.39.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.39.0
go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.15.0
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.39.0
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.39.0
go.opentelemetry.io/otel/log v0.15.0
go.opentelemetry.io/otel/log/logtest v0.15.0
go.opentelemetry.io/otel/metric v1.40.0
go.opentelemetry.io/otel/sdk v1.40.0
go.opentelemetry.io/otel/sdk/log v0.16.0
go.opentelemetry.io/otel/sdk/log v0.15.0
go.opentelemetry.io/otel/sdk/metric v1.40.0
go.opentelemetry.io/otel/trace v1.40.0
golang.org/x/crypto v0.48.0
golang.org/x/exp v0.0.0-20260212183809-81e46e3db34a
google.golang.org/grpc v1.79.1
golang.org/x/exp v0.0.0-20260112195511-716be5621a96
google.golang.org/grpc v1.78.0
google.golang.org/protobuf v1.36.11
gorm.io/gorm v1.31.1
gorm.io/plugin/dbresolver v1.6.2
Expand All @@ -61,6 +61,7 @@ require (
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/chigopher/pathlib v0.19.1 // indirect
github.com/clipperhouse/uax29/v2 v2.2.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/go-logr/logr v1.4.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/google/go-cmp v0.7.0 // indirect
Expand All @@ -72,7 +73,6 @@ require (
github.com/mattn/go-colorable v0.1.14 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/openzipkin/zipkin-go v0.4.3 // indirect
github.com/rs/zerolog v1.33.0 // indirect
github.com/samber/slog-common v0.20.0 // indirect
github.com/spf13/cobra v1.8.1 // indirect
Expand Down
Loading
Loading