metrics.go
func PushMetrics(ctx context.Context, task string, gatewayURL string) {
	if err := push.Collectors(
		task, push.HostnameGroupingKey(),
		gatewayURL,
		histograms, counts, errcounts,
	); err != nil {
		fmt.Println("Could not push completion time to Pushgateway:", err)
	}
}
func PushMetrics(ctx context.Context, task string, gatewayURL string) {
	if err := push.Collectors(
		task, push.HostnameGroupingKey(),
		gatewayURL,
		histograms, counts, errcounts,
	); err != nil {
		fmt.Println("Could not push completion time to Pushgateway:", err)
	}
}
// PushMetrics sends the metrics collected to the prometheus push gateway
// at the url in `gatewayURL` with the job name of `task`
// Should be called in a defer in main() of a cli application.
// For long-running services, use ServeMetrics instead