Documentation
¶
Index ¶
Constants ¶
const (
ProfileName = "__name__"
)
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Config ¶
type Config struct {
PushTimeout time.Duration
PoolConfig clientpool.PoolConfig `yaml:"pool_config,omitempty"`
// Distributors ring
DistributorRing RingConfig `yaml:"ring" doc:"hidden"`
}
Config for a Distributor.
func (*Config) RegisterFlags ¶
RegisterFlags registers distributor-related flags.
type Distributor ¶
Distributor coordinates replicates and distribution of log streams.
func New ¶
func New(cfg Config, ingestersRing ring.ReadRing, factory ring_client.PoolFactory, limits Limits, reg prometheus.Registerer, logger log.Logger, clientsOptions ...connect.ClientOption) (*Distributor, error)
func (*Distributor) HealthyInstancesCount ¶
func (d *Distributor) HealthyInstancesCount() int
HealthyInstancesCount implements the ReadLifecycler interface
We use a ring lifecycler delegate to count the number of members of the ring. The count is then used to enforce rate limiting correctly for each distributor. $EFFECTIVE_RATE_LIMIT = $GLOBAL_RATE_LIMIT / $NUM_INSTANCES
func (*Distributor) Push ¶
func (d *Distributor) Push(ctx context.Context, req *connect.Request[pushv1.PushRequest]) (*connect.Response[pushv1.PushResponse], error)
func (*Distributor) ServeHTTP ¶
func (d *Distributor) ServeHTTP(w http.ResponseWriter, req *http.Request)
type Limits ¶
type Limits interface {
IngestionRateBytes(tenantID string) float64
IngestionBurstSizeBytes(tenantID string) int
IngestionTenantShardSize(tenantID string) int
MaxLabelNameLength(tenantID string) int
MaxLabelValueLength(tenantID string) int
MaxLabelNamesPerSeries(tenantID string) int
MaxProfileSizeBytes(userID string) int
MaxProfileStacktraceSamples(userID string) int
MaxProfileStacktraceSampleLabels(userID string) int
MaxProfileStacktraceDepth(userID string) int
MaxProfileSymbolValueLength(userID string) int
}
type PushClient ¶
type PushClient interface {
Push(context.Context, *connect.Request[pushv1.PushRequest]) (*connect.Response[pushv1.PushResponse], error)
}
type ReadLifecycler ¶
type ReadLifecycler interface {
HealthyInstancesCount() int
}
ReadLifecycler represents the read interface to the lifecycler.
type RingConfig ¶
type RingConfig struct {
KVStore kv.Config `yaml:"kvstore"`
HeartbeatPeriod time.Duration `yaml:"heartbeat_period"`
HeartbeatTimeout time.Duration `yaml:"heartbeat_timeout"`
// Instance details
InstanceID string `yaml:"instance_id" doc:"default=<hostname>"`
InstanceInterfaceNames []string `yaml:"instance_interface_names" doc:"default=[<private network interfaces>]"`
InstancePort int `yaml:"instance_port" doc:"hidden"`
InstanceAddr string `yaml:"instance_addr" doc:"hidden"`
// Injected internally
ListenPort int `yaml:"-"`
}
RingConfig masks the ring lifecycler config which contains many options not really required by the distributors ring. This config is used to strip down the config to the minimum, and avoid confusion to the user.
func (*RingConfig) RegisterFlags ¶
func (cfg *RingConfig) RegisterFlags(f *flag.FlagSet)
RegisterFlags adds the flags required to config this to the given FlagSet
func (*RingConfig) ToBasicLifecyclerConfig ¶
func (cfg *RingConfig) ToBasicLifecyclerConfig(logger log.Logger) (ring.BasicLifecyclerConfig, error)
func (*RingConfig) ToRingConfig ¶
func (cfg *RingConfig) ToRingConfig() ring.Config