mirror of
https://github.com/hanzoai/otel-collector.git
synced 2026-11-03 02:20:04 +00:00
- Go module: github.com/SigNoz/signoz-otel-collector → github.com/hanzoai/otel-collector - All signoz-prefixed packages → o11y-prefixed - Docker: signoz/* → ghcr.io/hanzoai/otel-collector - ClickHouse exporter → Hanzo Datastore - Env vars: SIGNOZ_* → HANZO_* - Directory renames for all processor/receiver/exporter packages
161 lines
4.4 KiB
Go
161 lines
4.4 KiB
Go
// Copyright The OpenTelemetry Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package o11ykafkareceiver // import "github.com/hanzoai/otel-collector/receiver/o11ykafkareceiver"
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"go.opentelemetry.io/collector/component"
|
|
"go.opentelemetry.io/collector/consumer"
|
|
"go.opentelemetry.io/collector/receiver"
|
|
|
|
"github.com/hanzoai/otel-collector/receiver/o11ykafkareceiver/internal/metadata"
|
|
)
|
|
|
|
const (
|
|
defaultTopic = "otlp_spans"
|
|
defaultEncoding = "otlp_proto"
|
|
defaultBroker = "localhost:9092"
|
|
defaultClientID = "otel-collector"
|
|
defaultGroupID = defaultClientID
|
|
defaultInitialOffset = offsetLatest
|
|
|
|
// default from sarama.NewConfig()
|
|
defaultMetadataRetryMax = 3
|
|
// default from sarama.NewConfig()
|
|
defaultMetadataRetryBackoff = time.Millisecond * 250
|
|
// default from sarama.NewConfig()
|
|
defaultMetadataFull = true
|
|
|
|
// default from sarama.NewConfig()
|
|
defaultAutoCommitEnable = true
|
|
// default from sarama.NewConfig()
|
|
defaultAutoCommitInterval = 1 * time.Second
|
|
)
|
|
|
|
// FactoryOption applies changes to kafkaExporterFactory.
|
|
type FactoryOption func(factory *kafkaReceiverFactory)
|
|
|
|
// WithTracesUnmarshalers adds Unmarshalers.
|
|
func WithTracesUnmarshalers(tracesUnmarshalers ...TracesUnmarshaler) FactoryOption {
|
|
return func(factory *kafkaReceiverFactory) {
|
|
for _, unmarshaler := range tracesUnmarshalers {
|
|
factory.tracesUnmarshalers[unmarshaler.Encoding()] = unmarshaler
|
|
}
|
|
}
|
|
}
|
|
|
|
// WithMetricsUnmarshalers adds MetricsUnmarshalers.
|
|
func WithMetricsUnmarshalers(metricsUnmarshalers ...MetricsUnmarshaler) FactoryOption {
|
|
return func(factory *kafkaReceiverFactory) {
|
|
for _, unmarshaler := range metricsUnmarshalers {
|
|
factory.metricsUnmarshalers[unmarshaler.Encoding()] = unmarshaler
|
|
}
|
|
}
|
|
}
|
|
|
|
// WithLogsUnmarshalers adds LogsUnmarshalers.
|
|
func WithLogsUnmarshalers(logsUnmarshalers ...LogsUnmarshaler) FactoryOption {
|
|
return func(factory *kafkaReceiverFactory) {
|
|
for _, unmarshaler := range logsUnmarshalers {
|
|
factory.logsUnmarshalers[unmarshaler.Encoding()] = unmarshaler
|
|
}
|
|
}
|
|
}
|
|
|
|
// NewFactory creates Kafka receiver factory.
|
|
func NewFactory(options ...FactoryOption) receiver.Factory {
|
|
|
|
f := &kafkaReceiverFactory{
|
|
tracesUnmarshalers: defaultTracesUnmarshalers(),
|
|
metricsUnmarshalers: defaultMetricsUnmarshalers(),
|
|
logsUnmarshalers: defaultLogsUnmarshalers(),
|
|
}
|
|
for _, o := range options {
|
|
o(f)
|
|
}
|
|
return receiver.NewFactory(
|
|
metadata.Type,
|
|
createDefaultConfig,
|
|
receiver.WithTraces(f.createTracesReceiver, metadata.TracesStability),
|
|
receiver.WithMetrics(f.createMetricsReceiver, metadata.MetricsStability),
|
|
receiver.WithLogs(f.createLogsReceiver, metadata.LogsStability),
|
|
)
|
|
}
|
|
|
|
func createDefaultConfig() component.Config {
|
|
return &Config{
|
|
Topic: defaultTopic,
|
|
Encoding: defaultEncoding,
|
|
Brokers: []string{defaultBroker},
|
|
ClientID: defaultClientID,
|
|
GroupID: defaultGroupID,
|
|
InitialOffset: defaultInitialOffset,
|
|
Metadata: Metadata{
|
|
Full: defaultMetadataFull,
|
|
Retry: MetadataRetry{
|
|
Max: defaultMetadataRetryMax,
|
|
Backoff: defaultMetadataRetryBackoff,
|
|
},
|
|
},
|
|
AutoCommit: AutoCommit{
|
|
Enable: defaultAutoCommitEnable,
|
|
Interval: defaultAutoCommitInterval,
|
|
},
|
|
MessageMarking: MessageMarking{
|
|
After: false,
|
|
OnError: false,
|
|
},
|
|
}
|
|
}
|
|
|
|
type kafkaReceiverFactory struct {
|
|
tracesUnmarshalers map[string]TracesUnmarshaler
|
|
metricsUnmarshalers map[string]MetricsUnmarshaler
|
|
logsUnmarshalers map[string]LogsUnmarshaler
|
|
}
|
|
|
|
func (f *kafkaReceiverFactory) createTracesReceiver(
|
|
_ context.Context,
|
|
set receiver.Settings,
|
|
cfg component.Config,
|
|
nextConsumer consumer.Traces,
|
|
) (receiver.Traces, error) {
|
|
c := cfg.(*Config)
|
|
r, err := newTracesReceiver(*c, set, f.tracesUnmarshalers, nextConsumer)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return r, nil
|
|
}
|
|
|
|
func (f *kafkaReceiverFactory) createMetricsReceiver(
|
|
_ context.Context,
|
|
set receiver.Settings,
|
|
cfg component.Config,
|
|
nextConsumer consumer.Metrics,
|
|
) (receiver.Metrics, error) {
|
|
c := cfg.(*Config)
|
|
r, err := newMetricsReceiver(*c, set, f.metricsUnmarshalers, nextConsumer)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return r, nil
|
|
}
|
|
|
|
func (f *kafkaReceiverFactory) createLogsReceiver(
|
|
_ context.Context,
|
|
set receiver.Settings,
|
|
cfg component.Config,
|
|
nextConsumer consumer.Logs,
|
|
) (receiver.Logs, error) {
|
|
c := cfg.(*Config)
|
|
r, err := newLogsReceiver(*c, set, f.logsUnmarshalers, nextConsumer)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return r, nil
|
|
}
|