package metrics

import (
	"github.com/prometheus/client_golang/prometheus"
	"github.com/prometheus/client_golang/prometheus/collectors"
	"github.com/prometheus/client_golang/prometheus/promhttp"
	"log"
	"net/http"
)

// Metrics establish metrics for an application.
func Metrics() {
	// Register standart metrics.
	appRegistry := prometheus.NewRegistry()
	appRegistry.MustRegister(collectors.NewGoCollector())
	appRegistry.MustRegister(collectors.NewProcessCollector(collectors.ProcessCollectorOpts{}))

	//// Endpoint for metrics.
	http.Handle("/metrics", promhttp.HandlerFor(appRegistry, promhttp.HandlerOpts{}))

	// Start server.
	err := http.ListenAndServe(":9111", nil)
	if err != nil {
		log.Println(err)
	}
}
