func main()

in sandbox/ho11y/main.go [325:401]


func main() {
	// configure log in JSON format:
	log.SetFormatter(&log.JSONFormatter{})
	logdest, ldprovided := os.LookupEnv("HO11Y_LOG_DEST")
	if ldprovided {
		switch logdest {
		case "stdout":
			log.SetOutput(os.Stdout)
		default:
			log.SetOutput(os.Stderr)
		}
	}
	// make sure to provide random values:
	rand.Seed(time.Now().UTC().UnixNano())
	// handle service port setting from environment:
	port := ":8765"
	useport, pprovided := os.LookupEnv("HO11Y_PORT")
	if pprovided {
		port = ":" + useport
	}
	// handle injection mode setting from environment:
	if os.Getenv("HO11Y_INJECT_FAILURE") != "" {
		log.Info("Failure injection enabled, dropping half of the requests")
	}
	// handle downstream settings from environment:
	for i := range downstreams {
		downstreams[i] = os.Getenv("DOWNSTREAM" + strconv.Itoa(i))
		if downstreams[i] != "" {
			log.Info("Using downstream " + strconv.Itoa(i) + ": " + downstreams[i])
		}
	}
	// handle throttle setting from environment:
	enableThrottling = false
	tpv, tprovided := os.LookupEnv("HO11Y_CUTOFF_TPS")
	if tprovided {
		parsedval, err := strconv.Atoi(tpv)
		if err == nil {
			tpsCutoffVal = float64(parsedval)
			enableThrottling = true
			go manageThrottle()
			log.Info("Throttling enabled with a " + tpv + " TPS cutoff point")
		} else {
			log.Error("Invalid cutoff TPS value provided")
		}
	}

	// need to explicitly register those bad dawgs:
	prometheus.MustRegister(payloadsSummary)
	prometheus.MustRegister(payloadsHistogram)
	// kick off randomized metrics:
	go randValues()
	// configure OTEL tracing:
	initProvider()
	log.Info("Init instrumentation done")
	// set up HTTP API and launch service:
	exposeOpenMetrics := true
	_, omprovided := os.LookupEnv("DISABLE_OM")
	if omprovided {
		exposeOpenMetrics = false
		log.Info("OpenMetrics disabled")
	}
	r := mux.NewRouter()
	r.Use(otelmux.Middleware("ho11y-svc"))
	r.HandleFunc("/", handler).Methods(http.MethodGet)
	r.Handle("/metrics", promhttp.HandlerFor(
		prometheus.DefaultGatherer,
		promhttp.HandlerOpts{
			EnableOpenMetrics: exposeOpenMetrics,
		},
	))
	ho11yinstance := os.Getenv("OTEL_RESOURCE_ATTRIB")
	if ho11yinstance == "" {
		ho11yinstance = "ho11y-svc"
	}
	log.Infof("Launching ho11y: I am [%s] listening on port %s on all local IPs.", ho11yinstance, port)
	log.Fatal(http.ListenAndServe(port, r))
}