func main() { kingpin.Version(version) kingpin.Parse() logging.LogStd(fmt.Sprintf("Starting firehose-to-syslog %s ", version), true) logging.SetupLogging(*syslogServer, *debug) c := cfclient.Config{ ApiAddress: *apiEndpoint, Username: *user, Password: *password, SkipSslValidation: *skipSSLValidation, } cfClient := cfclient.NewClient(&c) if len(*dopplerEndpoint) > 0 { cfClient.Endpoint.DopplerEndpoint = *dopplerEndpoint } logging.LogStd(fmt.Sprintf("Using %s as doppler endpoint", cfClient.Endpoint.DopplerEndpoint), true) logging.LogStd("Setting up event routing!", true) err := events.SetupEventRouting(*wantedEvents) if err != nil { log.Fatal("Error setting up event routing: ", err) os.Exit(1) } //Use bolt for in-memory - file caching db, err := bolt.Open(*boltDatabasePath, 0600, &bolt.Options{Timeout: 1 * time.Second}) if err != nil { log.Fatal("Error opening bolt db: ", err) os.Exit(1) } defer db.Close() if *modeProf != "" { switch *modeProf { case "cpu": defer profile.Start(profile.CPUProfile, profile.ProfilePath(*pathProf)).Stop() case "mem": defer profile.Start(profile.MemProfile, profile.ProfilePath(*pathProf)).Stop() case "block": defer profile.Start(profile.BlockProfile, profile.ProfilePath(*pathProf)).Stop() default: // do nothing } } caching.SetCfClient(cfClient) caching.SetAppDb(db) caching.CreateBucket() //Let's Update the database the first time logging.LogStd("Start filling app/space/org cache.", true) apps := caching.GetAllApp() logging.LogStd(fmt.Sprintf("Done filling cache! Found [%d] Apps", len(apps)), true) // Ticker Pooling the CC every X sec ccPooling := time.NewTicker(*tickerTime) go func() { for range ccPooling.C { apps = caching.GetAllApp() } }() // Parse extra fields from cmd call extraFields, err := extrafields.ParseExtraFields(*extraFields) if err != nil { log.Fatal("Error parsing extra fields: ", err) os.Exit(1) } if *logEventTotals == true { events.LogEventTotals(*logEventTotalsTime, *dopplerEndpoint) } if logging.Connect() || *debug { logging.LogStd("Connected to Syslog Server! Connecting to Firehose...", true) firehose := firehose.CreateFirehoseChan(cfClient.Endpoint.DopplerEndpoint, cfClient.GetToken(), *subscriptionId, *skipSSLValidation) if firehose != nil { logging.LogStd("Firehose Subscription Succesfull! Routing events...", true) events.RouteEvents(firehose, extraFields) } else { logging.LogError("Failed connecting to Firehose...Please check settings and try again!", "") } } else { logging.LogError("Failed connecting to the Syslog Server...Please check settings and try again!", "") } }
func main() { kingpin.Version(version) kingpin.Parse() logging.LogStd(fmt.Sprintf("Starting firehose-to-syslog %s ", version), true) logging.SetupLogging(*syslogServer, *debug) c := cfclient.Config{ ApiAddress: *apiEndpoint, Username: *user, Password: *password, SkipSslValidation: *skipSSLValidation, } cfClient := cfclient.NewClient(&c) if len(*dopplerEndpoint) > 0 { cfClient.Endpoint.DopplerAddress = *dopplerEndpoint } logging.LogStd(fmt.Sprintf("Using %s as doppler endpoint", cfClient.Endpoint.DopplerAddress), true) //Use bolt for in-memory - file caching db, err := bolt.Open(*boltDatabasePath, 0600, &bolt.Options{Timeout: 1 * time.Second}) if err != nil { log.Fatal("Error opening bolt db: ", err) os.Exit(1) } defer db.Close() caching.SetCfClient(cfClient) caching.SetAppDb(db) caching.CreateBucket() //Let's Update the database the first time logging.LogStd("Start filling app/space/org cache.", true) apps := caching.GetAllApp() logging.LogStd(fmt.Sprintf("Done filling cache! Found [%d] Apps", len(apps)), true) logging.LogStd("Setting up event routing!", true) events.SetupEventRouting(*wantedEvents) // Ticker Pooling the CC every X sec ccPooling := time.NewTicker(*tickerTime) go func() { for range ccPooling.C { apps = caching.GetAllApp() } }() if logging.Connect() || *debug { logging.LogStd("Connected to Syslog Server! Connecting to Firehose...", true) firehose := firehose.CreateFirehoseChan(cfClient.Endpoint.DopplerAddress, cfClient.GetToken(), *subscriptionId, *skipSSLValidation) if firehose != nil { logging.LogStd("Firehose Subscription Succesfull! Routing events...", true) events.RouteEvents(firehose) } else { logging.LogError("Failed connecting to Firehose...Please check settings and try again!", "") } } else { logging.LogError("Failed connecting to the Syslog Server...Please check settings and try again!", "") } }