code: func (plugin *ExamplePlugin) Init() error {
  
  	// add new metric to default registry (accessible at the path /metrics)
  	//
  	// the current value is returned by provided callback
  	// created gauge is identified by tuple(namespace, subsystem, name) only the name field is mandatory
  	// additional properties can be defined using labels - key-value pairs. They do not change over time for the given gauge.
  	err := plugin.Prometheus.RegisterGaugeFunc(prom.DefaultRegistry, "ns", "sub", "gaugeOne",
  		"this metrics represents randomly generated numbers", prometheus.Labels{"Property1": "ABC", "Property2": "DEF"}, func() float64 {
  			return rand.Float64()
  		})
  	if err != nil {
  		return err
  	}
  
  	// create new registry that will be exposed at /custom path
  	err = plugin.Prometheus.NewRegistry(customRegistry, promhttp.HandlerOpts{ErrorHandling: promhttp.ContinueOnError})
  	if err != nil {
  		return err
  	}
  
  	// create gauge using prometheus API
  	plugin.temporaryCounter = prometheus.NewGauge(prometheus.GaugeOpts{
  		Name: "Countdown",
  		Help: "This gauge is decremented by 1 each second, once it reaches 0 the gauge is removed.",
  	})
  	plugin.counterVal = 60
  	plugin.temporaryCounter.Set(float64(plugin.counterVal))
  
  	// register created gauge to the custom registry
  	err = plugin.Prometheus.Register(customRegistry, plugin.temporaryCounter)
  	if err != nil {
  		return err
  	}
  
  	// create gauge vector and register it
  	plugin.gaugeVec = prometheus.NewGaugeVec(prometheus.GaugeOpts{
  		Name:        "Vector",
  		Help:        "This gauge groups multiple similar metrics.",
  		ConstLabels: prometheus.Labels{"type": "vector", "answer": "42"},
  	}, []string{orderLabel})
  	err = plugin.Prometheus.Register(customRegistry, plugin.gaugeVec)
  
  	return err
  
  }
docs: // Init creates metric registries and adds gauges