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() 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") dopplerAdapter := DefaultStoreAdapterProvider(config.EtcdUrls, config.EtcdMaxConcurrentRequests) dopplerAdapter.Connect() legacyAdapter := DefaultStoreAdapterProvider(config.EtcdUrls, config.EtcdMaxConcurrentRequests) legacyAdapter.Connect() ipAddress, err := localip.LocalIP() if err != nil { panic(err) } dopplerProxy := makeDopplerProxy(dopplerAdapter, config, logger) startOutgoingDopplerProxy(net.JoinHostPort(ipAddress, strconv.FormatUint(uint64(config.OutgoingDropsondePort), 10)), dopplerProxy) legacyProxy := makeLegacyProxy(legacyAdapter, config, logger) startOutgoingProxy(net.JoinHostPort(ipAddress, strconv.FormatUint(uint64(config.OutgoingPort), 10)), legacyProxy) killChan := make(chan os.Signal) signal.Notify(killChan, os.Kill, os.Interrupt) for { select { case <-cfcomponent.RegisterGoRoutineDumpSignalChannel(): cfcomponent.DumpGoRoutine() case <-killChan: break } } }
func main() { flag.Parse() // ** Config Setup config := &Config{} err := cfcomponent.ReadConfigInto(config, *configFile) if err != nil { panic(err) } dropsonde.Initialize(config.MetronAddress, "dea_logging_agent") 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) } }() } logger := cfcomponent.NewLogger(*logLevel, *logFilePath, "deaagent", config.Config) logger.Info("Startup: Setting up the loggregator dea logging agent") if len(config.NatsHosts) == 0 { logger.Warn("Startup: Did not receive a NATS host - not going to register component") cfcomponent.DefaultYagnatsClientProvider = func(logger *gosteno.Logger, c *cfcomponent.Config) (yagnats.NATSConn, error) { return fakeyagnats.Connect(), nil } } err = config.validate(logger) if err != nil { panic(err) } // ** END Config Setup agent := deaagent.NewAgent(*instancesJsonFilePath, logger) go agent.Start() killChan := make(chan os.Signal) signal.Notify(killChan, os.Interrupt) for { select { case <-cfcomponent.RegisterGoRoutineDumpSignalChannel(): cfcomponent.DumpGoRoutine() case <-killChan: logger.Info("Shutting down") return } } }
func main() { seed := time.Now().UnixNano() rand.Seed(seed) flag.Parse() runtime.GOMAXPROCS(runtime.NumCPU()) localIp, err := localip.LocalIP() if err != nil { panic(errors.New("Unable to resolve own IP address: " + err.Error())) } 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) } }() } conf, logger := ParseConfig(logLevel, configFile, logFilePath) dropsonde.Initialize(conf.MetronAddress, "DopplerServer") if len(conf.NatsHosts) == 0 { logger.Warn("Startup: Did not receive a NATS host - not going to regsiter component") cfcomponent.DefaultYagnatsClientProvider = func(logger *gosteno.Logger, c *cfcomponent.Config) (yagnats.NATSConn, error) { return fakeyagnats.Connect(), nil } } err = conf.Validate(logger) if err != nil { panic(err) } storeAdapter := NewStoreAdapter(conf.EtcdUrls, conf.EtcdMaxConcurrentRequests) doppler := New(localIp, conf, logger, storeAdapter, conf.MessageDrainBufferSize, "doppler") if err != nil { panic(err) } go doppler.Start() logger.Info("Startup: doppler server started.") killChan := make(chan os.Signal) signal.Notify(killChan, os.Kill, os.Interrupt) storeAdapter = NewStoreAdapter(conf.EtcdUrls, conf.EtcdMaxConcurrentRequests) StartHeartbeats(localIp, config.HeartbeatInterval, conf, storeAdapter, logger) for { select { case <-cfcomponent.RegisterGoRoutineDumpSignalChannel(): cfcomponent.DumpGoRoutine() case <-killChan: logger.Info("Shutting down") doppler.Stop() return } } }
func main() { seed := time.Now().UnixNano() rand.Seed(seed) flag.Parse() if *version { fmt.Printf("version: %s\ngitSha: %s\nsourceUrl: https://github.com/cloudfoundry/loggregator/tree/%s\n\n", versionNumber, gitSha, gitSha) return } runtime.GOMAXPROCS(runtime.NumCPU()) 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 := parseConfig(logLevel, configFile, logFilePath) if len(config.NatsHosts) == 0 { logger.Warn("Startup: Did not receive a NATS host - not going to regsiter component") cfcomponent.DefaultYagnatsClientProvider = func(logger *gosteno.Logger, c *cfcomponent.Config) (yagnats.NATSClient, error) { return fakeyagnats.New(), nil } } err := config.Validate(logger) if err != nil { panic(err) } l := New("0.0.0.0", config, logger) cfc, err := cfcomponent.NewComponent( logger, "LoggregatorServer", config.Index, &LoggregatorServerHealthMonitor{}, config.VarzPort, []string{config.VarzUser, config.VarzPass}, l.Emitters(), ) if err != nil { panic(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) } }() l.Start() logger.Info("Startup: loggregator server started.") killChan := make(chan os.Signal) signal.Notify(killChan, os.Kill, os.Interrupt) for { select { case <-cfcomponent.RegisterGoRoutineDumpSignalChannel(): cfcomponent.DumpGoRoutine() case <-killChan: logger.Info("Shutting down") l.Stop() return } } }
func main() { seed := time.Now().UnixNano() rand.Seed(seed) flag.Parse() if *version { fmt.Printf("version: %s\ngitSha: %s\nsourceUrl: https://github.com/cloudfoundry/loggregator/tree/%s\n\n", versionNumber, gitSha, gitSha) return } runtime.GOMAXPROCS(runtime.NumCPU()) config, logger := parseConfig(logLevel, configFile, logFilePath) err := config.validate(logger) if err != nil { panic(err) } agentListener := agentlistener.NewAgentListener(fmt.Sprintf("0.0.0.0:%d", config.IncomingPort), logger) incomingLogChan := agentListener.Start() sinkManager := sinkserver.NewSinkManager(config.MaxRetainedLogMessages, config.SkipCertVerify, config.BlackListIps, logger) go sinkManager.Start() unmarshaller := func(data []byte) (*logmessage.Message, error) { return logmessage.ParseEnvelope(data, config.SharedSecret) } messageChannelLength := 2048 messageRouter := sinkserver.NewMessageRouter(incomingLogChan, unmarshaller, sinkManager, messageChannelLength, logger) apiEndpoint := fmt.Sprintf("0.0.0.0:%d", config.OutgoingPort) keepAliveInterval := 30 * time.Second websocketServer := sinkserver.NewWebsocketServer(apiEndpoint, sinkManager, keepAliveInterval, config.WSMessageBufferSize, logger) cfc, err := cfcomponent.NewComponent( logger, "LoggregatorServer", config.Index, &LoggregatorServerHealthMonitor{}, config.VarzPort, []string{config.VarzUser, config.VarzPass}, []instrumentation.Instrumentable{agentListener, sinkManager, messageRouter}, ) if err != nil { panic(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 messageRouter.Start() go websocketServer.Start() killChan := make(chan os.Signal) signal.Notify(killChan, os.Kill) for { select { case <-cfcomponent.RegisterGoRoutineDumpSignalChannel(): cfcomponent.DumpGoRoutine() case <-killChan: break } } }
func main() { flag.Parse() config, logger := parseConfig(*debug, *configFile, *logFilePath) dropsonde.Initialize(config.MetronAddress, "syslog_drain_binder") workPool, err := workpool.NewWorkPool(config.EtcdMaxConcurrentRequests) if err != nil { panic(err) } adapter := etcdstoreadapter.NewETCDStoreAdapter(config.EtcdUrls, workPool) updateInterval := time.Duration(config.UpdateIntervalSeconds) * time.Second politician := elector.NewElector(config.InstanceName, adapter, updateInterval, logger) drainTTL := time.Duration(config.DrainUrlTtlSeconds) * time.Second store := etcd_syslog_drain_store.NewEtcdSyslogDrainStore(adapter, drainTTL, logger) ticker := time.NewTicker(updateInterval) for { select { case <-cfcomponent.RegisterGoRoutineDumpSignalChannel(): cfcomponent.DumpGoRoutine() case <-ticker.C: if politician.IsLeader() { err = politician.StayAsLeader() if err != nil { logger.Errorf("Error when staying leader: %s", err.Error()) politician.Vacate() continue } } else { err = politician.RunForElection() if err != nil { logger.Errorf("Error when running for leader: %s", err.Error()) politician.Vacate() continue } } logger.Debugf("Polling %s for updates", config.CloudControllerAddress) drainUrls, err := Poll(config.CloudControllerAddress, config.BulkApiUsername, config.BulkApiPassword, config.PollingBatchSize, config.SkipCertVerify) if err != nil { logger.Errorf("Error when polling cloud controller: %s", err.Error()) politician.Vacate() continue } metrics.IncrementCounter("pollCount") var totalDrains int for _, drainList := range drainUrls { totalDrains += len(drainList) } metrics.SendValue("totalDrains", float64(totalDrains), "drains") logger.Debugf("Updating drain URLs for %d application(s)", len(drainUrls)) err = store.UpdateDrains(drainUrls) if err != nil { logger.Errorf("Error when updating ETCD: %s", err.Error()) politician.Vacate() continue } } } }
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 Setup config := &Config{} err := cfcomponent.ReadConfigInto(config, *configFile) if err != nil { panic(err) } logger := cfcomponent.NewLogger(*logLevel, *logFilePath, "deaagent", config.Config) logger.Info("Startup: Setting up the loggregator dea logging agent") err = config.validate(logger) if err != nil { panic(err) } // ** END Config Setup loggregatorEmitter, err := emitter.NewEmitter(config.LoggregatorAddress, "APP", "NA", config.SharedSecret, logger) if err != nil { panic(err) } agent := deaagent.NewAgent(*instancesJsonFilePath, logger) cfc, err := cfcomponent.NewComponent( logger, "LoggregatorDeaAgent", config.Index, &DeaAgentHealthMonitor{}, config.VarzPort, []string{config.VarzUser, config.VarzPass}, []instrumentation.Instrumentable{loggregatorEmitter.LoggregatorClient}, ) if err != nil { panic(err) } cr := collectorregistrar.NewCollectorRegistrar(config.MbusClient, logger) err = cr.RegisterWithCollector(cfc) if err != nil { panic(err) } go func() { err := cfc.StartMonitoringEndpoints() if err != nil { panic(err) } }() go agent.Start(loggregatorEmitter) for { select { case <-cfcomponent.RegisterGoRoutineDumpSignalChannel(): cfcomponent.DumpGoRoutine() } } }
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 Setup config := &Config{} err := cfcomponent.ReadConfigInto(config, *configFile) if err != nil { panic(err) } 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) } }() } logger := cfcomponent.NewLogger(*logLevel, *logFilePath, "deaagent", config.Config) logger.Info("Startup: Setting up the loggregator dea logging agent") err = config.validate(logger) if err != nil { panic(err) } // ** END Config Setup loggregatorEmitter, err := emitter.NewEmitter(config.LoggregatorAddress, "APP", "NA", config.SharedSecret, logger) if err != nil { panic(err) } agent := deaagent.NewAgent(*instancesJsonFilePath, logger) cfc, err := cfcomponent.NewComponent( logger, "LoggregatorDeaAgent", config.Index, &DeaAgentHealthMonitor{}, config.VarzPort, []string{config.VarzUser, config.VarzPass}, []instrumentation.Instrumentable{loggregatorEmitter.LoggregatorClient}, ) if err != nil { panic(err) } cr := collectorregistrar.NewCollectorRegistrar(config.MbusClient, logger) err = cr.RegisterWithCollector(cfc) if err != nil { panic(err) } go func() { err := cfc.StartMonitoringEndpoints() if err != nil { panic(err) } }() go agent.Start(loggregatorEmitter) killChan := make(chan os.Signal) signal.Notify(killChan, os.Kill, os.Interrupt) for { select { case <-cfcomponent.RegisterGoRoutineDumpSignalChannel(): cfcomponent.DumpGoRoutine() case <-killChan: logger.Info("Shutting down") return } } }
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() { seed := time.Now().UnixNano() rand.Seed(seed) flag.Parse() if *version { fmt.Printf("version: %s\ngitSha: %s\nsourceUrl: https://github.com/cloudfoundry/loggregator/tree/%s\n\n", versionNumber, gitSha, gitSha) return } runtime.GOMAXPROCS(runtime.NumCPU()) config := &Config{IncomingPort: 3456, OutgoingPort: 8080} err := cfcomponent.ReadConfigInto(config, *configFile) if err != nil { panic(err) } logger := cfcomponent.NewLogger(*logLevel, *logFilePath, "loggregator", config.Config) logger.Info("Startup: Setting up the loggregator server") err = config.validate(logger) if err != nil { panic(err) } listener := agentlistener.NewAgentListener(fmt.Sprintf("0.0.0.0:%d", config.IncomingPort), logger) incomingData := listener.Start() messageRouter := sinkserver.NewMessageRouter(config.MaxRetainedLogMessages, logger) unmarshaller := func(data []byte) (*logmessage.Message, error) { return logmessage.ParseEnvelope(data, config.SharedSecret) } httpServer := sinkserver.NewHttpServer(messageRouter, 30*time.Second, unmarshaller, logger) cfc, err := cfcomponent.NewComponent( logger, "LoggregatorServer", config.Index, &LoggregatorServerHealthMonitor{}, config.VarzPort, []string{config.VarzUser, config.VarzPass}, []instrumentation.Instrumentable{listener, messageRouter}, ) if err != nil { panic(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 messageRouter.Start() go httpServer.Start(incomingData, fmt.Sprintf("0.0.0.0:%d", config.OutgoingPort)) killChan := make(chan os.Signal) signal.Notify(killChan, os.Kill) for { select { case <-cfcomponent.RegisterGoRoutineDumpSignalChannel(): cfcomponent.DumpGoRoutine() case <-killChan: 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() { seed := time.Now().UnixNano() rand.Seed(seed) flag.Parse() if *version { fmt.Printf("version: %s\ngitSha: %s\nsourceUrl: https://github.com/cloudfoundry/loggregator/tree/%s\n\n", versionNumber, gitSha, gitSha) return } runtime.GOMAXPROCS(runtime.NumCPU()) config, logger := parseConfig(logLevel, configFile, logFilePath) err := config.Validate(logger) if err != nil { panic(err) } l := New("0.0.0.0", config, logger) cfc, err := cfcomponent.NewComponent( logger, "LoggregatorServer", config.Index, &LoggregatorServerHealthMonitor{}, config.VarzPort, []string{config.VarzUser, config.VarzPass}, l.Emitters(), ) if err != nil { panic(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) } }() l.Start() killChan := make(chan os.Signal) signal.Notify(killChan, os.Kill) for { select { case <-cfcomponent.RegisterGoRoutineDumpSignalChannel(): cfcomponent.DumpGoRoutine() case <-killChan: l.Stop() break } } }
func main() { flag.Parse() if *version { fmt.Printf("\n\nversion: %s\ngitSha: %s\n\n", versionNumber, gitSha) return } logger := cfcomponent.NewLogger(*logLevel, *logFilePath, "deaagent") // ** Config Setup config := &Config{} err := cfcomponent.ReadConfigInto(config, *configFile) if err != nil { panic(err) } err = config.validate(logger) if err != nil { panic(err) } // ** END Config Setup loggregatorClient := loggregatorclient.NewLoggregatorClient(config.LoggregatorAddress, logger, 4096) agent := deaagent.NewAgent(*instancesJsonFilePath, logger) cfc, err := cfcomponent.NewComponent( 0, "LoggregatorDeaAgent", config.Index, &DeaAgentHealthMonitor{}, config.VarzPort, []string{config.VarzUser, config.VarzPass}, []instrumentation.Instrumentable{loggregatorClient}, ) if err != nil { panic(err) } cr := collectorregistrar.NewCollectorRegistrar(config.MbusClient, logger) err = cr.RegisterWithCollector(cfc) if err != nil { panic(err) } go func() { err := cfc.StartMonitoringEndpoints() if err != nil { panic(err) } }() go agent.Start(loggregatorClient) for { select { case <-cfcomponent.RegisterGoRoutineDumpSignalChannel(): cfcomponent.DumpGoRoutine() } } }
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 } } }