Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func HashringFromConfig ¶
func HashringFromConfig(ctx context.Context, updates chan<- Hashring, cw *ConfigWatcher)
HashringFromConfig creates multi-tenant hashrings from a hashring configuration file watcher. The configuration file is watched for updates. Hashrings are returned on the updates channel. Which hashring to use for a tenant is determined by the tenants field of the hashring configuration.
Types ¶
type Appendable ¶
Appendable returns an Appender.
type ConfigWatcher ¶
type ConfigWatcher struct {
// contains filtered or unexported fields
}
ConfigWatcher is able to watch a file containing a hashring configuration for updates.
func NewConfigWatcher ¶
func NewConfigWatcher(logger log.Logger, r prometheus.Registerer, path string, interval model.Duration) (*ConfigWatcher, error)
NewConfigWatcher creates a new ConfigWatcher.
func (*ConfigWatcher) C ¶
func (cw *ConfigWatcher) C() <-chan []HashringConfig
C returns a chan that gets hashring configuration updates.
func (*ConfigWatcher) Run ¶
func (cw *ConfigWatcher) Run(ctx context.Context)
Run starts the ConfigWatcher until the given context is cancelled.
type Handler ¶
type Handler struct {
// contains filtered or unexported fields
}
Handler serves a Prometheus remote write receiving HTTP endpoint.
func (*Handler) Hashring ¶
Hashring sets the hashring for the handler and marks the hashring as ready. If the hashring is nil, then the hashring is marked as not ready.
func (*Handler) StorageReady ¶
func (h *Handler) StorageReady()
StorageReady marks the storage as ready.
type Hashring ¶
type Hashring interface { // Get returns the first node that should handle the given tenant and time series. Get(tenant string, timeSeries *prompb.TimeSeries) (string, error) // GetN returns the nth node that should handle the given tenant and time series. GetN(tenant string, timeSeries *prompb.TimeSeries, n uint64) (string, error) }
Hashring finds the correct node to handle a given time series for a specified tenant. It returns the node and any error encountered.
type HashringConfig ¶
type HashringConfig struct { Hashring string `json:"hashring,omitempty"` Tenants []string `json:"tenants,omitempty"` Endpoints []string `json:"endpoints"` }
HashringConfig represents the configuration for a hashring a receive node knows about.
type Options ¶
type Options struct { Receiver *Writer ListenAddress string Registry prometheus.Registerer ReadyStorage *promtsdb.ReadyStorage Endpoint string TenantHeader string ReplicaHeader string ReplicationFactor uint64 }
Options for the web Handler.
type SingleNodeHashring ¶
type SingleNodeHashring string
SingleNodeHashring always returns the same node.
func (SingleNodeHashring) Get ¶
func (s SingleNodeHashring) Get(tenant string, ts *prompb.TimeSeries) (string, error)
Get implements the Hashring interface.
func (SingleNodeHashring) GetN ¶
func (s SingleNodeHashring) GetN(_ string, _ *prompb.TimeSeries, n uint64) (string, error)
GetN implements the Hashring interface.