func collectMetrics()

in pkg/sidecar_mounter/sidecar_mounter.go [237:267]


func collectMetrics(ctx context.Context, port, tempDir string) {
	metricEndpoint := fmt.Sprintf(metricEndpointFmt, port)

	// Create a unix domain socket and listen for incoming connections.
	socketPath := filepath.Join(tempDir, metrics.SocketName)
	socket, err := net.Listen("unix", socketPath)
	if err != nil {
		klog.Errorf("failed to create socket %q: %v", socketPath, err)

		return
	}

	mux := http.NewServeMux()
	mux.HandleFunc("/", func(w http.ResponseWriter, _ *http.Request) {
		timeoutCtx, cancel := context.WithTimeout(ctx, 5*time.Second)
		defer cancel()

		if err := scrapeMetrics(timeoutCtx, metricEndpoint, w); err != nil {
			http.Error(w, err.Error(), http.StatusInternalServerError)
		}
	})

	server := http.Server{
		Handler:      mux,
		ReadTimeout:  10 * time.Second,
		WriteTimeout: 10 * time.Second,
	}
	if err := server.Serve(socket); err != nil {
		klog.Errorf("failed to start the metrics server for %q: %v", socketPath, err)
	}
}