in main.go [67:132]
func main() {
cmd := &ElasticsearchAdapter{}
cmd.OpenAPIConfig = genericapiserver.DefaultOpenAPIConfig(generatedopenapi.GetOpenAPIDefinitions, openapinamer.NewDefinitionNamer(apiserver.Scheme))
cmd.OpenAPIConfig.Info.Title = serviceType
cmd.OpenAPIConfig.Info.Version = serviceVersion
logs.AddFlags(cmd.Flags())
cmd.Flags().BoolVar(&cmd.Insecure, "insecure", false, "if true authentication and authorization are disabled, only to be used in dev mode")
cmd.Flags().IntVar(&cmd.MonitoringPort, "monitoring-port", 9090, "port to expose readiness and Prometheus metrics")
cmd.Flags().IntVar(&cmd.ProfilingPort, "profiling-port", 0, "port to expose pprof profiling")
cmd.Flags().AddGoFlagSet(flag.CommandLine) // make sure we get the klog flags
err := cmd.Flags().Parse(os.Args)
if err != nil {
logErrorAndExit(err, "Unable to parse flags")
}
flushLogs := log.Configure(cmd.Flags(), serviceType, serviceVersion)
defer flushLogs()
logger = log.ForPackage("main")
adapterCfg, err := config.Parse()
if err != nil {
logErrorAndExit(err, "Unable to parse adapter configuration")
}
logger.Info("Starting monitoring server...")
monitoringServer := monitoring.NewServer(adapterCfg.MetricServers, cmd.MonitoringPort, adapterCfg.ReadinessProbe.FailureThreshold)
go monitoringServer.Start()
if cmd.ProfilingPort > 0 {
logger.Info("Starting profiling server...")
go profiling.StartProfiling(cmd.ProfilingPort)
}
apmTracer, err := apm.NewTracer(serviceType, serviceVersion)
if err != nil {
logErrorAndExit(err, "Unable to create APM tracer")
}
apmTracer.SetLogger(&tracing.Logger{})
metricsClients, err := cmd.newMetricsClients(adapterCfg, apmTracer)
if err != nil {
logErrorAndExit(err, "Unable to create metrics provider")
}
scheduler := scheduler.NewScheduler(metricsClients...)
metricsRegistry := registry.NewRegistry()
scheduler.
WithMetricListeners(monitoringServer, metricsRegistry).
WithErrorListeners(monitoringServer).
Start().
WaitInitialSync()
aggProvider := provider.NewAggregationProvider(metricsRegistry, apmTracer)
cmd.WithCustomMetrics(aggProvider)
cmd.WithExternalMetrics(aggProvider)
if cmd.Insecure {
cmd.Authentication = nil
cmd.Authorization = nil
}
logger.Info("Starting elastic k8s metrics adapter...")
if err := cmd.Run(context.WithoutCancel(context.Background())); err != nil {
logErrorAndExit(err, "Unable to run elastic k8s metrics adapter")
}
}