Documentation ¶
Overview ¶
Package logql contains LogQL parser and AST definitions.
Index ¶
- Constants
- func IsValidLabel[S ~string | ~[]byte](s S, allowDot bool) error
- type BinOp
- type BinOpExpr
- type BinOpModifier
- type BytesFilter
- type DecolorizeExpr
- type DistinctFilter
- type DropLabelsExpr
- type DurationFilter
- type ExplainExpr
- type Expr
- type Grouping
- type IPFilter
- type JSONExpressionParser
- type KeepLabelsExpr
- type Label
- type LabelExtractionExpr
- type LabelFilter
- type LabelFormatExpr
- type LabelMatcher
- type LabelPredicate
- type LabelPredicateBinOp
- type LabelPredicateParen
- type LabelReplaceExpr
- type LabelTemplate
- type LineFilter
- type LineFilterValue
- type LineFormat
- type LiteralExpr
- type LogExpr
- type LogRangeExpr
- type LogfmtExpressionParser
- type LogfmtFlags
- type MetricExpr
- type NumberFilter
- type OffsetExpr
- type ParenExpr
- type ParseError
- type ParseOptions
- type PatternLabelParser
- type PipelineStage
- type RangeAggregationExpr
- type RangeOp
- type RegexpLabelParser
- type RenameLabel
- type Selector
- type UnpackLabelParser
- type UnwrapExpr
- type VectorAggregationExpr
- type VectorExpr
- type VectorOp
Constants ¶
const ( // ErrorLabel is a specific label for LogQL errors. ErrorLabel = "__error__" // ErrorDetailsLabel is a specific label for LogQL error details. ErrorDetailsLabel = "__error_details__" )
Variables ¶
This section is empty.
Functions ¶
Types ¶
type BinOp ¶
type BinOp int
BinOp defines binary operation.
func (BinOp) IsRightAssoc ¶ added in v0.10.0
IsRightAssoc whether if operator is right-associative.
func (BinOp) Precedence ¶ added in v0.0.8
Precedence returns operator precedence.
type BinOpExpr ¶
type BinOpExpr struct { Left MetricExpr Op BinOp Modifier BinOpModifier Right MetricExpr }
BinOpExpr defines a binary operation between two Expr.
type BinOpModifier ¶
type BinOpModifier struct { Op string // on, ignoring OpLabels []Label Group string // "", "left", "right" Include []Label ReturnBool bool }
BinOpModifier defines BinOpExpr modifier.
FIXME(tdakkota): this feature is not well documented.
type BytesFilter ¶
type BytesFilter struct { Label Label Op BinOp // OpEq, OpNotEq, OpLt, OpLte, OpGt, OpGte Value uint64 }
BytesFilter is a byte size filtering predicate (`size > 10gb`).
func (BytesFilter) String ¶ added in v0.14.0
func (m BytesFilter) String() string
String implements fmt.Stringer.
type DistinctFilter ¶
type DistinctFilter struct {
Labels []Label
}
DistinctFilter filters out lines with duplicate label values.
FIXME(tdakkota): this stage is undocumented.
type DropLabelsExpr ¶
type DropLabelsExpr struct { Labels []Label Matchers []LabelMatcher }
DropLabelsExpr drops given labels in a pipeline (i.e. deny list).
type DurationFilter ¶
type DurationFilter struct { Label Label Op BinOp // OpEq, OpNotEq, OpLt, OpLte, OpGt, OpGte Value time.Duration }
DurationFilter is a duration filtering predicate (`elapsed > 10s`).
func (DurationFilter) String ¶ added in v0.14.0
func (m DurationFilter) String() string
String implements fmt.Stringer.
type ExplainExpr ¶ added in v0.14.0
type ExplainExpr struct {
X Expr
}
ExplainExpr is a wrapper around Expr to explain.
type Expr ¶
type Expr interface {
// contains filtered or unexported methods
}
Expr is a root LogQL expression.
func Parse ¶
func Parse(s string, opts ParseOptions) (Expr, error)
Parse parses LogQL query from string.
func UnparenExpr ¶
UnparenExpr recursively extracts expression from parentheses.
type IPFilter ¶
IPFilter is a IP filtering predicate (`addr = ip("127.0.0.1")`).
func (IPFilter) String ¶ added in v0.14.0
String implements fmt.Stringer.
type JSONExpressionParser ¶
type JSONExpressionParser struct { // Labels is a set of labels to extract. Labels []Label // Exprs is a set of extraction expressions. Exprs []LabelExtractionExpr }
JSONExpressionParser extracts and filters labels from JSON.
type KeepLabelsExpr ¶
type KeepLabelsExpr struct { Labels []Label Matchers []LabelMatcher }
KeepLabelsExpr drops any label except given in a pipeline (i.e. allow list).
type Label ¶
type Label string
Label is a LogQL identifier.
func (Label) String ¶ added in v0.12.2
String implements fmt.Stringer.
type LabelExtractionExpr ¶
LabelExtractionExpr defines label value to extract.
type LabelFilter ¶
type LabelFilter struct {
Pred LabelPredicate
}
LabelFilter filters records by predicate.
type LabelFormatExpr ¶
type LabelFormatExpr struct { // FIXME(tdakkota): use map[K][]V? Labels []RenameLabel Values []LabelTemplate }
LabelFormatExpr renames, modifies or add labels.
type LabelMatcher ¶
type LabelMatcher struct { Label Label Op BinOp // OpEq, OpNotEq, OpRe, OpNotRe Value string // Equals to value or to unparsed regexp Re *regexp.Regexp // Equals to nil, if Op is not OpRe or OpNotRe }
LabelMatcher is label matching predicate.
func (LabelMatcher) String ¶ added in v0.12.2
func (m LabelMatcher) String() string
String implements fmt.Stringer.
type LabelPredicate ¶
LabelPredicate is a label predicate.
func UnparenLabelPredicate ¶ added in v0.14.0
func UnparenLabelPredicate(p LabelPredicate) LabelPredicate
UnparenLabelPredicate recursively extracts LabelPredicate from parentheses.
type LabelPredicateBinOp ¶
type LabelPredicateBinOp struct { Left LabelPredicate Op BinOp // OpAnd, OpOr Right LabelPredicate }
LabelPredicateBinOp defines a logical operation between predicates.
func (*LabelPredicateBinOp) String ¶ added in v0.14.0
func (p *LabelPredicateBinOp) String() string
String implements fmt.Stringer.
type LabelPredicateParen ¶
type LabelPredicateParen struct {
X LabelPredicate
}
LabelPredicateParen is a prediacte within parenthesis.
FIXME(tdakkota): are we really need it?
func (*LabelPredicateParen) String ¶ added in v0.14.0
func (p *LabelPredicateParen) String() string
String implements fmt.Stringer.
type LabelReplaceExpr ¶
type LabelReplaceExpr struct { Expr MetricExpr DstLabel string Replacement string SrcLabel string Regex string Re *regexp.Regexp // Compiled Regex }
LabelReplaceExpr is a PromQL `label_replace` function.
type LabelTemplate ¶
LabelTemplate sets value for a label.
type LineFilter ¶
type LineFilter struct { Op BinOp // OpEq, OpNotEq, OpRe, OpNotRe, OpPattern, OpNotPattern By LineFilterValue Or []LineFilterValue }
LineFilter is a line filter (`|=`, `!=`, `=~`, `!~`, `|>`, `!>`).
func (LineFilter) String ¶ added in v0.12.2
func (f LineFilter) String() string
String implements fmt.Stringer.
type LineFilterValue ¶ added in v0.10.0
type LineFilterValue struct { Value string // Equals to value or to unparsed regexp Re *regexp.Regexp // Equals to nil, if Op is not OpRe or OpNotRe IP bool // true, if this line filter is IP filter. }
LineFilterValue is a line filter literal to search by.
type LineFormat ¶
type LineFormat struct {
Template string
}
LineFormat formats log record using Go template.
type LiteralExpr ¶
type LiteralExpr struct {
Value float64
}
LiteralExpr is a literal expression.
func ReduceBinOp ¶
func ReduceBinOp(b *BinOpExpr) (_ *LiteralExpr, err error)
ReduceBinOp recursively precomputes literal expression.
If expression is not constant, returns nil.
type LogExpr ¶
type LogExpr struct { Sel Selector Pipeline []PipelineStage }
LogExpr is a log query expression.
type LogRangeExpr ¶
type LogRangeExpr struct { Sel Selector Range time.Duration Pipeline []PipelineStage Unwrap *UnwrapExpr Offset *OffsetExpr }
LogRangeExpr is a log range aggregation expression.
See https://grafana.com/docs/loki/latest/logql/metric_queries/#log-range-aggregations.
type LogfmtExpressionParser ¶
type LogfmtExpressionParser struct { // Labels is a set of labels to extract. Labels []Label // Exprs is a set of extraction expressions. Exprs []LabelExtractionExpr // Flags defines parser flags. Flags LogfmtFlags }
LogfmtExpressionParser extracts and filters labels from Logfmt.
type LogfmtFlags ¶ added in v0.10.0
type LogfmtFlags uint8
LogfmtFlags defines logfmt parser flags.
const ( // LogfmtFlagStrict whether if parser should stop parsing line // if it contains invalid logfmt pairs. LogfmtFlagStrict LogfmtFlags = 1 << iota // LogfmtFlagKeepEmpty whether if parser should add labels with empty values // to the label set. LogfmtFlagKeepEmpty )
func (LogfmtFlags) Has ¶ added in v0.10.0
func (f LogfmtFlags) Has(flag LogfmtFlags) bool
Has whether if flag is enabled.
func (*LogfmtFlags) Set ¶ added in v0.10.0
func (f *LogfmtFlags) Set(flag LogfmtFlags)
Set sets flag.
type MetricExpr ¶
type MetricExpr interface { Expr // contains filtered or unexported methods }
MetricExpr is a metric query expression.
See https://grafana.com/docs/loki/latest/logql/metric_queries/.
type NumberFilter ¶
type NumberFilter struct { Label Label Op BinOp // OpEq, OpNotEq, OpLt, OpLte, OpGt, OpGte // FIXME(tdakkota): add integer field? Value float64 }
NumberFilter is a number filtering predicate (`status >= 400`).
func (NumberFilter) String ¶ added in v0.14.0
func (m NumberFilter) String() string
String implements fmt.Stringer.
type OffsetExpr ¶
OffsetExpr defines aggregation time offset.
type ParseError ¶ added in v0.12.2
ParseError is a LogQL query parsing error.
func (*ParseError) Error ¶ added in v0.12.2
func (e *ParseError) Error() string
Error implements error.
func (*ParseError) FormatError ¶ added in v0.12.2
func (e *ParseError) FormatError(p errors.Printer) error
FormatError implements errors.Formatter.
func (*ParseError) Unwrap ¶ added in v0.12.2
func (e *ParseError) Unwrap() error
Unwrap implements errors.Unwrap interface.
type ParseOptions ¶
type ParseOptions struct { // AllowDots allows dots in identifiers. AllowDots bool }
ParseOptions is LogQL parser options.
type PatternLabelParser ¶
type PatternLabelParser struct {
Pattern logqlpattern.Pattern
}
PatternLabelParser extracts labels using log pattern.
See https://grafana.com/docs/loki/latest/logql/log_queries/#pattern.
type PipelineStage ¶
type PipelineStage interface {
// contains filtered or unexported methods
}
PipelineStage is a LogQL pipeline stage.
type RangeAggregationExpr ¶
type RangeAggregationExpr struct { Op RangeOp Range LogRangeExpr Parameter *float64 Grouping *Grouping }
RangeAggregationExpr is a range aggregation expression.
type RegexpLabelParser ¶
RegexpLabelParser extracts labels using regexp capture groups.
type Selector ¶
type Selector struct {
Matchers []LabelMatcher
}
Selector is a labels selector.
func ParseSelector ¶
func ParseSelector(s string, opts ParseOptions) (sel Selector, _ error)
ParseSelector parses label selector from string.
func (Selector) String ¶ added in v0.13.0
String implements fmt.Stringer.
type UnpackLabelParser ¶
type UnpackLabelParser struct{}
UnpackLabelParser unpacks data from promtail.
See https://grafana.com/docs/loki/latest/logql/log_queries/#unpack.
type UnwrapExpr ¶
type UnwrapExpr struct { Op string Label Label Filters []LabelMatcher }
UnwrapExpr sets labels to perform aggregation.
See https://grafana.com/docs/loki/latest/logql/metric_queries/#unwrapped-range-aggregations.
type VectorAggregationExpr ¶
type VectorAggregationExpr struct { Op VectorOp Expr MetricExpr Parameter *int Grouping *Grouping }
VectorAggregationExpr is a vector aggregation expression.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package lexer contains LogQL lexer.
|
Package lexer contains LogQL lexer. |
Package logqlengine implements LogQL evaluation engine.
|
Package logqlengine implements LogQL evaluation engine. |
jsonexpr
Package jsonexpr provides JSON extractor expression parser.
|
Package jsonexpr provides JSON extractor expression parser. |
logqlabels
Package logqlabels contains LogQL label utilities.
|
Package logqlabels contains LogQL label utilities. |
logqlerrors
Package logqlerrors defines LogQL engine errors.
|
Package logqlerrors defines LogQL engine errors. |
logqlmetric
Package logqlmetric provides metric queries implementation.
|
Package logqlmetric provides metric queries implementation. |
logqlpattern
Package logqlpattern contains parser for LogQL `pattern` stage pattern.
|
Package logqlpattern contains parser for LogQL `pattern` stage pattern. |