Skip to content

feat: add disable switch for runtime #398

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Apr 7, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
12 changes: 10 additions & 2 deletions pkg/rules/databasesql/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,22 @@ import (
"context"
"database/sql"
"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/api"
"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/inst-api/instrumenter"
"log"
"os"
"strings"
)

var databaseSqlInstrumenter = BuildDatabaseSqlOtelInstrumenter()

var dbSqlEnabler = instrumenter.NewDefaultInstrumentEnabler()
type dbSqlInnerEnabler struct {
enabled bool
}

func (d dbSqlInnerEnabler) Enable() bool {
return d.enabled
}

var dbSqlEnabler = dbSqlInnerEnabler{os.Getenv("OTEL_INSTRUMENTATION_DATABASESQL_ENABLED") != "false"}

func beforeOpenInstrumentation(call api.CallContext, driverName, dataSourceName string) {
if !dbSqlEnabler.Enable() {
Expand Down
12 changes: 10 additions & 2 deletions pkg/rules/echo/echo_server_setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,22 @@
package echo

import (
"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/inst-api/instrumenter"
"os"

"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/api"
echo "github.com/labstack/echo/v4"
"go.opentelemetry.io/otel/sdk/trace"
)

var echoEnabler = instrumenter.NewDefaultInstrumentEnabler()
type echoInnerEnabler struct {
enabled bool
}

func (e echoInnerEnabler) Enable() bool {
return e.enabled
}

var echoEnabler = echoInnerEnabler{os.Getenv("OTEL_INSTRUMENTATION_ECHO_ENABLED") != "false"}

func otelTraceMiddleware() echo.MiddlewareFunc {
return func(next echo.HandlerFunc) echo.HandlerFunc {
Expand Down
12 changes: 10 additions & 2 deletions pkg/rules/elasticsearch/es_client_setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,24 @@ package elasticsearch
import (
"context"
"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/api"
"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/inst-api/instrumenter"
"github.com/elastic/elastic-transport-go/v8/elastictransport"
elasticsearch "github.com/elastic/go-elasticsearch/v8"
"net/http"
"os"
"strings"
)

var esInstrumenter = BuildElasticSearchInstrumenter()

var esEnabler = instrumenter.NewDefaultInstrumentEnabler()
type esInnerEnabler struct {
enabled bool
}

func (g esInnerEnabler) Enable() bool {
return g.enabled
}

var esEnabler = esInnerEnabler{os.Getenv("OTEL_INSTRUMENTATION_ELASTICSEARCH_ENABLED") != "false"}

func beforeElasticSearchPerform(call api.CallContext, client *elasticsearch.BaseClient, request *http.Request) {
if !esEnabler.Enable() {
Expand Down
11 changes: 10 additions & 1 deletion pkg/rules/fasthttp/fasthttp_otel_instrumenter.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import (
"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/inst-api/utils"
"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/inst-api/version"
"go.opentelemetry.io/otel/sdk/instrumentation"
"os"
"strconv"

"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/inst-api-semconv/instrumenter/http"
Expand All @@ -29,7 +30,15 @@ import (

var emptyFastHttpResponse = fastHttpResponse{}

var fastHttpEnabler = instrumenter.NewDefaultInstrumentEnabler()
type fastHttpInnerEnabler struct {
enabled bool
}

func (g fastHttpInnerEnabler) Enable() bool {
return g.enabled
}

var fastHttpEnabler = fastHttpInnerEnabler{os.Getenv("OTEL_INSTRUMENTATION_FASTHTTP_ENABLED") != "false"}

type fastHttpClientAttrsGetter struct {
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/rules/fiberv2/fiber_server_setup_v2.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import (
var fiberv2ServerInstrumenter = BuildFiberV2ServerOtelInstrumenter()

func fiberHttpOnEnterv2(call api.CallContext, app *fiber.App, ctx *fasthttp.RequestCtx) {
if !fiberv2Enabler.Enable() {
if !fiberV2Enabler.Enable() {
return
}
u, err := url.Parse(ctx.URI().String())
Expand Down
11 changes: 10 additions & 1 deletion pkg/rules/fiberv2/fiberv2_otel_instrumenter.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
package fiberv2

import (
"os"
"strconv"

"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/inst-api/utils"
Expand All @@ -30,7 +31,15 @@ import (

var emptyFiberv2Response = fiberv2Response{}

var fiberv2Enabler = instrumenter.NewDefaultInstrumentEnabler()
type fiberV2InnerEnabler struct {
enabled bool
}

func (g fiberV2InnerEnabler) Enable() bool {
return g.enabled
}

var fiberV2Enabler = fiberV2InnerEnabler{os.Getenv("OTEL_INSTRUMENTATION_FIBERV2_ENABLED") != "false"}

type fiberv2ServerAttrsGetter struct {
}
Expand Down
12 changes: 10 additions & 2 deletions pkg/rules/gin/gin_enabler.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,15 @@
package gin

import (
"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/inst-api/instrumenter"
"os"
)

var ginEnabler = instrumenter.NewDefaultInstrumentEnabler()
type ginInnerEnabler struct {
enabled bool
}

func (g ginInnerEnabler) Enable() bool {
return g.enabled
}

var ginEnabler = ginInnerEnabler{os.Getenv("OTEL_INSTRUMENTATION_GIN_ENABLED") != "false"}
12 changes: 10 additions & 2 deletions pkg/rules/golog/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,23 @@
package golog

import (
"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/inst-api/instrumenter"
"log"
"os"
"strings"

"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/api"
"go.opentelemetry.io/otel/sdk/trace"
)

var glogEnabler = instrumenter.NewDefaultInstrumentEnabler()
type glogInnerEnabler struct {
enabled bool
}

func (g glogInnerEnabler) Enable() bool {
return g.enabled
}

var glogEnabler = glogInnerEnabler{os.Getenv("OTEL_INSTRUMENTATION_GLOG_ENABLED") != "false"}

func goLogWriteOnEnter(call api.CallContext, ce *log.Logger, pc uintptr, calldepth int, appendOutput func([]byte) []byte) {
if !glogEnabler.Enable() {
Expand Down
12 changes: 10 additions & 2 deletions pkg/rules/gomicro/gomicro_enabler.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,15 @@
package gomicro

import (
"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/inst-api/instrumenter"
"os"
)

var goMicroEnabler = instrumenter.NewDefaultInstrumentEnabler()
type goMicroInnerEnabler struct {
enabled bool
}

func (g goMicroInnerEnabler) Enable() bool {
return g.enabled
}

var goMicroEnabler = goMicroInnerEnabler{os.Getenv("OTEL_INSTRUMENTATION_GOMICRO_ENABLED") != "false"}
12 changes: 10 additions & 2 deletions pkg/rules/goredis/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,25 @@ package goredis
import (
"context"
"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/api"
"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/inst-api/instrumenter"
"go.opentelemetry.io/otel/trace"
"net"
"os"
"strings"

redis "github.com/redis/go-redis/v9"
)

var goRedisInstrumenter = BuildGoRedisOtelInstrumenter()

var rv9Enabler = instrumenter.NewDefaultInstrumentEnabler()
type redisV9InnerEnabler struct {
enabled bool
}

func (r redisV9InnerEnabler) Enable() bool {
return r.enabled
}

var rv9Enabler = redisV9InnerEnabler{os.Getenv("OTEL_INSTRUMENTATION_REDISV9_ENABLED") != "false"}

var redisV9StartOptions = []trace.SpanStartOption{}

Expand Down
12 changes: 10 additions & 2 deletions pkg/rules/goredisv8/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,25 @@ package goredisv8
import (
"context"
"errors"
"os"
"strings"

"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/api"
"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/inst-api/instrumenter"
redis "github.com/go-redis/redis/v8"
"go.opentelemetry.io/otel/trace"
)

var redisv8Instrumenter = BuildRedisv8Instrumenter()

var rv8Enabler = instrumenter.NewDefaultInstrumentEnabler()
type redisV8InnerEnabler struct {
enabled bool
}

func (g redisV8InnerEnabler) Enable() bool {
return g.enabled
}

var rv8Enabler = redisV8InnerEnabler{os.Getenv("OTEL_INSTRUMENTATION_REDISV8_ENABLED") != "false"}

var redisV8StartOptions = []trace.SpanStartOption{}

Expand Down
12 changes: 10 additions & 2 deletions pkg/rules/gorestful/gorestful_server_setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,21 @@ package gorestful

import (
"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/api"
"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/inst-api/instrumenter"
restful "github.com/emicklei/go-restful/v3"
"go.opentelemetry.io/otel/sdk/trace"
"net/http"
"os"
)

var goRestfulEnabler = instrumenter.NewDefaultInstrumentEnabler()
type goRestfulInnerEnabler struct {
enabled bool
}

func (g goRestfulInnerEnabler) Enable() bool {
return g.enabled
}

var goRestfulEnabler = goRestfulInnerEnabler{os.Getenv("OTEL_INSTRUMENTATION_GORESTFUL_ENABLED") != "false"}

func restContainerAddOnEnter(call api.CallContext, c *restful.Container, service *restful.WebService) {
c.Filter(filterRest)
Expand Down
14 changes: 14 additions & 0 deletions pkg/rules/gorm/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ package gorm

import (
"context"
"os"

"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/api"
driver "github.com/go-sql-driver/mysql"
Expand All @@ -26,9 +27,22 @@ import (
var contextKey = "otel-context"
var requestKey = "otel-request"

type gormInnerEnabler struct {
enabled bool
}

func (g gormInnerEnabler) Enable() bool {
return g.enabled
}

var gormEnabler = gormInnerEnabler{os.Getenv("OTEL_INSTRUMENTATION_GORM_ENABLED") != "false"}

var gormInstrumenter = BuildGormInstrumenter()

func afterGormOpen(call api.CallContext, db *gorm.DB, err error) {
if !gormEnabler.Enable() {
return
}
if err != nil || db == nil {
return
}
Expand Down
12 changes: 10 additions & 2 deletions pkg/rules/goslog/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,22 @@ package golog

import (
"context"
"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/inst-api/instrumenter"
"log/slog"
"os"

"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/api"
"go.opentelemetry.io/otel/sdk/trace"
)

var goSlogEnabler = instrumenter.NewDefaultInstrumentEnabler()
type goSlogInnerEnabler struct {
enabled bool
}

func (g goSlogInnerEnabler) Enable() bool {
return g.enabled
}

var goSlogEnabler = goSlogInnerEnabler{os.Getenv("OTEL_INSTRUMENTATION_GOSLOG_ENABLED") != "false"}

func goSlogWriteOnEnter(call api.CallContext, ce *slog.Logger, ctx context.Context, level slog.Level, msg string, args ...any) {
if !goSlogEnabler.Enable() {
Expand Down
11 changes: 10 additions & 1 deletion pkg/rules/grpc/grpc_otel_instrumenter.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (
"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/inst-api/utils"
"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/inst-api/version"
"go.opentelemetry.io/otel/sdk/instrumentation"
"os"
"strings"

"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/inst-api-semconv/instrumenter/rpc"
Expand All @@ -27,7 +28,15 @@ import (
"go.opentelemetry.io/otel/trace"
)

var grpcEnabler = instrumenter.NewDefaultInstrumentEnabler()
type grpcInnerEnabler struct {
enabled bool
}

func (g grpcInnerEnabler) Enable() bool {
return g.enabled
}

var grpcEnabler = grpcInnerEnabler{os.Getenv("OTEL_INSTRUMENTATION_GRPC_ENABLED") != "false"}

type grpcAttrsGetter struct {
}
Expand Down
12 changes: 10 additions & 2 deletions pkg/rules/hertz/client/hertz_client_setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,22 @@ package client

import (
"context"
"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/inst-api/instrumenter"
"os"

"github.com/alibaba/opentelemetry-go-auto-instrumentation/pkg/api"
"github.com/cloudwego/hertz/pkg/app/client"
"github.com/cloudwego/hertz/pkg/protocol"
)

var hertzClientEnabler = instrumenter.NewDefaultInstrumentEnabler()
type hertzClientInnerEnabler struct {
enabled bool
}

func (h hertzClientInnerEnabler) Enable() bool {
return h.enabled
}

var hertzClientEnabler = hertzClientInnerEnabler{os.Getenv("OTEL_INSTRUMENTATION_HERTZ_ENABLED") != "false"}

var hertzClientInstrumenter = BuildHertzClientInstrumenter()

Expand Down
Loading
Loading