func newPoster(clientConfig influx.ClientConfig, name string, destination *destination, waitGroup *sync.WaitGroup) *poster { influxClient, err := influx.NewClient(&clientConfig) if err != nil { panic(err) } return &poster{ destination: destination, name: name, influxClient: influxClient, pointsSuccessCounter: metrics.GetOrRegisterCounter("lumbermill.poster.deliver.points."+name, metrics.DefaultRegistry), pointsSuccessTime: metrics.GetOrRegisterTimer("lumbermill.poster.success.time."+name, metrics.DefaultRegistry), pointsFailureCounter: metrics.GetOrRegisterCounter("lumbermill.poster.error.points."+name, metrics.DefaultRegistry), pointsFailureTime: metrics.GetOrRegisterTimer("lumbermill.poster.error.time."+name, metrics.DefaultRegistry), } }
internalServerErrorCounter = metrics.GetOrRegisterCounter("lumbermill.errors.internalserver", metrics.DefaultRegistry) tokenMissingCounter = metrics.GetOrRegisterCounter("lumbermill.errors.token.missing", metrics.DefaultRegistry) timeParsingErrorCounter = metrics.GetOrRegisterCounter("lumbermill.errors.time.parse", metrics.DefaultRegistry) logfmtParsingErrorCounter = metrics.GetOrRegisterCounter("lumbermill.errors.logfmt.parse", metrics.DefaultRegistry) droppedErrorCounter = metrics.GetOrRegisterCounter("lumbermill.errors.dropped", metrics.DefaultRegistry) batchCounter = metrics.GetOrRegisterCounter("lumbermill.batch", metrics.DefaultRegistry) linesCounter = metrics.GetOrRegisterCounter("lumbermill.lines", metrics.DefaultRegistry) routerErrorLinesCounter = metrics.GetOrRegisterCounter("lumbermill.lines.router.error", metrics.DefaultRegistry) routerLinesCounter = metrics.GetOrRegisterCounter("lumbermill.lines.router", metrics.DefaultRegistry) routerBlankLinesCounter = metrics.GetOrRegisterCounter("lumbermill.lines.router.blank", metrics.DefaultRegistry) dynoErrorLinesCounter = metrics.GetOrRegisterCounter("lumbermill.lines.dyno.error", metrics.DefaultRegistry) dynoMemLinesCounter = metrics.GetOrRegisterCounter("lumbermill.lines.dyno.mem", metrics.DefaultRegistry) dynoLoadLinesCounter = metrics.GetOrRegisterCounter("lumbermill.lines.dyno.load", metrics.DefaultRegistry) unknownHerokuLinesCounter = metrics.GetOrRegisterCounter("lumbermill.lines.unknown.heroku", metrics.DefaultRegistry) unknownUserLinesCounter = metrics.GetOrRegisterCounter("lumbermill.lines.unknown.user", metrics.DefaultRegistry) parseTimer = metrics.GetOrRegisterTimer("lumbermill.batches.parse.time", metrics.DefaultRegistry) batchSizeHistogram = metrics.GetOrRegisterHistogram("lumbermill.batches.sizes", metrics.DefaultRegistry, metrics.NewUniformSample(100)) ) // Dyno's are generally reported as "<type>.<#>" // Extract the <type> and return it func dynoType(what string) string { s := strings.Split(what, ".") return s[0] } // Lock, or don't do any work, but don't block. // This, essentially, samples the incoming tokens for the purposes of health checking // live tokens. Rather than use a random number generator, or a global counter, we // let the scheduler do the sampling for us. func (s *server) maybeUpdateRecentTokens(host, id string) {