func main() { consumer := noaa.NewConsumer(DopplerAddress, &tls.Config{InsecureSkipVerify: true}, nil) httpStartStopProcessor := processors.NewHttpStartStopProcessor() valueMetricProcessor := processors.NewValueMetricProcessor() containerMetricProcessor := processors.NewContainerMetricProcessor() heartbeatProcessor := processors.NewHeartbeatProcessor() counterProcessor := processors.NewCounterProcessor() sender := statsd.NewStatsdClient(statsdAddress, statsdPrefix) sender.CreateSocket() var processedMetrics []metrics.Metric msgChan := make(chan *events.Envelope) go func() { defer close(msgChan) errorChan := make(chan error) go consumer.Firehose(firehoseSubscriptionId, authToken, msgChan, errorChan, nil) for err := range errorChan { fmt.Fprintf(os.Stderr, "%v\n", err.Error()) } }() for msg := range msgChan { eventType := msg.GetEventType() // graphite-nozzle can handle CounterEvent, ContainerMetric, Heartbeat, // HttpStartStop and ValueMetric events switch eventType { case events.Envelope_ContainerMetric: processedMetrics = containerMetricProcessor.Process(msg) case events.Envelope_CounterEvent: processedMetrics = counterProcessor.Process(msg) case events.Envelope_Heartbeat: processedMetrics = heartbeatProcessor.Process(msg) case events.Envelope_HttpStartStop: processedMetrics = httpStartStopProcessor.Process(msg) case events.Envelope_ValueMetric: processedMetrics = valueMetricProcessor.Process(msg) default: // do nothing } if len(processedMetrics) > 0 { for _, metric := range processedMetrics { metric.Send(sender) } } processedMetrics = nil } }
func main() { kingpin.Parse() fmt.Println(*uaaEndpoint) fmt.Println(*username) fmt.Println(*password) tokenFetcher := &token.UAATokenFetcher{ UaaUrl: *uaaEndpoint, Username: *username, Password: *password, InsecureSSLSkipVerify: *skipSSLValidation, } authToken, err := tokenFetcher.FetchAuthToken() if err != nil { fmt.Println(err) os.Exit(-1) } consumer := noaa.NewConsumer(*dopplerEndpoint, &tls.Config{InsecureSkipVerify: *skipSSLValidation}, nil) httpStartStopProcessor := processors.NewHttpStartStopProcessor() valueMetricProcessor := processors.NewValueMetricProcessor() containerMetricProcessor := processors.NewContainerMetricProcessor() heartbeatProcessor := processors.NewHeartbeatProcessor() counterProcessor := processors.NewCounterProcessor() sender := statsd.NewStatsdClient(*statsdEndpoint, *statsdPrefix) sender.CreateSocket() var processedMetrics []metrics.Metric msgChan := make(chan *events.Envelope) go func() { defer close(msgChan) errorChan := make(chan error) go consumer.Firehose(*subscriptionId, authToken, msgChan, errorChan, nil) for err := range errorChan { fmt.Fprintf(os.Stderr, "%v\n", err.Error()) } }() for msg := range msgChan { eventType := msg.GetEventType() // graphite-nozzle can handle CounterEvent, ContainerMetric, Heartbeat, // HttpStartStop and ValueMetric events switch eventType { case events.Envelope_ContainerMetric: processedMetrics = containerMetricProcessor.Process(msg) case events.Envelope_CounterEvent: processedMetrics = counterProcessor.Process(msg) case events.Envelope_Heartbeat: processedMetrics = heartbeatProcessor.Process(msg) case events.Envelope_HttpStartStop: processedMetrics = httpStartStopProcessor.Process(msg) case events.Envelope_ValueMetric: processedMetrics = valueMetricProcessor.Process(msg) default: // do nothing } if !*debug { if len(processedMetrics) > 0 { for _, metric := range processedMetrics { var prefix string if *prefixJob { prefix = msg.GetJob() + "." + msg.GetIndex() } metric.Send(sender, prefix) } } } else { for _, msg := range processedMetrics { fmt.Println(msg) } } processedMetrics = nil } }