github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/tracing/honeycomb.go (about)

     1  package tracing
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/honeycombio/opentelemetry-exporter-go/honeycomb"
     7  	export "go.opentelemetry.io/otel/sdk/export/trace"
     8  )
     9  
    10  type Honeycomb struct {
    11  	APIKey      string `long:"honeycomb-api-key" description:"honeycomb.io api key"`
    12  	Dataset     string `long:"honeycomb-dataset" description:"honeycomb.io dataset name"`
    13  	ServiceName string `long:"honeycomb-service-name" description:"honeycomb.io service name" default:"concourse"`
    14  }
    15  
    16  func (h Honeycomb) IsConfigured() bool {
    17  	return h.APIKey != "" && h.Dataset != ""
    18  }
    19  
    20  func (h Honeycomb) Exporter() (export.SpanSyncer, error) {
    21  	exporter, err := honeycomb.NewExporter(
    22  		honeycomb.Config{
    23  			APIKey: h.APIKey,
    24  		},
    25  		honeycomb.TargetingDataset(h.Dataset),
    26  		honeycomb.WithServiceName(h.ServiceName),
    27  	)
    28  	if err != nil {
    29  		err = fmt.Errorf("failed to create honeycomb exporter: %w", err)
    30  		return nil, err
    31  	}
    32  
    33  	return exporter, nil
    34  }