Like Prometheus, but for logs.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
loki/pkg/dataobj/consumer/config.go

55 lines
1.7 KiB

package consumer
import (
"errors"
"flag"
"time"
"github.com/grafana/dskit/ring"
"github.com/grafana/loki/v3/pkg/dataobj/consumer/logsobj"
"github.com/grafana/loki/v3/pkg/dataobj/uploader"
"github.com/grafana/loki/v3/pkg/kafka/partitionring"
util_log "github.com/grafana/loki/v3/pkg/util/log"
)
type Config struct {
logsobj.BuilderConfig
LifecyclerConfig ring.LifecyclerConfig `yaml:"lifecycler,omitempty"`
PartitionRingConfig partitionring.Config `yaml:"partition_ring" category:"experimental"`
UploaderConfig uploader.Config `yaml:"uploader"`
IdleFlushTimeout time.Duration `yaml:"idle_flush_timeout"`
// This is temporary until we move to kafkav2.
Topic string `yaml:"topic"`
}
func (cfg *Config) Validate() error {
if err := cfg.BuilderConfig.Validate(); err != nil {
return err
}
if err := cfg.LifecyclerConfig.Validate(); err != nil {
return err
}
if err := cfg.UploaderConfig.Validate(); err != nil {
return err
}
if cfg.Topic == "" {
return errors.New("topic is required")
}
return nil
}
func (cfg *Config) RegisterFlags(f *flag.FlagSet) {
cfg.RegisterFlagsWithPrefix("dataobj-consumer.", f)
}
func (cfg *Config) RegisterFlagsWithPrefix(prefix string, f *flag.FlagSet) {
cfg.BuilderConfig.RegisterFlagsWithPrefix(prefix, f)
cfg.LifecyclerConfig.RegisterFlagsWithPrefix(prefix, f, util_log.Logger)
cfg.PartitionRingConfig.RegisterFlagsWithPrefix(prefix, f)
cfg.UploaderConfig.RegisterFlagsWithPrefix(prefix, f)
f.StringVar(&cfg.Topic, prefix+"topic", "", "The name of the Kafka topic")
f.DurationVar(&cfg.IdleFlushTimeout, prefix+"idle-flush-timeout", 60*60*time.Second, "The maximum amount of time to wait in seconds before flushing an object that is no longer receiving new writes")
}