opentelemetry_collector/receiver/nginxreceiver/factory.go (39 lines of code) (raw):
package nginxreceiver
import (
"context"
"time"
"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/config"
"go.opentelemetry.io/collector/consumer"
)
const (
typeStr = "nginxstats"
)
// CreateDefaultConfig creates the default configuration for the receiver.
func createDefaultConfig() config.Receiver {
return &Config{
ReceiverSettings: config.NewReceiverSettings(config.NewComponentID(typeStr)),
ExportInterval: time.Minute,
}
}
// CreateMetricsReceiver creates a metrics receiver based on the provided config.
func createMetricsReceiver(
ctx context.Context,
params component.ReceiverCreateSettings,
config config.Receiver,
consumer consumer.Metrics,
) (component.MetricsReceiver, error) {
cfg := config.(*Config)
collector, err := NewNginxStatsCollector(cfg.ExportInterval, cfg.StatsURL, params.Logger, consumer)
if err != nil {
return nil, err
}
receiver := &Receiver{
nginxStatsCollector: collector,
}
return receiver, nil
}
// NewFactory creates and returns a factory for the nginx receiver.
func NewFactory() component.ReceiverFactory {
return component.NewReceiverFactory(
typeStr,
createDefaultConfig,
component.WithMetricsReceiver(createMetricsReceiver))
}