Documentation ¶
Index ¶
Constants ¶
const ( // Label reserved to override the tenant ID while processing // pipeline stages ReservedLabelTenantID = "__tenant_id__" LatencyLabel = "filename" HostLabel = "host" ClientLabel = "client" TenantLabel = "tenant" ReasonLabel = "reason" ReasonGeneric = "ingester_error" ReasonRateLimited = "rate_limited" ReasonStreamLimited = "stream_limited" ReasonLineTooLong = "line_too_long" )
const ( BatchWait = 1 * time.Second BatchSize int = 1024 * 1024 MinBackoff = 500 * time.Millisecond MaxBackoff = 5 * time.Minute MaxRetries int = 10 Timeout = 10 * time.Second )
NOTE the helm chart for promtail and fluent-bit also have defaults for these values, please update to match if you make changes here.
Variables ¶
var (
// NilNotifier is a no-op WriterEventsNotifier.
NilNotifier = nilNotifier{}
)
var Reasons = []string{ReasonGeneric, ReasonRateLimited, ReasonStreamLimited, ReasonLineTooLong}
var UserAgent = fmt.Sprintf("promtail/%s", build.Version)
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client interface { api.EntryHandler // Stop goroutine sending batch of entries without retries. StopNow() Name() string }
Client pushes entries to Loki and can be stopped
func New ¶
func New(metrics *Metrics, cfg Config, maxStreams, maxLineSize int, maxLineSizeTruncate bool, logger log.Logger) (Client, error)
New makes a new Client.
type Config ¶
type Config struct { Name string `yaml:"name,omitempty"` URL flagext.URLValue BatchWait time.Duration `yaml:"batchwait"` BatchSize int `yaml:"batchsize"` Client config.HTTPClientConfig `yaml:",inline"` Headers map[string]string `yaml:"headers,omitempty"` BackoffConfig backoff.Config `yaml:"backoff_config"` // The labels to add to any time series or alerts when communicating with loki ExternalLabels lokiflag.LabelSet `yaml:"external_labels,omitempty"` Timeout time.Duration `yaml:"timeout"` // The tenant ID to use when pushing logs to Loki (empty string means // single tenant mode) TenantID string `yaml:"tenant_id"` // When enabled, Promtail will not retry batches that get a // 429 'Too Many Requests' response from the distributor. Helps // prevent HOL blocking in multitenant deployments. DropRateLimitedBatches bool `yaml:"drop_rate_limited_batches"` }
Config describes configuration for an HTTP pusher client.
func (*Config) RegisterFlags ¶
RegisterFlags registers flags.
func (*Config) RegisterFlagsWithPrefix ¶
RegisterFlags with prefix registers flags where every name is prefixed by prefix. If prefix is a non-empty string, prefix should end with a period.
func (*Config) UnmarshalYAML ¶
UnmarshalYAML implement Yaml Unmarshaler
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager manages remote write client instantiation, and connects the related components to orchestrate the flow of api.Entry from the scrape targets, to the remote write clients themselves.
Right now it just supports instantiating the WAL writer side of the future-to-be WAL enabled client. In follow-up work, tracked in https://github.com/grafana/loki/issues/8197, this Manager will be responsible for instantiating all client types: Logger, Multi and WAL.
func NewManager ¶
func NewManager(metrics *Metrics, logger log.Logger, limits limit.Config, reg prometheus.Registerer, walCfg wal.Config, notifier WriterEventsNotifier, clientCfgs ...Config) (*Manager, error)
NewManager creates a new Manager
type Metrics ¶
type Metrics struct {
// contains filtered or unexported fields
}
func NewMetrics ¶
func NewMetrics(reg prometheus.Registerer) *Metrics
type Tripperware ¶
type Tripperware func(http.RoundTripper) http.RoundTripper
Tripperware can wrap a roundtripper.
type WriterEventsNotifier ¶
type WriterEventsNotifier interface { SubscribeCleanup(subscriber wal.CleanupEventSubscriber) SubscribeWrite(subscriber wal.WriteEventSubscriber) }
WriterEventsNotifier implements a notifier that's received by the Manager, to which wal.Watcher can subscribe for writer events.