code: func GetPrometheusReporter(
  	serverType string,
  	config *config.Config,
  	constLabels map[string]string,
  ) (*PrometheusReporter, error) {
  	var (
  		port             = config.GetInt("pitaya.metrics.prometheus.port")
  		game             = config.GetString("pitaya.game")
  		additionalLabels = config.GetStringMapString("pitaya.metrics.additionalTags")
  	)
  
  	spec, err := NewCustomMetricsSpec(config)
  	if err != nil {
  		return nil, err
  	}
  
  	once.Do(func() {
  		prometheusReporter = &PrometheusReporter{
  			serverType:          serverType,
  			game:                game,
  			countReportersMap:   make(map[string]*prometheus.CounterVec),
  			summaryReportersMap: make(map[string]*prometheus.SummaryVec),
  			gaugeReportersMap:   make(map[string]*prometheus.GaugeVec),
  		}
  		prometheusReporter.registerMetrics(constLabels, additionalLabels, spec)
  		http.Handle("/metrics", prometheus.Handler())
  		go (func() {
  			log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", port), nil))
  		})()
  	})
  
  	return prometheusReporter, nil
  }
docs: // GetPrometheusReporter gets the prometheus reporter singleton