Documentation ¶
Index ¶
- Constants
- Variables
- func EvaluatorUnsupportedType(expr Expr, ev Evaluator) error
- func IsComparisonOperator(op string) bool
- func IsLogicalBinOp(op string) bool
- func Match(xs []string) ([][]*labels.Matcher, error)
- func ParseAndValidateSeriesQuery(r *http.Request) (*logproto.SeriesRequest, error)
- func ParseLabels(lbs string) (labels.Labels, error)
- func ParseMatchers(input string) ([]*labels.Matcher, error)
- func PopulateMatrixFromScalar(data promql.Scalar, params Params) promql.Matrix
- func QueryType(query string) (string, error)
- func RecordMetrics(ctx context.Context, p Params, status string, stats logql_stats.Result, ...)
- func ResultIterator(res logqlmodel.Result, params Params) (iter.EntryIterator, error)
- type BinOpExpr
- type BinOpOptions
- type ConcatLogSelectorExpr
- type ConcatSampleExpr
- type DefaultEvaluator
- type DownstreamEvaluator
- func (ev DownstreamEvaluator) Downstream(ctx context.Context, queries []DownstreamQuery) ([]logqlmodel.Result, error)
- func (ev *DownstreamEvaluator) Iterator(ctx context.Context, expr LogSelectorExpr, params Params) (iter.EntryIterator, error)
- func (ev *DownstreamEvaluator) StepEvaluator(ctx context.Context, nextEv SampleEvaluator, expr SampleExpr, params Params) (StepEvaluator, error)
- type DownstreamLogSelectorExpr
- type DownstreamQuery
- type DownstreamSampleExpr
- type Downstreamable
- type Downstreamer
- type Engine
- type EngineOpts
- type EntryEvaluator
- type Evaluator
- type Expr
- type Grouping
- type JSONExpressionParser
- type LabelFilterExpr
- type LabelFmtExpr
- type LabelParserExpr
- type LabelReplaceExpr
- type Limits
- type LineFilterExpr
- type LineFmtExpr
- type LiteralExpr
- func (e *LiteralExpr) Extractor() (log.SampleExtractor, error)
- func (e *LiteralExpr) HasFilter() bool
- func (e *LiteralExpr) Matchers() []*labels.Matcher
- func (e *LiteralExpr) Pipeline() (log.Pipeline, error)
- func (e *LiteralExpr) Selector() LogSelectorExpr
- func (e *LiteralExpr) Shardable() bool
- func (e *LiteralExpr) String() string
- func (e *LiteralExpr) Value() float64
- func (e *LiteralExpr) Walk(f WalkFn)
- type LiteralParams
- func (p LiteralParams) Copy() LiteralParams
- func (p LiteralParams) Direction() logproto.Direction
- func (p LiteralParams) End() time.Time
- func (p LiteralParams) Interval() time.Duration
- func (p LiteralParams) Limit() uint32
- func (p LiteralParams) Query() string
- func (p LiteralParams) Shards() []string
- func (p LiteralParams) Start() time.Time
- func (p LiteralParams) Step() time.Duration
- type LogPipelineExpr
- type LogRange
- type LogSelectorExpr
- type MatchersExpr
- func (e *MatchersExpr) AppendMatchers(m []*labels.Matcher)
- func (e *MatchersExpr) HasFilter() bool
- func (e *MatchersExpr) Matchers() []*labels.Matcher
- func (e *MatchersExpr) Pipeline() (log.Pipeline, error)
- func (e *MatchersExpr) Shardable() bool
- func (e *MatchersExpr) String() string
- func (e *MatchersExpr) Walk(f WalkFn)
- type MatrixStepper
- type MockDownstreamer
- type MockQuerier
- type MultiStageExpr
- type OffsetExpr
- type Params
- type Pipeline
- type PipelineExpr
- type Querier
- type Query
- type QueryParams
- type QueryRangeType
- type RangeAggregationExpr
- type RangeVectorAggregator
- type RangeVectorIterator
- type SampleEvaluator
- type SampleEvaluatorFunc
- type SampleExpr
- type SampleExtractor
- type SelectLogParams
- type SelectSampleParams
- type ShardMapper
- type ShardedEngine
- type ShardingMetrics
- type Shards
- type StageExpr
- type StepEvaluator
- type UnwrapExpr
- type VectorAggregationExpr
- type VectorMatchCardinality
- type VectorMatching
- type WalkFn
- type Walkable
Constants ¶
const ( // vector ops OpTypeSum = "sum" OpTypeAvg = "avg" OpTypeMax = "max" OpTypeMin = "min" OpTypeCount = "count" OpTypeStddev = "stddev" OpTypeStdvar = "stdvar" OpTypeBottomK = "bottomk" OpTypeTopK = "topk" // range vector ops OpRangeTypeCount = "count_over_time" OpRangeTypeRate = "rate" OpRangeTypeBytes = "bytes_over_time" OpRangeTypeBytesRate = "bytes_rate" OpRangeTypeAvg = "avg_over_time" OpRangeTypeSum = "sum_over_time" OpRangeTypeMin = "min_over_time" OpRangeTypeMax = "max_over_time" OpRangeTypeStdvar = "stdvar_over_time" OpRangeTypeStddev = "stddev_over_time" OpRangeTypeQuantile = "quantile_over_time" OpRangeTypeFirst = "first_over_time" OpRangeTypeLast = "last_over_time" OpRangeTypeAbsent = "absent_over_time" // binops - logical/set OpTypeOr = "or" OpTypeAnd = "and" OpTypeUnless = "unless" // binops - operations OpTypeAdd = "+" OpTypeSub = "-" OpTypeMul = "*" OpTypeDiv = "/" OpTypeMod = "%" OpTypePow = "^" // binops - comparison OpTypeCmpEQ = "==" OpTypeNEQ = "!=" OpTypeGT = ">" OpTypeGTE = ">=" OpTypeLT = "<" OpTypeLTE = "<=" // parsers OpParserTypeJSON = "json" OpParserTypeLogfmt = "logfmt" OpParserTypeRegexp = "regexp" OpParserTypeUnpack = "unpack" OpParserTypePattern = "pattern" OpFmtLine = "line_format" OpFmtLabel = "label_format" OpPipe = "|" OpUnwrap = "unwrap" OpOffset = "offset" OpOn = "on" OpIgnoring = "ignoring" OpGroupLeft = "group_left" OpGroupRight = "group_right" // conversion Op OpConvBytes = "bytes" OpConvDuration = "duration" OpConvDurationSeconds = "duration_seconds" OpLabelReplace = "label_replace" // function filters OpFilterIP = "ip" )
const ( BYTES = 57346 IDENTIFIER = 57347 STRING = 57348 NUMBER = 57349 DURATION = 57350 RANGE = 57351 MATCHERS = 57352 LABELS = 57353 EQ = 57354 RE = 57355 NRE = 57356 OPEN_BRACE = 57357 CLOSE_BRACE = 57358 OPEN_BRACKET = 57359 CLOSE_BRACKET = 57360 COMMA = 57361 DOT = 57362 PIPE_MATCH = 57363 PIPE_EXACT = 57364 OPEN_PARENTHESIS = 57365 CLOSE_PARENTHESIS = 57366 BY = 57367 WITHOUT = 57368 COUNT_OVER_TIME = 57369 RATE = 57370 SUM = 57371 AVG = 57372 MAX = 57373 MIN = 57374 COUNT = 57375 STDDEV = 57376 STDVAR = 57377 BOTTOMK = 57378 TOPK = 57379 BYTES_OVER_TIME = 57380 BYTES_RATE = 57381 BOOL = 57382 JSON = 57383 REGEXP = 57384 LOGFMT = 57385 PIPE = 57386 LINE_FMT = 57387 LABEL_FMT = 57388 UNWRAP = 57389 AVG_OVER_TIME = 57390 SUM_OVER_TIME = 57391 MIN_OVER_TIME = 57392 MAX_OVER_TIME = 57393 STDVAR_OVER_TIME = 57394 STDDEV_OVER_TIME = 57395 QUANTILE_OVER_TIME = 57396 BYTES_CONV = 57397 DURATION_CONV = 57398 DURATION_SECONDS_CONV = 57399 FIRST_OVER_TIME = 57400 LAST_OVER_TIME = 57401 ABSENT_OVER_TIME = 57402 LABEL_REPLACE = 57403 UNPACK = 57404 OFFSET = 57405 PATTERN = 57406 IP = 57407 ON = 57408 IGNORING = 57409 GROUP_LEFT = 57410 GROUP_RIGHT = 57411 OR = 57412 AND = 57413 UNLESS = 57414 CMP_EQ = 57415 NEQ = 57416 LT = 57417 LTE = 57418 GT = 57419 GTE = 57420 ADD = 57421 SUB = 57422 MUL = 57423 DIV = 57424 MOD = 57425 POW = 57426 )
const ( QueryTypeMetric = "metric" QueryTypeFilter = "filter" QueryTypeLimited = "limited" )
const ( StreamsKey = "streams" MetricsKey = "metrics" SuccessKey = "success" FailureKey = "failure" NoopKey = "noop" )
keys used in metrics
Variables ¶
var (
NoLimits = &fakeLimits{maxSeries: math.MaxInt32}
)
Functions ¶
func EvaluatorUnsupportedType ¶
EvaluatorUnsupportedType is a helper for signaling that an evaluator does not support an Expr type
func IsComparisonOperator ¶
func IsLogicalBinOp ¶
IsLogicalBinOp tests whether an operation is a logical/set binary operation
func ParseAndValidateSeriesQuery ¶
func ParseAndValidateSeriesQuery(r *http.Request) (*logproto.SeriesRequest, error)
func ParseLabels ¶
ParseLabels parses labels from a string using logql parser.
func ParseMatchers ¶
ParseMatchers parses a string and returns labels matchers, if the expression contains anything else it will return an error.
func RecordMetrics ¶
func RecordMetrics(ctx context.Context, p Params, status string, stats logql_stats.Result, result promql_parser.Value)
func ResultIterator ¶
func ResultIterator(res logqlmodel.Result, params Params) (iter.EntryIterator, error)
ResultIterator coerces a downstream streams result into an iter.EntryIterator
Types ¶
type BinOpExpr ¶
type BinOpExpr struct { SampleExpr RHS SampleExpr Op string Opts *BinOpOptions }
type BinOpOptions ¶
type BinOpOptions struct { ReturnBool bool VectorMatching *VectorMatching }
type ConcatLogSelectorExpr ¶
type ConcatLogSelectorExpr struct { DownstreamLogSelectorExpr // contains filtered or unexported fields }
ConcatLogSelectorExpr is an expr for concatenating multiple LogSelectorExpr
func (ConcatLogSelectorExpr) String ¶
func (c ConcatLogSelectorExpr) String() string
type ConcatSampleExpr ¶
type ConcatSampleExpr struct { DownstreamSampleExpr // contains filtered or unexported fields }
ConcatSampleExpr is an expr for concatenating multiple SampleExpr Contract: The embedded SampleExprs within a linked list of ConcatSampleExprs must be of the same structure. This makes special implementations of SampleExpr.Associative() unnecessary.
func (ConcatSampleExpr) String ¶
func (c ConcatSampleExpr) String() string
func (ConcatSampleExpr) Walk ¶
func (c ConcatSampleExpr) Walk(f WalkFn)
type DefaultEvaluator ¶
type DefaultEvaluator struct {
// contains filtered or unexported fields
}
func NewDefaultEvaluator ¶
func NewDefaultEvaluator(querier Querier, maxLookBackPeriod time.Duration) *DefaultEvaluator
NewDefaultEvaluator constructs a DefaultEvaluator
func (*DefaultEvaluator) Iterator ¶
func (ev *DefaultEvaluator) Iterator(ctx context.Context, expr LogSelectorExpr, q Params) (iter.EntryIterator, error)
func (*DefaultEvaluator) StepEvaluator ¶
func (ev *DefaultEvaluator) StepEvaluator( ctx context.Context, nextEv SampleEvaluator, expr SampleExpr, q Params, ) (StepEvaluator, error)
type DownstreamEvaluator ¶
type DownstreamEvaluator struct { Downstreamer // contains filtered or unexported fields }
DownstreamEvaluator is an evaluator which handles shard aware AST nodes
func NewDownstreamEvaluator ¶
func NewDownstreamEvaluator(downstreamer Downstreamer) *DownstreamEvaluator
func (DownstreamEvaluator) Downstream ¶
func (ev DownstreamEvaluator) Downstream(ctx context.Context, queries []DownstreamQuery) ([]logqlmodel.Result, error)
Downstream runs queries and collects stats from the embedded Downstreamer
func (*DownstreamEvaluator) Iterator ¶
func (ev *DownstreamEvaluator) Iterator( ctx context.Context, expr LogSelectorExpr, params Params, ) (iter.EntryIterator, error)
Iterator returns the iter.EntryIterator for a given LogSelectorExpr
func (*DownstreamEvaluator) StepEvaluator ¶
func (ev *DownstreamEvaluator) StepEvaluator( ctx context.Context, nextEv SampleEvaluator, expr SampleExpr, params Params, ) (StepEvaluator, error)
Evaluator returns a StepEvaluator for a given SampleExpr
type DownstreamLogSelectorExpr ¶
type DownstreamLogSelectorExpr struct { LogSelectorExpr // contains filtered or unexported fields }
DownstreamLogSelectorExpr is a LogSelectorExpr which signals downstream computation
func (DownstreamLogSelectorExpr) String ¶
func (d DownstreamLogSelectorExpr) String() string
type DownstreamQuery ¶
type DownstreamSampleExpr ¶
type DownstreamSampleExpr struct { SampleExpr // contains filtered or unexported fields }
DownstreamSampleExpr is a SampleExpr which signals downstream computation
func (DownstreamSampleExpr) String ¶
func (d DownstreamSampleExpr) String() string
func (DownstreamSampleExpr) Walk ¶
func (d DownstreamSampleExpr) Walk(f WalkFn)
type Downstreamable ¶
type Downstreamable interface {
Downstreamer() Downstreamer
}
type Downstreamer ¶
type Downstreamer interface {
Downstream(context.Context, []DownstreamQuery) ([]logqlmodel.Result, error)
}
Downstreamer is an interface for deferring responsibility for query execution. It is decoupled from but consumed by a downStreamEvaluator to dispatch ASTs.
type Engine ¶
type Engine struct {
// contains filtered or unexported fields
}
Engine is the LogQL engine.
type EngineOpts ¶
type EngineOpts struct { // Timeout for queries execution Timeout time.Duration `yaml:"timeout"` // MaxLookBackPeriod is the maximum amount of time to look back for log lines. // only used for instant log queries. MaxLookBackPeriod time.Duration `yaml:"max_look_back_period"` }
EngineOpts is the list of options to use with the LogQL query engine.
func (*EngineOpts) RegisterFlagsWithPrefix ¶
func (opts *EngineOpts) RegisterFlagsWithPrefix(prefix string, f *flag.FlagSet)
type EntryEvaluator ¶
type EntryEvaluator interface { // Iterator returns the iter.EntryIterator for a given LogSelectorExpr Iterator(context.Context, LogSelectorExpr, Params) (iter.EntryIterator, error) }
type Evaluator ¶
type Evaluator interface { SampleEvaluator EntryEvaluator }
Evaluator is an interface for iterating over data at different nodes in the AST
type Expr ¶
type Expr interface { Shardable() bool // A recursive check on the AST to see if it's shardable. Walkable fmt.Stringer // contains filtered or unexported methods }
Expr is the root expression which can be a SampleExpr or LogSelectorExpr
type JSONExpressionParser ¶
type JSONExpressionParser struct { Expressions []log.JSONExpression // contains filtered or unexported fields }
func (*JSONExpressionParser) Shardable ¶
func (j *JSONExpressionParser) Shardable() bool
func (*JSONExpressionParser) String ¶
func (j *JSONExpressionParser) String() string
func (*JSONExpressionParser) Walk ¶
func (j *JSONExpressionParser) Walk(f WalkFn)
type LabelFilterExpr ¶
type LabelFilterExpr struct { log.LabelFilterer // contains filtered or unexported fields }
func (*LabelFilterExpr) Shardable ¶
func (e *LabelFilterExpr) Shardable() bool
func (*LabelFilterExpr) String ¶
func (e *LabelFilterExpr) String() string
func (*LabelFilterExpr) Walk ¶
func (e *LabelFilterExpr) Walk(f WalkFn)
type LabelFmtExpr ¶
func (*LabelFmtExpr) Shardable ¶
func (e *LabelFmtExpr) Shardable() bool
func (*LabelFmtExpr) String ¶
func (e *LabelFmtExpr) String() string
func (*LabelFmtExpr) Walk ¶
func (e *LabelFmtExpr) Walk(f WalkFn)
type LabelParserExpr ¶
func (*LabelParserExpr) Shardable ¶
func (e *LabelParserExpr) Shardable() bool
func (*LabelParserExpr) String ¶
func (e *LabelParserExpr) String() string
func (*LabelParserExpr) Walk ¶
func (e *LabelParserExpr) Walk(f WalkFn)
type LabelReplaceExpr ¶
type LabelReplaceExpr struct { Left SampleExpr Dst string Replacement string Src string Regex string Re *regexp.Regexp // contains filtered or unexported fields }
func (*LabelReplaceExpr) Extractor ¶
func (e *LabelReplaceExpr) Extractor() (SampleExtractor, error)
func (*LabelReplaceExpr) Selector ¶
func (e *LabelReplaceExpr) Selector() LogSelectorExpr
func (*LabelReplaceExpr) Shardable ¶
func (e *LabelReplaceExpr) Shardable() bool
func (*LabelReplaceExpr) String ¶
func (e *LabelReplaceExpr) String() string
func (*LabelReplaceExpr) Walk ¶
func (e *LabelReplaceExpr) Walk(f WalkFn)
type LineFilterExpr ¶
type LineFilterExpr struct { Left *LineFilterExpr Ty labels.MatchType Match string Op string // contains filtered or unexported fields }
func (*LineFilterExpr) Shardable ¶
func (e *LineFilterExpr) Shardable() bool
func (*LineFilterExpr) String ¶
func (e *LineFilterExpr) String() string
func (*LineFilterExpr) Walk ¶
func (e *LineFilterExpr) Walk(f WalkFn)
type LineFmtExpr ¶
type LineFmtExpr struct { Value string // contains filtered or unexported fields }
func (*LineFmtExpr) Shardable ¶
func (e *LineFmtExpr) Shardable() bool
func (*LineFmtExpr) String ¶
func (e *LineFmtExpr) String() string
func (*LineFmtExpr) Walk ¶
func (e *LineFmtExpr) Walk(f WalkFn)
type LiteralExpr ¶
type LiteralExpr struct {
// contains filtered or unexported fields
}
func (*LiteralExpr) Extractor ¶
func (e *LiteralExpr) Extractor() (log.SampleExtractor, error)
func (*LiteralExpr) HasFilter ¶
func (e *LiteralExpr) HasFilter() bool
func (*LiteralExpr) Matchers ¶
func (e *LiteralExpr) Matchers() []*labels.Matcher
func (*LiteralExpr) Selector ¶
func (e *LiteralExpr) Selector() LogSelectorExpr
literlExpr impls SampleExpr & LogSelectorExpr mainly to reduce the need for more complicated typings to facilitate sum types. We'll be type switching when evaluating them anyways and they will only be present in binary operation legs.
func (*LiteralExpr) Shardable ¶
func (e *LiteralExpr) Shardable() bool
func (*LiteralExpr) String ¶
func (e *LiteralExpr) String() string
func (*LiteralExpr) Value ¶
func (e *LiteralExpr) Value() float64
func (*LiteralExpr) Walk ¶
func (e *LiteralExpr) Walk(f WalkFn)
type LiteralParams ¶
type LiteralParams struct {
// contains filtered or unexported fields
}
LiteralParams impls Params
func NewLiteralParams ¶
func (LiteralParams) Copy ¶
func (p LiteralParams) Copy() LiteralParams
func (LiteralParams) Direction ¶
func (p LiteralParams) Direction() logproto.Direction
Direction impls Params
func (LiteralParams) Interval ¶
func (p LiteralParams) Interval() time.Duration
Interval impls Params
type LogPipelineExpr ¶
LogPipelineExpr is an expression defining a log pipeline.
type LogRange ¶
type LogRange struct { Left LogSelectorExpr Interval time.Duration Offset time.Duration Unwrap *UnwrapExpr // contains filtered or unexported fields }
type LogSelectorExpr ¶
type LogSelectorExpr interface { Matchers() []*labels.Matcher LogPipelineExpr HasFilter() bool Expr }
LogSelectorExpr is a LogQL expression filtering and returning logs.
func AddFilterExpr ¶
func AddFilterExpr(expr LogSelectorExpr, ty labels.MatchType, op, match string) (LogSelectorExpr, error)
AddFilterExpr adds a filter expression to a logselector expression.
func ParseLogSelector ¶
func ParseLogSelector(input string, validate bool) (LogSelectorExpr, error)
ParseLogSelector parses a log selector expression `{app="foo"} |= "filter"`
type MatchersExpr ¶
type MatchersExpr struct {
// contains filtered or unexported fields
}
func (*MatchersExpr) AppendMatchers ¶
func (e *MatchersExpr) AppendMatchers(m []*labels.Matcher)
func (*MatchersExpr) HasFilter ¶
func (e *MatchersExpr) HasFilter() bool
func (*MatchersExpr) Matchers ¶
func (e *MatchersExpr) Matchers() []*labels.Matcher
func (*MatchersExpr) Shardable ¶
func (e *MatchersExpr) Shardable() bool
func (*MatchersExpr) String ¶
func (e *MatchersExpr) String() string
func (*MatchersExpr) Walk ¶
func (e *MatchersExpr) Walk(f WalkFn)
type MatrixStepper ¶
type MatrixStepper struct {
// contains filtered or unexported fields
}
MatrixStepper exposes a promql.Matrix as a StepEvaluator. Ensure that the resulting StepEvaluator maintains the same shape that the parameters expect. For example, it's possible that a downstream query returns matches no log streams and thus returns an empty matrix. However, we still need to ensure that it can be merged effectively with another leg that may match series. Therefore, we determine our steps from the parameters and not the underlying Matrix.
func NewMatrixStepper ¶
func (*MatrixStepper) Close ¶
func (m *MatrixStepper) Close() error
func (*MatrixStepper) Error ¶
func (m *MatrixStepper) Error() error
type MockDownstreamer ¶
type MockDownstreamer struct {
*Engine
}
func (MockDownstreamer) Downstream ¶
func (m MockDownstreamer) Downstream(ctx context.Context, queries []DownstreamQuery) ([]logqlmodel.Result, error)
func (MockDownstreamer) Downstreamer ¶
func (m MockDownstreamer) Downstreamer() Downstreamer
type MockQuerier ¶
type MockQuerier struct {
// contains filtered or unexported fields
}
Shard aware mock querier
func NewMockQuerier ¶
func NewMockQuerier(shards int, streams []logproto.Stream) MockQuerier
func (MockQuerier) SelectLogs ¶
func (q MockQuerier) SelectLogs(ctx context.Context, req SelectLogParams) (iter.EntryIterator, error)
func (MockQuerier) SelectSamples ¶
func (q MockQuerier) SelectSamples(ctx context.Context, req SelectSampleParams) (iter.SampleIterator, error)
type MultiStageExpr ¶
type MultiStageExpr []StageExpr
MultiStageExpr is multiple stages which implement a PipelineExpr.
func (MultiStageExpr) String ¶
func (m MultiStageExpr) String() string
type OffsetExpr ¶
func (*OffsetExpr) String ¶
func (o *OffsetExpr) String() string
type Params ¶
type Params interface { Query() string Start() time.Time End() time.Time Step() time.Duration Interval() time.Duration Limit() uint32 Direction() logproto.Direction Shards() []string }
Params details the parameters associated with a loki request
type PipelineExpr ¶
type PipelineExpr struct { MultiStages MultiStageExpr Left *MatchersExpr // contains filtered or unexported fields }
func (*PipelineExpr) HasFilter ¶
func (e *PipelineExpr) HasFilter() bool
HasFilter returns true if the pipeline contains stage that can filter out lines.
func (*PipelineExpr) Matchers ¶
func (e *PipelineExpr) Matchers() []*labels.Matcher
func (*PipelineExpr) Shardable ¶
func (e *PipelineExpr) Shardable() bool
func (*PipelineExpr) String ¶
func (e *PipelineExpr) String() string
func (*PipelineExpr) Walk ¶
func (e *PipelineExpr) Walk(f WalkFn)
type Querier ¶
type Querier interface { SelectLogs(context.Context, SelectLogParams) (iter.EntryIterator, error) SelectSamples(context.Context, SelectSampleParams) (iter.SampleIterator, error) }
Querier allows a LogQL expression to fetch an EntryIterator for a set of matchers and filters
type Query ¶
type Query interface { // Exec processes the query. Exec(ctx context.Context) (logqlmodel.Result, error) }
Query is a LogQL query to be executed.
type QueryParams ¶
type QueryRangeType ¶
type QueryRangeType string
var ( InstantType QueryRangeType = "instant" RangeType QueryRangeType = "range" )
func GetRangeType ¶
func GetRangeType(q Params) QueryRangeType
GetRangeType returns whether a query is an instant query or range query
type RangeAggregationExpr ¶
type RangeAggregationExpr struct { Left *LogRange Operation string Params *float64 Grouping *Grouping // contains filtered or unexported fields }
func (RangeAggregationExpr) Extractor ¶
func (r RangeAggregationExpr) Extractor() (log.SampleExtractor, error)
func (*RangeAggregationExpr) Selector ¶
func (e *RangeAggregationExpr) Selector() LogSelectorExpr
func (*RangeAggregationExpr) Shardable ¶
func (e *RangeAggregationExpr) Shardable() bool
impl SampleExpr
func (*RangeAggregationExpr) Walk ¶
func (e *RangeAggregationExpr) Walk(f WalkFn)
type RangeVectorAggregator ¶
RangeVectorAggregator aggregates samples for a given range of samples. It receives the current milliseconds timestamp and the list of point within the range.
type RangeVectorIterator ¶
type RangeVectorIterator interface { Next() bool At(aggregator RangeVectorAggregator) (int64, promql.Vector) Close() error Error() error }
RangeVectorIterator iterates through a range of samples. To fetch the current vector use `At` with a `RangeVectorAggregator`.
type SampleEvaluator ¶
type SampleEvaluator interface { // StepEvaluator returns a StepEvaluator for a given SampleExpr. It's explicitly passed another StepEvaluator// in order to enable arbitrary computation of embedded expressions. This allows more modular & extensible // StepEvaluator implementations which can be composed. StepEvaluator(ctx context.Context, nextEvaluator SampleEvaluator, expr SampleExpr, p Params) (StepEvaluator, error) }
type SampleEvaluatorFunc ¶
type SampleEvaluatorFunc func(ctx context.Context, nextEvaluator SampleEvaluator, expr SampleExpr, p Params) (StepEvaluator, error)
func (SampleEvaluatorFunc) StepEvaluator ¶
func (s SampleEvaluatorFunc) StepEvaluator(ctx context.Context, nextEvaluator SampleEvaluator, expr SampleExpr, p Params) (StepEvaluator, error)
type SampleExpr ¶
type SampleExpr interface { // Selector is the LogQL selector to apply when retrieving logs. Selector() LogSelectorExpr Extractor() (SampleExtractor, error) Expr }
SampleExpr is a LogQL expression filtering logs and returning metric samples.
func ParseSampleExpr ¶
func ParseSampleExpr(input string) (SampleExpr, error)
ParseSampleExpr parses a string and returns the sampleExpr
type SampleExtractor ¶
type SampleExtractor = log.SampleExtractor
Type alias for backward compatibility
type SelectLogParams ¶
type SelectLogParams struct {
*logproto.QueryRequest
}
SelectParams specifies parameters passed to data selections.
func (SelectLogParams) LogSelector ¶
func (s SelectLogParams) LogSelector() (LogSelectorExpr, error)
LogSelector returns the LogSelectorExpr from the SelectParams. The `LogSelectorExpr` can then returns all matchers and filters to use for that request.
func (SelectLogParams) String ¶
func (s SelectLogParams) String() string
type SelectSampleParams ¶
type SelectSampleParams struct {
*logproto.SampleQueryRequest
}
func (SelectSampleParams) Expr ¶
func (s SelectSampleParams) Expr() (SampleExpr, error)
Expr returns the SampleExpr from the SelectSampleParams. The `LogSelectorExpr` can then returns all matchers and filters to use for that request.
func (SelectSampleParams) LogSelector ¶
func (s SelectSampleParams) LogSelector() (LogSelectorExpr, error)
LogSelector returns the LogSelectorExpr from the SelectParams. The `LogSelectorExpr` can then returns all matchers and filters to use for that request.
type ShardMapper ¶
type ShardMapper struct {
// contains filtered or unexported fields
}
func NewShardMapper ¶
func NewShardMapper(shards int, metrics *ShardingMetrics) (ShardMapper, error)
type ShardedEngine ¶
type ShardedEngine struct {
// contains filtered or unexported fields
}
ShardedEngine is an Engine implementation that can split queries into more parallelizable forms via querying the underlying backend shards individually and reaggregating them.
func NewShardedEngine ¶
func NewShardedEngine(opts EngineOpts, downstreamable Downstreamable, metrics *ShardingMetrics, limits Limits, logger log.Logger) *ShardedEngine
NewShardedEngine constructs a *ShardedEngine
type ShardingMetrics ¶
type ShardingMetrics struct { Shards *prometheus.CounterVec // sharded queries total, partitioned by (streams/metric) ShardFactor prometheus.Histogram // per request shard factor // contains filtered or unexported fields }
ShardingMetrics is the metrics wrapper used in shard mapping
func NewShardingMetrics ¶
func NewShardingMetrics(registerer prometheus.Registerer) *ShardingMetrics
type Shards ¶
type Shards []astmapper.ShardAnnotation
func ParseShards ¶
ParseShards parses a list of string encoded shards
type StepEvaluator ¶
type StepEvaluator interface { // while Next returns a promql.Value, the only acceptable types are Scalar and Vector. Next() (ok bool, ts int64, vec promql.Vector) // Close all resources used. Close() error // Reports any error Error() error }
StepEvaluator evaluate a single step of a query.
func ConcatEvaluator ¶
func ConcatEvaluator(evaluators []StepEvaluator) (StepEvaluator, error)
ConcatEvaluator joins multiple StepEvaluators. Contract: They must be of identical start, end, and step values.
func ResultStepEvaluator ¶
func ResultStepEvaluator(res logqlmodel.Result, params Params) (StepEvaluator, error)
ResultStepEvaluator coerces a downstream vector or matrix into a StepEvaluator
type UnwrapExpr ¶
type UnwrapExpr struct { Identifier string Operation string PostFilters []log.LabelFilterer }
func (UnwrapExpr) String ¶
func (u UnwrapExpr) String() string
type VectorAggregationExpr ¶
type VectorAggregationExpr struct { Left SampleExpr Grouping *Grouping Params int Operation string // contains filtered or unexported fields }
func (*VectorAggregationExpr) Extractor ¶
func (e *VectorAggregationExpr) Extractor() (log.SampleExtractor, error)
func (*VectorAggregationExpr) Selector ¶
func (e *VectorAggregationExpr) Selector() LogSelectorExpr
func (*VectorAggregationExpr) Shardable ¶
func (e *VectorAggregationExpr) Shardable() bool
impl SampleExpr
func (*VectorAggregationExpr) String ¶
func (e *VectorAggregationExpr) String() string
func (*VectorAggregationExpr) Walk ¶
func (e *VectorAggregationExpr) Walk(f WalkFn)
type VectorMatchCardinality ¶
type VectorMatchCardinality int
VectorMatchCardinality describes the cardinality relationship of two Vectors in a binary operation.
const ( CardOneToOne VectorMatchCardinality = iota CardManyToOne CardOneToMany )
func (VectorMatchCardinality) String ¶
func (vmc VectorMatchCardinality) String() string
type VectorMatching ¶
type VectorMatching struct { // The cardinality of the two Vectors. Card VectorMatchCardinality // MatchingLabels contains the labels which define equality of a pair of // elements from the Vectors. MatchingLabels []string // On includes the given label names from matching, // rather than excluding them. On bool // Include contains additional labels that should be included in // the result from the side with the lower cardinality. Include []string }
VectorMatching describes how elements from two Vectors in a binary operation are supposed to be matched.