11
"github.com/opentracing/opentracing-go"
12
"github.com/patrickmn/go-cache"
13
"github.com/prometheus/client_golang/prometheus/promhttp"
14
jaegercfg "github.com/uber/jaeger-client-go/config"
15
"gopkg.in/alexcesaro/statsd.v2"
17
"github.com/Lookyan/netramesh/internal/config"
18
"github.com/Lookyan/netramesh/pkg/estabcache"
19
"github.com/Lookyan/netramesh/pkg/log"
20
"github.com/Lookyan/netramesh/pkg/protocol"
21
"github.com/Lookyan/netramesh/pkg/transport"
25
logger, err := log.Init("NETRA", os.Getenv(log.EnvNetraLoggerLevel), os.Stderr)
27
log.Fatal(err.Error())
29
serviceName := flag.String("service-name", "", "service name for jaeger")
31
if *serviceName == "" {
32
logger.Fatal("service-name flag should be set")
34
config.SetServiceName(*serviceName)
36
err = config.GlobalConfigFromENV(logger)
38
logger.Fatal(err.Error())
42
statsdMetricsClient, err := statsd.New(statsd.Mute(!config.GetNetraConfig().StatsdEnabled),
43
statsd.Address(config.GetNetraConfig().StatsdAddress),
44
statsd.Prefix(config.GetNetraConfig().StatsdPrefix))
46
logger.Errorf("Can not init statsd metrics: %s", err.Error())
50
mux := http.NewServeMux()
51
mux.HandleFunc("/debug/pprof/", pprof.Index)
52
mux.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline)
53
mux.HandleFunc("/debug/pprof/profile", pprof.Profile)
54
mux.HandleFunc("/debug/pprof/symbol", pprof.Symbol)
55
mux.HandleFunc("/debug/pprof/trace", pprof.Trace)
58
fmt.Sprintf("0.0.0.0:%d", config.GetNetraConfig().PprofPort), mux))
63
fmt.Sprintf("0.0.0.0:%d", config.GetNetraConfig().PrometheusPort), promhttp.Handler()))
66
os.Setenv("JAEGER_SERVICE_NAME", *serviceName)
67
cfg, err := jaegercfg.FromEnv()
70
logger.Fatalf("Could not parse Jaeger env vars: %s", err.Error())
72
tracer, closer, err := cfg.NewTracer()
74
logger.Fatalf("Could not initialize jaeger tracer: %s", err.Error())
77
opentracing.SetGlobalTracer(tracer)
79
addr := fmt.Sprintf("0.0.0.0:%d", config.GetNetraConfig().Port)
80
lAddr, err := net.ResolveTCPAddr("tcp", addr)
82
logger.Fatal(err.Error())
85
ln, err := net.ListenTCP("tcp", lAddr)
87
logger.Fatal(err.Error())
90
establishedCache := estabcache.NewEstablishedCache()
92
tracingContextMapping := cache.New(
93
config.GetNetraConfig().TracingContextExpiration,
94
config.GetNetraConfig().TracingContextCleanupInterval,
97
routingInfoContextMapping := cache.New(
98
config.GetNetraConfig().RoutingContextExpiration,
99
config.GetNetraConfig().RoutingContextCleanupInterval,
102
protocol.InitHandlerRequest(logger, statsdMetricsClient, tracingContextMapping, routingInfoContextMapping)
105
conn, err := ln.AcceptTCP()
107
logger.Warning(err.Error())
110
go transport.HandleConnection(
114
tracingContextMapping,
115
routingInfoContextMapping,