mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			42 lines
		
	
	
		
			920 B
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			920 B
		
	
	
	
		
			Go
		
	
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"encoding/json"
 | |
| 	"fmt"
 | |
| 	"io"
 | |
| 	"log"
 | |
| 	"os"
 | |
| 	"regexp"
 | |
| 
 | |
| 	"github.com/grafana/grafana/pkg/build/metrics"
 | |
| 	"github.com/urfave/cli/v2"
 | |
| )
 | |
| 
 | |
| func PublishMetrics(c *cli.Context) error {
 | |
| 	apiKey := c.Args().Get(0)
 | |
| 
 | |
| 	input, err := io.ReadAll(os.Stdin)
 | |
| 	if err != nil {
 | |
| 		return cli.NewExitError(fmt.Sprintf("Reading from stdin failed: %s", err), 1)
 | |
| 	}
 | |
| 
 | |
| 	reMetrics := regexp.MustCompile(`(?ms)^Metrics: (\{.+\})`)
 | |
| 	ms := reMetrics.FindSubmatch(input)
 | |
| 	if len(ms) == 0 {
 | |
| 		return cli.NewExitError(fmt.Sprintf("Input on wrong format: %q", string(input)), 1)
 | |
| 	}
 | |
| 
 | |
| 	m := map[string]string{}
 | |
| 	if err := json.Unmarshal(ms[1], &m); err != nil {
 | |
| 		return cli.NewExitError(fmt.Sprintf("decoding metrics failed: %s", err), 1)
 | |
| 	}
 | |
| 
 | |
| 	log.Printf("Received metrics %+v", m)
 | |
| 
 | |
| 	if err := metrics.Publish(m, apiKey); err != nil {
 | |
| 		return cli.NewExitError(fmt.Sprintf("publishing metrics failed: %s", err), 1)
 | |
| 	}
 | |
| 
 | |
| 	return nil
 | |
| }
 |