opentelemetry_collector/receiver/dockerstats/factory.go (33 lines of code) (raw):

package dockerstats import ( "context" "fmt" "time" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/consumer" ) const typeStr = "dockerstats" // CreateDefaultConfig creates the default configuration for dockerstats receiver. func createDefaultConfig() config.Receiver { return &Config{ ReceiverSettings: config.NewReceiverSettings(config.NewComponentID(typeStr)), ScrapeInterval: time.Minute, } } // CreateMetricsReceiver creates a metric receiver for dockerstats. func createMetricsReceiver(ctx context.Context, settings component.ReceiverCreateSettings, cfg config.Receiver, nextConsumer consumer.Metrics) (component.MetricsReceiver, error) { c := cfg.(*Config) if c.ScrapeInterval <= 0 { return nil, fmt.Errorf("invalid scrape duration: %v, must be positive", c.ScrapeInterval) } s, err := newScraper(c.ScrapeInterval, nextConsumer, settings.Logger) if err != nil { return nil, fmt.Errorf("failed to create dockerstats scraper: %v", err) } return &Receiver{scraper: s}, nil } // NewFactory creates and returns a factory for the docker stats receiver. func NewFactory() component.ReceiverFactory { return component.NewReceiverFactory( typeStr, createDefaultConfig, component.WithMetricsReceiver(createMetricsReceiver)) }