collex

package module
v0.0.0-...-2c6a81c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 15, 2023 License: Apache-2.0 Imports: 7 Imported by: 0

README

collex

Use OpenTelemetry Collector Exporters with OpenTelemetry Go

⚠ This project is a work in progress 🚧. Breaking changes may be introduced. ⚠

Getting Started

OpenTelemetry Collector exporters are generated from ExporterFactorys. First wrap this facotry with collex.

factory, err := collex.NewFactory(your.NewFactory(), nil)
if err != nil {
    // Handle error appropiately.
}
Tracing

Generate a SpanExporter from your collex.Factory.

exp, err := factory.SpanExporter(context.Background(), nil)
if err != nil {
    // Handle error appropiately.
}
provider := trace.NewTracerProvider(trace.WithBatcher(exp))

Use provider as any other OpenTelemetry Go TracerProvider to generate tracing telemetry.

Documentation

Overview

Package collex provides OpenTelemetry Go Exporters that wrap OpenTelemetry Collector Exporters. This allows any collector exporter to be used with opentelemetry-go.

Example
package main

import (
	"context"
	"log"

	"github.com/MrAlias/collex"
	"go.opentelemetry.io/collector/component"
	"go.opentelemetry.io/collector/exporter"
	"go.opentelemetry.io/collector/exporter/loggingexporter"
	"go.opentelemetry.io/otel"
	"go.opentelemetry.io/otel/sdk/trace"
	"go.uber.org/zap"
)

func main() {
	settings := &exporter.CreateSettings{
		TelemetrySettings: component.TelemetrySettings{
			Logger:         zap.NewExample(), // Log to STDOUT for example.
			TracerProvider: otel.GetTracerProvider(),
		},
	}
	factory, err := collex.NewFactory(loggingexporter.NewFactory(), settings)
	if err != nil {
		log.Fatal(err)
	}

	ctx := context.Background()
	exp, err := factory.SpanExporter(ctx, nil)
	if err != nil {
		log.Fatal(err)
	}

	provider := trace.NewTracerProvider(trace.WithSyncer(exp))
	tracer := provider.Tracer("github.com/MrAlias/collex")
	_, s := tracer.Start(ctx, "ExampleTracesExporter")
	s.End()
	if err := provider.Shutdown(ctx); err != nil {
		log.Fatal(err)
	}

}
Output:

{"level":"info","msg":"TracesExporter","#spans":1}

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Factory

type Factory struct {
	// contains filtered or unexported fields
}

Factory wraps an OpenTelemetry collector ExporterFactory and initializes new OpenTelemetry Go exporters from it.

func NewFactory

func NewFactory(f exporter.Factory, set *exporter.CreateSettings) (*Factory, error)

NewFactory returns a new configured *Factory. If set is nil, a default CreateSettings will be used. These settings use a production ready Zap logger and a global OpenTelemetry Go TracerProvider.

func (*Factory) SpanExporter

func (f *Factory) SpanExporter(ctx context.Context, cfg component.Config) (trace.SpanExporter, error)

SpanExporter returns an OpenTelemetry Go SpanExporter that can be registered with a TracerProvider. If cfg is nil the factory default configuration for the ExporterFactory is used.

Directories

Path Synopsis
Package transmute provides utilities to change the form of telemetry data.
Package transmute provides utilities to change the form of telemetry data.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL