func main() { flag.Parse() config, logger, err := config.ParseConfig(logLevel, configFile, logFilePath) if err != nil { panic(err) } profiler := profiler.NewProfiler(*cpuprofile, *memprofile, 1*time.Second, logger) profiler.Profile() defer profiler.Stop() uptimeMonitor := monitor.NewUptimeMonitor(time.Duration(config.MonitorIntervalSeconds) * time.Second) go uptimeMonitor.Start() defer uptimeMonitor.Stop() dropsonde.Initialize("localhost:"+strconv.Itoa(config.MetronPort), "LoggregatorTrafficController") adapter := DefaultStoreAdapterProvider(config.EtcdUrls, config.EtcdMaxConcurrentRequests) adapter.Connect() ipAddress, err := localip.LocalIP() if err != nil { panic(err) } dopplerProxy := makeDopplerProxy(adapter, config, logger) startOutgoingDopplerProxy(net.JoinHostPort(ipAddress, strconv.FormatUint(uint64(config.OutgoingDropsondePort), 10)), dopplerProxy) legacyProxy := makeLegacyProxy(adapter, config, logger) startOutgoingProxy(net.JoinHostPort(ipAddress, strconv.FormatUint(uint64(config.OutgoingPort), 10)), legacyProxy) rr := routerregistrar.NewRouterRegistrar(config.MbusClient, logger) uri := "loggregator." + config.SystemDomain err = rr.RegisterWithRouter(ipAddress, config.OutgoingPort, []string{uri}) if err != nil { logger.Fatalf("Startup: Did not get response from router when greeting. Using default keep-alive for now. Err: %v.", err) } uri = "doppler." + config.SystemDomain err = rr.RegisterWithRouter(ipAddress, config.OutgoingDropsondePort, []string{uri}) if err != nil { logger.Fatalf("Startup: Did not get response from router when greeting. Using default keep-alive for now. Err: %v.", err) } killChan := make(chan os.Signal) signal.Notify(killChan, os.Kill, os.Interrupt) for { select { case <-cfcomponent.RegisterGoRoutineDumpSignalChannel(): cfcomponent.DumpGoRoutine() case <-killChan: rr.UnregisterFromRouter(ipAddress, config.OutgoingPort, []string{uri}) break } } }
func main() { flag.Parse() if *version { fmt.Printf("version: %s\ngitSha: %s\nsourceUrl: https://github.com/cloudfoundry/loggregator/tree/%s\n\n", versionNumber, gitSha, gitSha) return } config := &Config{OutgoingPort: 8080} err := cfcomponent.ReadConfigInto(config, *configFile) config.Host = net.JoinHostPort(config.Host, strconv.FormatUint(uint64(config.IncomingPort), 10)) if err != nil { panic(err) } logger := cfcomponent.NewLogger(*logLevel, *logFilePath, "loggregator trafficcontroller", config.Config) logger.Info("Startup: Setting up the loggregator traffic controller") err = config.validate(logger) if err != nil { panic(err) } router := makeIncomingRouter(config, logger) startIncomingRouter(router, logger) proxy := makeOutgoingProxy(router.Component.IpAddress, config, logger) startOutgoingProxy(proxy) setupMonitoring(router, config, logger) rr := routerregistrar.NewRouterRegistrar(config.MbusClient, logger) uri := "loggregator." + config.SystemDomain err = rr.RegisterWithRouter(router.Component.IpAddress, config.OutgoingPort, []string{uri}) if err != nil { logger.Fatalf("Startup: Did not get response from router when greeting. Using default keep-alive for now. Err: %v.", err) } killChan := make(chan os.Signal) signal.Notify(killChan, os.Kill) for { select { case <-cfcomponent.RegisterGoRoutineDumpSignalChannel(): cfcomponent.DumpGoRoutine() case <-killChan: rr.UnregisterFromRouter(router.Component.IpAddress, config.OutgoingPort, []string{uri}) break } } }
func main() { flag.Parse() logger := cfcomponent.NewLogger(*logLevel, *logFilePath, "udprouter") if *version { fmt.Printf("\n\nversion: %s\ngitSha: %s\n\n", versionNumber, gitSha) return } config := &Config{Host: "0.0.0.0:3456", WebPort: 8080} err := cfcomponent.ReadConfigInto(config, *configFile) if err != nil { panic(err) } err = config.validate(logger) if err != nil { panic(err) } h := loggregatorrouter.NewHasher(config.Loggregators) r, err := loggregatorrouter.NewRouter(config.Host, h, config.Config, logger) if err != nil { panic(err) } redirector := loggregatorrouter.NewRedirector(net.JoinHostPort(r.Component.IpAddress, strconv.Itoa(int(config.WebPort))), h, logger) go func() { err := redirector.Start() if err != nil { panic(err) } }() rr := routerregistrar.NewRouterRegistrar(config.MbusClient, logger) uri := "loggregator." + config.SystemDomain err = rr.RegisterWithRouter(r.Component.IpAddress, config.WebPort, []string{uri}) if err != nil { logger.Fatalf("Did not get response from router when greeting. Using default keep-alive for now. Err: %v.", err) } cr := collectorregistrar.NewCollectorRegistrar(config.MbusClient, logger) err = cr.RegisterWithCollector(r.Component) if err != nil { panic(err) } go func() { err := r.StartMonitoringEndpoints() if err != nil { panic(err) } }() go r.Start(logger) killChan := make(chan os.Signal) signal.Notify(killChan, os.Kill) for { select { case <-cfcomponent.RegisterGoRoutineDumpSignalChannel(): cfcomponent.DumpGoRoutine() case <-killChan: rr.UnregisterFromRouter(r.Component.IpAddress, config.WebPort, []string{uri}) break } } }
func main() { flag.Parse() if *version { fmt.Printf("\n\nversion: %s\ngitSha: %s\n\n", versionNumber, gitSha) return } runtime.GOMAXPROCS(runtime.NumCPU()) logger := cfcomponent.NewLogger(*logLevel, *logFilePath, "loggregator") config := &Config{SourcePort: 3456, WebPort: 8080, UaaVerificationKeyFile: *uaaVerificationKeyFile} err := cfcomponent.ReadConfigInto(config, *configFile) if err != nil { panic(err) } err = config.validate(logger) if err != nil { panic(err) } listener := agentlistener.NewAgentListener(fmt.Sprintf("0.0.0.0:%d", config.SourcePort), logger) incomingData := listener.Start() authorizer := authorization.NewLogAccessAuthorizer(config.decoder, config.ApiHost) sinkServer := sinkserver.NewSinkServer( messagestore.NewMessageStore(config.MaxRetainedLogMessages), logger, authorizer, 30*time.Second, ) cfc, err := cfcomponent.NewComponent( config.WebPort, "LoggregatorServer", config.Index, &LoggregatorServerHealthMonitor{}, config.VarzPort, []string{config.VarzUser, config.VarzPass}, []instrumentation.Instrumentable{listener, sinkServer}, ) if err != nil { panic(err) } rr := routerregistrar.NewRouterRegistrar(config.MbusClient, logger) uri := servernamer.ServerName( net.JoinHostPort(cfc.IpAddress, strconv.Itoa(int(config.SourcePort))), "loggregator."+config.SystemDomain) err = rr.RegisterWithRouter(cfc.IpAddress, config.WebPort, []string{uri}) if err != nil { logger.Fatalf("Did not get response from router when greeting. Using default keep-alive for now. Err: %v.", err) } cr := collectorregistrar.NewCollectorRegistrar(config.MbusClient, logger) err = cr.RegisterWithCollector(cfc) if err != nil { logger.Warnf("Unable to register with collector. Err: %v.", err) } go func() { err := cfc.StartMonitoringEndpoints() if err != nil { panic(err) } }() go sinkServer.Start(incomingData, fmt.Sprintf("0.0.0.0:%d", config.WebPort)) killChan := make(chan os.Signal) signal.Notify(killChan, os.Kill) for { select { case <-cfcomponent.RegisterGoRoutineDumpSignalChannel(): cfcomponent.DumpGoRoutine() case <-killChan: rr.UnregisterFromRouter(cfc.IpAddress, cfc.WebPort, []string{uri}) break } } }
func main() { flag.Parse() if *version { fmt.Printf("version: %s\ngitSha: %s\nsourceUrl: https://github.com/cloudfoundry/loggregator/tree/%s\n\n", versionNumber, gitSha, gitSha) return } if *cpuprofile != "" { f, err := os.Create(*cpuprofile) if err != nil { panic(err) } pprof.StartCPUProfile(f) defer func() { pprof.StopCPUProfile() f.Close() }() } if *memprofile != "" { f, err := os.Create(*memprofile) if err != nil { panic(err) } go func() { defer f.Close() ticker := time.NewTicker(time.Second * 1) defer ticker.Stop() for { <-ticker.C pprof.WriteHeapProfile(f) } }() } config, logger, err := parseConfig(logLevel, configFile, logFilePath) if err != nil { panic(err) } router := makeIncomingRouter(config, logger) startIncomingRouter(router, logger) proxy := makeOutgoingProxy(config, logger) startOutgoingProxy(net.JoinHostPort(router.Component.IpAddress, strconv.FormatUint(uint64(config.OutgoingPort), 10)), proxy) setupMonitoring(router, config, logger) rr := routerregistrar.NewRouterRegistrar(config.MbusClient, logger) uri := "loggregator." + config.SystemDomain err = rr.RegisterWithRouter(router.Component.IpAddress, config.OutgoingPort, []string{uri}) if err != nil { logger.Fatalf("Startup: Did not get response from router when greeting. Using default keep-alive for now. Err: %v.", err) } killChan := make(chan os.Signal) signal.Notify(killChan, os.Kill, os.Interrupt) for { select { case <-cfcomponent.RegisterGoRoutineDumpSignalChannel(): cfcomponent.DumpGoRoutine() case <-killChan: rr.UnregisterFromRouter(router.Component.IpAddress, config.OutgoingPort, []string{uri}) router.Stop() break } } }