From b01a07921f90ecdc7d7383c8a997ef8a83d8067c Mon Sep 17 00:00:00 2001 From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com> Date: Tue, 7 Jun 2022 07:33:40 -0400 Subject: [PATCH] Loki: Add more query patterns (#50248) (#50301) * Loki: Add query patterns * Update * Update queries * Update public/app/plugins/datasource/loki/querybuilder/LokiQueryModeller.ts Co-authored-by: Jennifer Villa * Update public/app/plugins/datasource/loki/querybuilder/LokiQueryModeller.ts * Update descriptions * Update Co-authored-by: Jennifer Villa (cherry picked from commit be712a5f1731499b7d487269a1460ef33d97826f) Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com> --- .../loki/querybuilder/LokiQueryModeller.ts | 123 +++++++++++++++++- 1 file changed, 117 insertions(+), 6 deletions(-) diff --git a/public/app/plugins/datasource/loki/querybuilder/LokiQueryModeller.ts b/public/app/plugins/datasource/loki/querybuilder/LokiQueryModeller.ts index 34f76b74a77..461b1688f72 100644 --- a/public/app/plugins/datasource/loki/querybuilder/LokiQueryModeller.ts +++ b/public/app/plugins/datasource/loki/querybuilder/LokiQueryModeller.ts @@ -29,25 +29,136 @@ export class LokiQueryModeller extends LokiAndPromQueryModellerBase { getQueryPatterns(): LokiQueryPattern[] { return [ { - name: 'Log query and label filter', + name: 'Log query with parsing', + // {} | logfmt | __error__=`` operations: [ - { id: LokiOperationId.LineMatchesRegex, params: [''] }, { id: LokiOperationId.Logfmt, params: [] }, { id: LokiOperationId.LabelFilterNoErrors, params: [] }, - { id: LokiOperationId.LabelFilter, params: ['', '=', ''] }, ], }, { - name: 'Time series query on value inside log line', + name: 'Log query with filtering and parsing', + // {} |= `` | logfmt | __error__=`` operations: [ - { id: LokiOperationId.LineMatchesRegex, params: [''] }, + { id: LokiOperationId.LineContains, params: [''] }, { id: LokiOperationId.Logfmt, params: [] }, { id: LokiOperationId.LabelFilterNoErrors, params: [] }, - { id: LokiOperationId.Unwrap, params: [''] }, + ], + }, + { + name: 'Log query with parsing and label filter', + // {} |= `` | logfmt | __error__=`` | label=`value` + operations: [ + { id: LokiOperationId.LineContains, params: [''] }, + { id: LokiOperationId.Logfmt, params: [] }, + { id: LokiOperationId.LabelFilterNoErrors, params: [] }, + { id: LokiOperationId.LabelFilter, params: ['label', '=', 'value'] }, + ], + }, + { + name: 'Log query with parsing of nested json', + // {} |= `` | json | line_format `{{ .message}}` | json + operations: [ + { id: LokiOperationId.LineContains, params: [''] }, + { id: LokiOperationId.Json, params: [] }, + { id: LokiOperationId.LabelFilterNoErrors, params: [] }, + { id: LokiOperationId.LineFormat, params: ['{{.message}}'] }, + { id: LokiOperationId.Json, params: [] }, + { id: LokiOperationId.LabelFilterNoErrors, params: [] }, + ], + }, + { + name: 'Log query with reformatted log line', + // {} |= `` | logfmt | line_format `{{.message}}` + operations: [ + { id: LokiOperationId.LineContains, params: [''] }, + { id: LokiOperationId.Logfmt, params: [] }, + { id: LokiOperationId.LabelFilterNoErrors, params: [] }, + { id: LokiOperationId.LineFormat, params: ['{{.message}}'] }, + ], + }, + { + name: 'Log query with mapped log level', + // {} |= `` | logfmt | label_format level=lvl + operations: [ + { id: LokiOperationId.LineContains, params: [''] }, + { id: LokiOperationId.Logfmt, params: [] }, + { id: LokiOperationId.LabelFilterNoErrors, params: [] }, + { id: LokiOperationId.LabelFormat, params: ['lvl', 'level'] }, + ], + }, + { + name: 'Metrics query on value inside log line', + // sum(sum_over_time({ | logfmt | __error__=`` | unwrap | __error__=`` [$__interval])) + operations: [ + { id: LokiOperationId.LineContains, params: [''] }, + { id: LokiOperationId.Logfmt, params: [] }, + { id: LokiOperationId.LabelFilterNoErrors, params: [] }, + { id: LokiOperationId.Unwrap, params: [] }, + { id: LokiOperationId.LabelFilterNoErrors, params: [] }, { id: LokiOperationId.SumOverTime, params: ['$__interval'] }, { id: LokiOperationId.Sum, params: [] }, ], }, + { + name: 'Metrics query for total requests per label of streams', + // sum by() (count_over_time({}[$__interval) + operations: [ + { id: LokiOperationId.LineContains, params: [''] }, + { id: LokiOperationId.CountOverTime, params: ['$__interval'] }, + { id: LokiOperationId.Sum, params: ['label'] }, + ], + }, + { + name: 'Metrics query for total requests per parsed label or label of streams', + // sum by() (count_over_time({}| logfmt | __error__=`` [$__interval)) + operations: [ + { id: LokiOperationId.LineContains, params: [''] }, + { id: LokiOperationId.Logfmt, params: [] }, + { id: LokiOperationId.LabelFilterNoErrors, params: [] }, + { id: LokiOperationId.CountOverTime, params: ['$__interval'] }, + { id: LokiOperationId.Sum, params: [] }, + ], + }, + { + name: 'Metrics query for bytes used by log stream', + // bytes_over_time({}[$__interval]) + operations: [ + { id: LokiOperationId.LineContains, params: [''] }, + { id: LokiOperationId.BytesOverTime, params: ['$__interval'] }, + ], + }, + { + name: 'Metrics query for count of log lines per stream', + // count_over_time({}[$__interval]) + operations: [ + { id: LokiOperationId.LineContains, params: [''] }, + { id: LokiOperationId.CountOverTime, params: ['$__interval'] }, + ], + }, + { + name: 'Metrics query for top n results by label or parsed label', + // topk(10, sum by () (count_over_time({} | logfmt | __error__=`` [$__interval]))) + operations: [ + { id: LokiOperationId.Logfmt, params: [] }, + { id: LokiOperationId.LabelFilterNoErrors, params: [] }, + { id: LokiOperationId.CountOverTime, params: ['$__interval'] }, + { id: LokiOperationId.Sum, params: [] }, + { id: LokiOperationId.TopK, params: [10] }, + ], + }, + { + name: 'Metrics query for extracted quantile', + // quantile_over_time(0.99,{} | logfmt | unwrap latency[$__interval]) by () + operations: [ + { id: LokiOperationId.Logfmt, params: [] }, + { id: LokiOperationId.LabelFilterNoErrors, params: [] }, + { id: LokiOperationId.Unwrap, params: ['latency'] }, + { id: LokiOperationId.LabelFilterNoErrors, params: [] }, + { id: LokiOperationId.QuantileOverTime, params: [0.5, '$__interval'] }, + { id: LokiOperationId.Sum, params: [] }, + ], + }, ]; } }