Documentation ¶
Overview ¶
Package receiver contains implementations of Receiver components.
To implement a custom receiver you will need to implement component.ReceiverFactory interface and component.Receiver interface.
To make the custom receiver part of the Collector build the factory must be added to defaultcomponents.Components() function.
Example (EndToEnd) ¶
package main import ( "context" "log" "time" "contrib.go.opencensus.io/exporter/ocagent" "go.opencensus.io/trace" "go.uber.org/zap" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/config/configmodels" "go.opentelemetry.io/collector/consumer/converter" "go.opentelemetry.io/collector/exporter/loggingexporter" "go.opentelemetry.io/collector/receiver/opencensusreceiver" ) func main() { // This is what the cmd/ocagent code would look like this. // A trace receiver as per the trace receiver // configs that have been parsed. lte, err := loggingexporter.NewTraceExporter(&configmodels.ExporterSettings{}, "debug", zap.NewNop()) if err != nil { log.Fatalf("Failed to create logging exporter: %v", err) } tr, err := opencensusreceiver.New("opencensus", "tcp", "localhost:55678", converter.NewOCToInternalTraceConverter(lte), nil) if err != nil { log.Fatalf("Failed to create trace receiver: %v", err) } // The agent will combine all trace receivers like this. trl := []component.TraceReceiver{tr} // Once we have the span receiver which will connect to the // various exporter pipeline i.e. *tracepb.Span->OpenCensus.SpanData for _, tr := range trl { if err = tr.Start(context.Background(), nil); err != nil { log.Fatalf("Failed to start trace receiver: %v", err) } } // Before exiting, stop all the trace receivers defer func() { for _, tr := range trl { _ = tr.Shutdown(context.Background()) } }() log.Println("Done starting the trace receiver") // We are done with the agent-core // Now this code would exist in the client application e.g. client code. // Create the agent exporter oce, err := ocagent.NewExporter(ocagent.WithInsecure()) if err != nil { log.Fatalf("Failed to create ocagent exporter: %v", err) } defer oce.Stop() // Register it as a trace exporter trace.RegisterExporter(oce) // For demo purposes we are always sampling trace.ApplyConfig(trace.Config{DefaultSampler: trace.AlwaysSample()}) log.Println("Starting loop") ctx, span := trace.StartSpan(context.Background(), "ClientLibrarySpan") for i := 0; i < 10; i++ { _, childSpan := trace.StartSpan(ctx, "ChildSpan") childSpan.Annotatef([]trace.Attribute{ trace.StringAttribute("type", "Child"), trace.Int64Attribute("i", int64(i)), }, "This is an annotation") <-time.After(100 * time.Millisecond) childSpan.End() oce.Flush() } span.End() <-time.After(400 * time.Millisecond) oce.Flush() <-time.After(5 * time.Second) }
Output:
Directories ¶
Path | Synopsis |
---|---|
nopreceiver
module
|
|
ocmetrics
Package ocmetrics is the logic for receiving OpenCensus metrics proto from already instrumented applications and then passing them onto a metricsink instance.
|
Package ocmetrics is the logic for receiving OpenCensus metrics proto from already instrumented applications and then passing them onto a metricsink instance. |
octrace
Package octrace is the logic for receiving OpenCensus trace protobuf defined spans from already instrumented applications and then passing them onto a TraceReceiverSink instance.
|
Package octrace is the logic for receiving OpenCensus trace protobuf defined spans from already instrumented applications and then passing them onto a TraceReceiverSink instance. |
Package prometheusreceiver has the logic for scraping Prometheus metrics from already instrumented applications and then passing them onto a metricsink instance.
|
Package prometheusreceiver has the logic for scraping Prometheus metrics from already instrumented applications and then passing them onto a metricsink instance. |
receiverprofiles
module
|
|
receivertest
module
|
|
Package vmmetricsreceiver has the logic for scraping VM metrics and then passing them onto a metric consumer instance.
|
Package vmmetricsreceiver has the logic for scraping VM metrics and then passing them onto a metric consumer instance. |
xreceiver
module
|
|
Click to show internal directories.
Click to hide internal directories.