separate tracing environment variables

This commit is contained in:
Cory Schwartz 2021-05-25 01:23:33 -07:00
parent d3ad897fe9
commit 273368ed6a

View File

@ -2,6 +2,7 @@ package tracing
import ( import (
"os" "os"
"strings"
"contrib.go.opencensus.io/exporter/jaeger" "contrib.go.opencensus.io/exporter/jaeger"
logging "github.com/ipfs/go-log/v2" logging "github.com/ipfs/go-log/v2"
@ -10,17 +11,61 @@ import (
var log = logging.Logger("tracing") var log = logging.Logger("tracing")
func SetupJaegerTracing(serviceName string) *jaeger.Exporter { const (
// environment variable names
envCollectorEndpoint = "LOTUS_JAEGER_COLLECTOR_ENDPOINT"
envAgentEndpoint = "LOTUS_JAEGER_AGENT_ENDPOINT"
envAgentHost = "LOTUS_JAEGER_AGENT_HOST"
envAgentPort = "LOTUS_JAEGER_AGENT_PORT"
envUsername = "LOTUS_JAEGER_USERNAME"
envPassword = "LOTUS_JAEGER_PASSWORD"
)
if _, ok := os.LookupEnv("LOTUS_JAEGER"); !ok { // When sending directly to the collector, agent options are ignored.
// The collector endpoint is an HTTP or HTTPs URL.
// The agent endpoint is a thrift/udp protocol given like "hostname:port"
// or separate host and port environment variables.
func jaegerOptsFromEnv(opts *jaeger.Options) bool {
var e string
var ok bool
if e, ok = os.LookupEnv(envUsername); ok {
if p, ok := os.LookupEnv(envPassword); ok {
opts.Username = e
opts.Password = p
} else {
log.Warn("jaeger username supplied with no password. authentication will not be used.")
}
}
if e, ok = os.LookupEnv(envCollectorEndpoint); ok {
opts.CollectorEndpoint = e
log.Infof("jaeger tracess will send to collector %s", e)
return true
}
if e, ok = os.LookupEnv(envAgentEndpoint); ok {
log.Infof("jaeger traces will be sent to agent %s", e)
opts.AgentEndpoint = e
return true
}
if e, ok = os.LookupEnv(envAgentHost); ok {
if p, ok := os.LookupEnv(envAgentPort); ok {
opts.AgentEndpoint = strings.Join([]string{e, p}, ":")
} else {
opts.AgentEndpoint = strings.Join([]string{e, "6831"}, ":")
}
log.Infof("jaeger traces will be sent to agent %s", opts.AgentEndpoint)
return true
}
log.Infof("jaeger tracing is not configured.")
return false
}
func SetupJaegerTracing(serviceName string) *jaeger.Exporter {
opts := jaeger.Options{}
if !jaegerOptsFromEnv(&opts) {
return nil return nil
} }
agentEndpointURI := os.Getenv("LOTUS_JAEGER") opts.ServiceName = serviceName
je, err := jaeger.NewExporter(opts)
je, err := jaeger.NewExporter(jaeger.Options{
AgentEndpoint: agentEndpointURI,
ServiceName: serviceName,
})
if err != nil { if err != nil {
log.Errorw("Failed to create the Jaeger exporter", "error", err) log.Errorw("Failed to create the Jaeger exporter", "error", err)
return nil return nil