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)
}
}