in internal/beater/server.go [166:215]
func newServer(args ServerParams, listener net.Listener) (server, error) {
publishReady := func() bool {
select {
case <-args.PublishReady:
return true
default:
return false
}
}
// Create an HTTP server for serving Elastic APM agent requests.
router, err := api.NewMux(
args.Config,
args.BatchProcessor,
args.Authenticator,
args.AgentConfig,
args.RateLimitStore,
args.SourcemapFetcher,
publishReady,
args.Semaphore,
args.MeterProvider,
args.Logger,
)
if err != nil {
return server{}, err
}
apmgorilla.Instrument(router, apmgorilla.WithRequestIgnorer(doNotTrace), apmgorilla.WithTracer(args.Tracer))
httpServer, err := newHTTPServer(args.Logger, args.Config, router, listener)
if err != nil {
return server{}, err
}
otlpBatchProcessor := args.BatchProcessor
if args.Config.AugmentEnabled {
// Add a model processor that sets `client.ip` for events from end-user devices.
otlpBatchProcessor = modelprocessor.Chained{
modelpb.ProcessBatchFunc(otlp.SetClientMetadata),
otlpBatchProcessor,
}
}
zapLogger := zap.New(args.Logger.Core(), zap.WithCaller(true))
otlp.RegisterGRPCServices(args.GRPCServer, zapLogger, otlpBatchProcessor, args.Semaphore, args.MeterProvider)
return server{
logger: args.Logger,
cfg: args.Config,
httpServer: httpServer,
grpcServer: args.GRPCServer,
}, nil
}