Skip to content

Commit

Permalink
Merge branch 'develop' into release/v0.16.0
Browse files Browse the repository at this point in the history
  • Loading branch information
ankitnayan committed Feb 11, 2023
2 parents ad163c2 + a906f94 commit cf93712
Show file tree
Hide file tree
Showing 8 changed files with 72 additions and 29 deletions.
26 changes: 14 additions & 12 deletions frontend/src/container/CreateAlertRule/defaults.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,16 @@ import {
defaultMatchType,
} from 'types/api/alerts/def';

const defaultAlertDescription =
'This alert is fired when the defined metric (current value: {{$value}}) crosses the threshold ({{$threshold}})';
const defaultAlertSummary =
'The rule threshold is set to {{$threshold}}, and the observed metric value is {{$value}}';

const defaultAnnotations = {
description: defaultAlertDescription,
summary: defaultAlertSummary,
};

export const alertDefaults: AlertDef = {
alertType: AlertTypes.METRICS_BASED_ALERT,
condition: {
Expand Down Expand Up @@ -38,9 +48,7 @@ export const alertDefaults: AlertDef = {
labels: {
severity: 'warning',
},
annotations: {
description: 'A new alert',
},
annotations: defaultAnnotations,
evalWindow: defaultEvalWindow,
};

Expand Down Expand Up @@ -85,9 +93,7 @@ export const logAlertDefaults: AlertDef = {
severity: 'warning',
details: `${window.location.protocol}//${window.location.host}/logs`,
},
annotations: {
description: 'A new log-based alert',
},
annotations: defaultAnnotations,
evalWindow: defaultEvalWindow,
};

Expand Down Expand Up @@ -132,9 +138,7 @@ export const traceAlertDefaults: AlertDef = {
severity: 'warning',
details: `${window.location.protocol}//${window.location.host}/traces`,
},
annotations: {
description: 'A new trace-based alert',
},
annotations: defaultAnnotations,
evalWindow: defaultEvalWindow,
};

Expand Down Expand Up @@ -179,8 +183,6 @@ export const exceptionAlertDefaults: AlertDef = {
severity: 'warning',
details: `${window.location.protocol}//${window.location.host}/exceptions`,
},
annotations: {
description: 'A new exceptions-based alert',
},
annotations: defaultAnnotations,
evalWindow: defaultEvalWindow,
};
15 changes: 12 additions & 3 deletions frontend/src/container/LogsSearchFilter/useSearchParser.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import { getMinMax } from 'container/TopNav/AutoRefresh/config';
import useUrlQuery from 'hooks/useUrlQuery';
import history from 'lib/history';
import { parseQuery, reverseParser } from 'lib/logql';
import { ILogQLParsedQueryItem } from 'lib/logql/types';
import isEqual from 'lodash-es/isEqual';
import { useCallback, useEffect } from 'react';
import { useCallback, useEffect, useMemo } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { Dispatch } from 'redux';
import { AppState } from 'store/reducers';
Expand All @@ -27,6 +28,10 @@ export function useSearchParser(): {
const {
searchFilter: { parsedQuery, queryString },
} = useSelector<AppState, ILogsReducer>((store) => store.logs);

const urlQuery = useUrlQuery();
const parsedFilters = useMemo(() => urlQuery.get('q'), [urlQuery]);

const { minTime, maxTime, selectedTime } = useSelector<
AppState,
GlobalReducer
Expand Down Expand Up @@ -63,8 +68,12 @@ export function useSearchParser(): {
);

useEffect(() => {
updateQueryString(queryString);
}, [queryString, updateQueryString]);
if (!queryString && parsedFilters) {
updateQueryString(parsedFilters);
} else if (queryString) {
updateQueryString(queryString);
}
}, [queryString, updateQueryString, parsedFilters]);

const updateParsedQuery = useCallback(
(updatedParsedPayload: ILogQLParsedQueryItem[]) => {
Expand Down
4 changes: 2 additions & 2 deletions pkg/query-service/rules/apiParams.go
Original file line number Diff line number Diff line change
Expand Up @@ -197,8 +197,8 @@ func testTemplateParsing(rl *PostableRule) (errs []error) {
}

// Trying to parse templates.
tmplData := AlertTemplateData(make(map[string]string), 0)
defs := "{{$labels := .Labels}}{{$value := .Value}}"
tmplData := AlertTemplateData(make(map[string]string), 0, 0)
defs := "{{$labels := .Labels}}{{$value := .Value}}{{$threshold := .Threshold}}"
parseTest := func(text string) error {
tmpl := NewTemplateExpander(
context.TODO(),
Expand Down
12 changes: 10 additions & 2 deletions pkg/query-service/rules/promRule.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,14 @@ func (r *PromRule) Condition() *RuleCondition {
return r.ruleCondition
}

func (r *PromRule) targetVal() float64 {
if r.ruleCondition == nil || r.ruleCondition.Target == nil {
return 0
}

return *r.ruleCondition.Target
}

func (r *PromRule) Type() RuleType {
return RuleTypeProm
}
Expand Down Expand Up @@ -327,10 +335,10 @@ func (r *PromRule) Eval(ctx context.Context, ts time.Time, queriers *Queriers) (
l[lbl.Name] = lbl.Value
}

tmplData := AlertTemplateData(l, smpl.V)
tmplData := AlertTemplateData(l, smpl.V, r.targetVal())
// Inject some convenience variables that are easier to remember for users
// who are not used to Go's templating system.
defs := "{{$labels := .Labels}}{{$value := .Value}}"
defs := "{{$labels := .Labels}}{{$value := .Value}}{{$threshold := .Threshold}}"

expand := func(text string) string {

Expand Down
17 changes: 10 additions & 7 deletions pkg/query-service/rules/templates.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,9 @@ import (
// related to go templating in rule labels and annotations

type tmplQueryRecord struct {
Labels map[string]string
Value float64
Labels map[string]string
Value float64
Threshold float64
}
type tmplQueryResults []*tmplQueryRecord

Expand Down Expand Up @@ -200,13 +201,15 @@ func NewTemplateExpander(
}

// AlertTemplateData returns the interface to be used in expanding the template.
func AlertTemplateData(labels map[string]string, value float64) interface{} {
func AlertTemplateData(labels map[string]string, value float64, threshold float64) interface{} {
return struct {
Labels map[string]string
Value float64
Labels map[string]string
Value float64
Threshold float64
}{
Labels: labels,
Value: value,
Labels: labels,
Value: value,
Threshold: threshold,
}
}

Expand Down
4 changes: 2 additions & 2 deletions pkg/query-service/rules/thresholdRule.go
Original file line number Diff line number Diff line change
Expand Up @@ -673,10 +673,10 @@ func (r *ThresholdRule) Eval(ctx context.Context, ts time.Time, queriers *Querie
l[lbl.Name] = lbl.Value
}

tmplData := AlertTemplateData(l, smpl.V)
tmplData := AlertTemplateData(l, smpl.V, r.targetVal())
// Inject some convenience variables that are easier to remember for users
// who are not used to Go's templating system.
defs := "{{$labels := .Labels}}{{$value := .Value}}"
defs := "{{$labels := .Labels}}{{$value := .Value}}{{$threshold := .Threshold}}"

// utility function to apply go template on labels and annots
expand := func(text string) string {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,18 @@ func IgnoredPaths() map[string]struct{} {

return ignoredPaths
}

func ignoreEvents(event string, attributes map[string]interface{}) bool {

if event == TELEMETRY_EVENT_ACTIVE_USER || event == TELEMETRY_EVENT_ACTIVE_USER_PH {
for attr_key, attr_val := range attributes {

if attr_key == "any" && attr_val.(int8) == 0 {
return true
}

}
}

return false
}
8 changes: 7 additions & 1 deletion pkg/query-service/telemetry/telemetry.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,14 @@ const IP_NOT_FOUND_PLACEHOLDER = "NA"
const DEFAULT_NUMBER_OF_SERVICES = 6

const HEART_BEAT_DURATION = 6 * time.Hour

const ACTIVE_USER_DURATION = 30 * time.Minute

// const HEART_BEAT_DURATION = 30 * time.Second
// const ACTIVE_USER_DURATION = 30 * time.Second

const RATE_LIMIT_CHECK_DURATION = 1 * time.Minute
const RATE_LIMIT_VALUE = 2
const RATE_LIMIT_VALUE = 1

// const RATE_LIMIT_CHECK_DURATION = 20 * time.Second
// const RATE_LIMIT_VALUE = 5
Expand Down Expand Up @@ -301,6 +302,11 @@ func (a *Telemetry) SendEvent(event string, data map[string]interface{}, opts ..
return
}

// drop events with properties matching
if ignoreEvents(event, data) {
return
}

if rateLimitFlag {
if a.rateLimits[event] < RATE_LIMIT_VALUE {
a.rateLimits[event] += 1
Expand Down

0 comments on commit cf93712

Please sign in to comment.