From 1de187bcb75003899c9de400575a357028871c46 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Wed, 29 May 2024 01:52:13 +0200 Subject: [PATCH 1/8] lib/logstorage: work-in-progress --- .../docker/docker-compose-victorialogs.yml | 2 +- .../filebeat-docker/docker-compose.yml | 2 +- .../filebeat-syslog/docker-compose.yml | 2 +- .../fluentbit-docker/docker-compose.yml | 2 +- .../victorialogs/logstash/docker-compose.yml | 2 +- .../victorialogs/promtail/docker-compose.yml | 2 +- .../vector-docker/docker-compose.yml | 2 +- deployment/logs-benchmark/docker-compose.yml | 2 +- docs/VictoriaLogs/CHANGELOG.md | 8 ++ docs/VictoriaLogs/LogsQL.md | 41 ++++++++++ docs/VictoriaLogs/QuickStart.md | 6 +- lib/logstorage/block_result.go | 19 ----- lib/logstorage/pipe_pack_json.go | 48 +++++++++++- lib/logstorage/pipe_pack_json_test.go | 27 +++++++ lib/logstorage/pipe_stats.go | 76 ++++++++----------- 15 files changed, 164 insertions(+), 77 deletions(-) diff --git a/deployment/docker/docker-compose-victorialogs.yml b/deployment/docker/docker-compose-victorialogs.yml index 5f0cceb97..284169784 100644 --- a/deployment/docker/docker-compose-victorialogs.yml +++ b/deployment/docker/docker-compose-victorialogs.yml @@ -43,7 +43,7 @@ services: # storing logs and serving read queries. victorialogs: container_name: victorialogs - image: docker.io/victoriametrics/victoria-logs:v0.13.0-victorialogs + image: docker.io/victoriametrics/victoria-logs:v0.14.0-victorialogs command: - "--storageDataPath=/vlogs" - "--httpListenAddr=:9428" diff --git a/deployment/docker/victorialogs/filebeat-docker/docker-compose.yml b/deployment/docker/victorialogs/filebeat-docker/docker-compose.yml index a1f8d45cb..36e9d8ab3 100644 --- a/deployment/docker/victorialogs/filebeat-docker/docker-compose.yml +++ b/deployment/docker/victorialogs/filebeat-docker/docker-compose.yml @@ -22,7 +22,7 @@ services: - -beat.uri=http://filebeat-victorialogs:5066 victorialogs: - image: docker.io/victoriametrics/victoria-logs:v0.13.0-victorialogs + image: docker.io/victoriametrics/victoria-logs:v0.14.0-victorialogs volumes: - victorialogs-filebeat-docker-vl:/vlogs ports: diff --git a/deployment/docker/victorialogs/filebeat-syslog/docker-compose.yml b/deployment/docker/victorialogs/filebeat-syslog/docker-compose.yml index 851de92ff..15169435b 100644 --- a/deployment/docker/victorialogs/filebeat-syslog/docker-compose.yml +++ b/deployment/docker/victorialogs/filebeat-syslog/docker-compose.yml @@ -13,7 +13,7 @@ services: - "5140:5140" victorialogs: - image: docker.io/victoriametrics/victoria-logs:v0.13.0-victorialogs + image: docker.io/victoriametrics/victoria-logs:v0.14.0-victorialogs volumes: - victorialogs-filebeat-syslog-vl:/vlogs ports: diff --git a/deployment/docker/victorialogs/fluentbit-docker/docker-compose.yml b/deployment/docker/victorialogs/fluentbit-docker/docker-compose.yml index f6438fe0f..f2f46f561 100644 --- a/deployment/docker/victorialogs/fluentbit-docker/docker-compose.yml +++ b/deployment/docker/victorialogs/fluentbit-docker/docker-compose.yml @@ -11,7 +11,7 @@ services: - "5140:5140" victorialogs: - image: docker.io/victoriametrics/victoria-logs:v0.13.0-victorialogs + image: docker.io/victoriametrics/victoria-logs:v0.14.0-victorialogs volumes: - victorialogs-fluentbit-vl:/vlogs ports: diff --git a/deployment/docker/victorialogs/logstash/docker-compose.yml b/deployment/docker/victorialogs/logstash/docker-compose.yml index d4d3be206..eb5a966aa 100644 --- a/deployment/docker/victorialogs/logstash/docker-compose.yml +++ b/deployment/docker/victorialogs/logstash/docker-compose.yml @@ -14,7 +14,7 @@ services: - "5140:5140" victorialogs: - image: docker.io/victoriametrics/victoria-logs:v0.13.0-victorialogs + image: docker.io/victoriametrics/victoria-logs:v0.14.0-victorialogs volumes: - victorialogs-logstash-vl:/vlogs ports: diff --git a/deployment/docker/victorialogs/promtail/docker-compose.yml b/deployment/docker/victorialogs/promtail/docker-compose.yml index 455694c0e..909dfba21 100644 --- a/deployment/docker/victorialogs/promtail/docker-compose.yml +++ b/deployment/docker/victorialogs/promtail/docker-compose.yml @@ -12,7 +12,7 @@ services: - "5140:5140" vlogs: - image: docker.io/victoriametrics/victoria-logs:v0.13.0-victorialogs + image: docker.io/victoriametrics/victoria-logs:v0.14.0-victorialogs volumes: - victorialogs-promtail-docker:/vlogs ports: diff --git a/deployment/docker/victorialogs/vector-docker/docker-compose.yml b/deployment/docker/victorialogs/vector-docker/docker-compose.yml index 61253b954..440253d6c 100644 --- a/deployment/docker/victorialogs/vector-docker/docker-compose.yml +++ b/deployment/docker/victorialogs/vector-docker/docker-compose.yml @@ -22,7 +22,7 @@ services: condition: service_healthy victorialogs: - image: docker.io/victoriametrics/victoria-logs:v0.13.0-victorialogs + image: docker.io/victoriametrics/victoria-logs:v0.14.0-victorialogs volumes: - victorialogs-vector-docker-vl:/vlogs ports: diff --git a/deployment/logs-benchmark/docker-compose.yml b/deployment/logs-benchmark/docker-compose.yml index 0ec8d8b63..acb9f048f 100644 --- a/deployment/logs-benchmark/docker-compose.yml +++ b/deployment/logs-benchmark/docker-compose.yml @@ -3,7 +3,7 @@ version: '3' services: # Run `make package-victoria-logs` to build victoria-logs image vlogs: - image: docker.io/victoriametrics/victoria-logs:v0.13.0-victorialogs + image: docker.io/victoriametrics/victoria-logs:v0.14.0-victorialogs volumes: - vlogs:/vlogs ports: diff --git a/docs/VictoriaLogs/CHANGELOG.md b/docs/VictoriaLogs/CHANGELOG.md index 30dc2cc32..d1e2f2240 100644 --- a/docs/VictoriaLogs/CHANGELOG.md +++ b/docs/VictoriaLogs/CHANGELOG.md @@ -19,6 +19,14 @@ according to [these docs](https://docs.victoriametrics.com/victorialogs/quicksta ## tip +## [v0.14.0](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v0.14.0-victorialogs) + +Released at 2024-05-29 + +* FEATURE: allow specifying fields, which must be packed into JSON in [`pack_json` pipe](https://docs.victoriametrics.com/victorialogs/logsql/#pack_json-pipe) via `pack_json fields (field1, ..., fieldN)` syntax. + +* BUGFIX: properly apply `if (...)` filters to calculated results in [`stats` pipe](https://docs.victoriametrics.com/victorialogs/logsql/#stats-pipe) when [grouping by fields](https://docs.victoriametrics.com/victorialogs/logsql/#stats-by-fields) is enabled. For example, `_time:5m | stats by (host) count() logs, count() if (error) errors` now properly calculates per-`host` `errors`. + ## [v0.13.0](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v0.13.0-victorialogs) Released at 2024-05-28 diff --git a/docs/VictoriaLogs/LogsQL.md b/docs/VictoriaLogs/LogsQL.md index 2687664bd..a0f9c3c73 100644 --- a/docs/VictoriaLogs/LogsQL.md +++ b/docs/VictoriaLogs/LogsQL.md @@ -1375,14 +1375,48 @@ So the following query is equivalent to the previous one: _time:5m | extract_regexp "(?P([0-9]+[.]){3}[0-9]+)" ``` +Add `keep_original_fields` to the end of `extract_regexp ...` when the original non-empty values of the fields mentioned in the pattern must be preserved +instead of overwriting it with the extracted values. For example, the following query extracts `` only if the original value for `ip` field is missing or is empty: + +```logsql +_time:5m | extract_regexp 'ip=(?P([0-9]+[.]){3}[0-9]+)' keep_original_fields +``` + +By default `extract_regexp` writes empty matching fields to the output, which may overwrite existing values. Add `skip_empty_results` to the end of `extract_regexp ...` +in order to prevent from overwriting the existing values for the corresponding fields with empty values. +For example, the following query preserves the original `ip` field value if `foo` field doesn't contain the matching ip: + +```logsql +_time:5m | extract_regexp 'ip=(?P([0-9]+[.]){3}[0-9]+)' from foo skip_empty_results +``` + Performance tip: it is recommended using [`extract` pipe](#extract-pipe) instead of `extract_regexp` for achieving higher query performance. See also: +- [Conditional `extract_regexp`](#conditional-extract_regexp) - [`extract` pipe](#extract-pipe) - [`replace_regexp` pipe](#replace_regexp-pipe) - [`unpack_json` pipe](#unpack_json-pipe) +#### Conditional extract_regexp + +If some log entries must be skipped from [`extract_regexp` pipe](#extract-pipe), then add `if ()` filter after the `extract` word. +The `` can contain arbitrary [filters](#filters). For example, the following query extracts `ip` +from [`_msg` field](https://docs.victoriametrics.com/victorialogs/keyconcepts/#data-model) only +if the input [log entry](https://docs.victoriametrics.com/victorialogs/keyconcepts/#data-model) doesn't contain `ip` field or this field is empty: + +```logsql +_time:5m | extract_regexp if (ip:"") "ip=(?P([0-9]+[.]){3}[0-9]+)" +``` + +An alternative approach is to add `keep_original_fields` to the end of `extract_regexp`, in order to keep the original non-empty values for the extracted fields. +For example, the following query is equivalent to the previous one: + +```logsql +_time:5m | extract_regexp "ip=(?P([0-9]+[.]){3}[0-9]+)" keep_original_fields +``` + ### field_names pipe `| field_names` [pipe](#pipes) returns all the names of [log fields](https://docs.victoriametrics.com/victorialogs/keyconcepts/#data-model) @@ -1639,6 +1673,13 @@ The following query is equivalent to the previous one: _time:5m | pack_json ``` +If only a subset of labels must be packed into JSON, then it must be listed inside `fields (...)` after `pack_json`. For example, the following query builds JSON with `foo` and `bar` fields +only and stores the result in `baz` field: + +```logsql +_time:5m | pack_json fields (foo, bar) as baz +``` + The `pack_json` doesn't modify or delete other labels. If you do not need them, then add [`| fields ...`](#fields-pipe) after the `pack_json` pipe. For example, the following query leaves only the `foo` label with the original log fields packed into JSON: diff --git a/docs/VictoriaLogs/QuickStart.md b/docs/VictoriaLogs/QuickStart.md index 8063e10fe..41dc659f5 100644 --- a/docs/VictoriaLogs/QuickStart.md +++ b/docs/VictoriaLogs/QuickStart.md @@ -34,8 +34,8 @@ Just download archive for the needed Operating system and architecture, unpack i For example, the following commands download VictoriaLogs archive for Linux/amd64, unpack and run it: ```sh -curl -L -O https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v0.13.0-victorialogs/victoria-logs-linux-amd64-v0.13.0-victorialogs.tar.gz -tar xzf victoria-logs-linux-amd64-v0.13.0-victorialogs.tar.gz +curl -L -O https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v0.14.0-victorialogs/victoria-logs-linux-amd64-v0.14.0-victorialogs.tar.gz +tar xzf victoria-logs-linux-amd64-v0.14.0-victorialogs.tar.gz ./victoria-logs-prod ``` @@ -59,7 +59,7 @@ Here is the command to run VictoriaLogs in a Docker container: ```sh docker run --rm -it -p 9428:9428 -v ./victoria-logs-data:/victoria-logs-data \ - docker.io/victoriametrics/victoria-logs:v0.13.0-victorialogs + docker.io/victoriametrics/victoria-logs:v0.14.0-victorialogs ``` See also: diff --git a/lib/logstorage/block_result.go b/lib/logstorage/block_result.go index 0e8c7bf6a..1f1d312d4 100644 --- a/lib/logstorage/block_result.go +++ b/lib/logstorage/block_result.go @@ -128,25 +128,6 @@ func (br *blockResult) initFromFilterAllColumns(brSrc *blockResult, bm *bitmap) } } -// initFromFilterNeededColumns initializes br from brSrc by copying only the given neededColumns for rows identified by set bits at bm. -// -// The br is valid until brSrc or bm is updated. -func (br *blockResult) initFromFilterNeededColumns(brSrc *blockResult, bm *bitmap, neededColumns []string) { - br.reset() - - srcTimestamps := brSrc.timestamps - dstTimestamps := br.timestamps[:0] - bm.forEachSetBitReadonly(func(idx int) { - dstTimestamps = append(dstTimestamps, srcTimestamps[idx]) - }) - br.timestamps = dstTimestamps - - for _, neededColumn := range neededColumns { - cSrc := brSrc.getColumnByName(neededColumn) - br.appendFilteredColumn(brSrc, cSrc, bm) - } -} - // appendFilteredColumn adds cSrc with the given bm filter to br. // // the br is valid until brSrc, cSrc or bm is updated. diff --git a/lib/logstorage/pipe_pack_json.go b/lib/logstorage/pipe_pack_json.go index d320fb6fb..af44c8750 100644 --- a/lib/logstorage/pipe_pack_json.go +++ b/lib/logstorage/pipe_pack_json.go @@ -2,6 +2,7 @@ package logstorage import ( "fmt" + "slices" "unsafe" "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" @@ -12,10 +13,15 @@ import ( // See https://docs.victoriametrics.com/victorialogs/logsql/#pack_json-pipe type pipePackJSON struct { resultField string + + fields []string } func (pp *pipePackJSON) String() string { s := "pack_json" + if len(pp.fields) > 0 { + s += " fields (" + fieldsToString(pp.fields) + ")" + } if !isMsgFieldName(pp.resultField) { s += " as " + quoteTokenIfNeeded(pp.resultField) } @@ -25,11 +31,19 @@ func (pp *pipePackJSON) String() string { func (pp *pipePackJSON) updateNeededFields(neededFields, unneededFields fieldsSet) { if neededFields.contains("*") { if !unneededFields.contains(pp.resultField) { - unneededFields.reset() + if len(pp.fields) > 0 { + unneededFields.removeFields(pp.fields) + } else { + unneededFields.reset() + } } } else { if neededFields.contains(pp.resultField) { - neededFields.add("*") + if len(pp.fields) > 0 { + neededFields.addFields(pp.fields) + } else { + neededFields.add("*") + } } } } @@ -74,6 +88,8 @@ type pipePackJSONProcessorShardNopad struct { buf []byte fields []Field + + cs []*blockResultColumn } func (ppp *pipePackJSONProcessor) writeBlock(workerID uint, br *blockResult) { @@ -85,7 +101,17 @@ func (ppp *pipePackJSONProcessor) writeBlock(workerID uint, br *blockResult) { shard.rc.name = ppp.pp.resultField - cs := br.getColumns() + cs := shard.cs[:0] + if len(ppp.pp.fields) == 0 { + csAll := br.getColumns() + cs = append(cs, csAll...) + } else { + for _, f := range ppp.pp.fields { + c := br.getColumnByName(f) + cs = append(cs, c) + } + } + shard.cs = cs buf := shard.buf[:0] fields := shard.fields @@ -122,10 +148,25 @@ func parsePackJSON(lex *lexer) (*pipePackJSON, error) { } lex.nextToken() + var fields []string + if lex.isKeyword("fields") { + lex.nextToken() + fs, err := parseFieldNamesInParens(lex) + if err != nil { + return nil, fmt.Errorf("cannot parse fields: %w", err) + } + if slices.Contains(fs, "*") { + fs = nil + } + fields = fs + } + // parse optional 'as ...` part resultField := "_msg" if lex.isKeyword("as") { lex.nextToken() + } + if !lex.isKeyword("|", ")", "") { field, err := parseFieldName(lex) if err != nil { return nil, fmt.Errorf("cannot parse result field for 'pack_json': %w", err) @@ -135,6 +176,7 @@ func parsePackJSON(lex *lexer) (*pipePackJSON, error) { pp := &pipePackJSON{ resultField: resultField, + fields: fields, } return pp, nil diff --git a/lib/logstorage/pipe_pack_json_test.go b/lib/logstorage/pipe_pack_json_test.go index baf137447..b57f150c8 100644 --- a/lib/logstorage/pipe_pack_json_test.go +++ b/lib/logstorage/pipe_pack_json_test.go @@ -12,6 +12,8 @@ func TestParsePipePackJSONSuccess(t *testing.T) { f(`pack_json`) f(`pack_json as x`) + f(`pack_json fields (a, b)`) + f(`pack_json fields (a, b) as x`) } func TestParsePipePackJSONFailure(t *testing.T) { @@ -21,6 +23,7 @@ func TestParsePipePackJSONFailure(t *testing.T) { } f(`pack_json foo bar`) + f(`pack_json fields`) } func TestPipePackJSON(t *testing.T) { @@ -76,6 +79,30 @@ func TestPipePackJSON(t *testing.T) { {"c", "d"}, }, }) + + // pack only the needed fields + f(`pack_json fields (foo, baz) a`, [][]Field{ + { + {"_msg", "x"}, + {"foo", `abc`}, + {"bar", `cde`}, + }, + { + {"a", "b"}, + {"c", "d"}, + }, + }, [][]Field{ + { + {"_msg", `x`}, + {"foo", `abc`}, + {"bar", `cde`}, + {"a", `{"foo":"abc","baz":""}`}, + }, + { + {"a", `{"foo":"","baz":""}`}, + {"c", "d"}, + }, + }) } func TestPipePackJSONUpdateNeededFields(t *testing.T) { diff --git a/lib/logstorage/pipe_stats.go b/lib/logstorage/pipe_stats.go index ab3852e95..31506bfa3 100644 --- a/lib/logstorage/pipe_stats.go +++ b/lib/logstorage/pipe_stats.go @@ -204,10 +204,9 @@ type pipeStatsProcessorShardNopad struct { m map[string]*pipeStatsGroup - // bms, brs and brsBuf are used for applying per-func filters. - bms []bitmap - brs []*blockResult - brsBuf []blockResult + // bms and brTmp are used for applying per-func filters. + bms []bitmap + brTmp blockResult columnValues [][]string keyBuf []byte @@ -225,22 +224,20 @@ func (shard *pipeStatsProcessorShard) init() { shard.m = make(map[string]*pipeStatsGroup) shard.bms = make([]bitmap, funcsLen) - shard.brs = make([]*blockResult, funcsLen) - shard.brsBuf = make([]blockResult, funcsLen) } func (shard *pipeStatsProcessorShard) writeBlock(br *blockResult) { shard.init() byFields := shard.ps.byFields - // Apply per-function filters - brs := shard.applyPerFunctionFilters(br) + // Update shard.bms by applying per-function filters + shard.applyPerFunctionFilters(br) // Process stats for the defined functions if len(byFields) == 0 { // Fast path - pass all the rows to a single group with empty key. psg := shard.getPipeStatsGroup(nil) - shard.stateSizeBudget -= psg.updateStatsForAllRows(brs) + shard.stateSizeBudget -= psg.updateStatsForAllRows(shard.bms, br, &shard.brTmp) return } if len(byFields) == 1 { @@ -252,7 +249,7 @@ func (shard *pipeStatsProcessorShard) writeBlock(br *blockResult) { v := br.getBucketedValue(c.valuesEncoded[0], bf) shard.keyBuf = encoding.MarshalBytes(shard.keyBuf[:0], bytesutil.ToUnsafeBytes(v)) psg := shard.getPipeStatsGroup(shard.keyBuf) - shard.stateSizeBudget -= psg.updateStatsForAllRows(brs) + shard.stateSizeBudget -= psg.updateStatsForAllRows(shard.bms, br, &shard.brTmp) return } @@ -261,7 +258,7 @@ func (shard *pipeStatsProcessorShard) writeBlock(br *blockResult) { // Fast path for column with constant values. shard.keyBuf = encoding.MarshalBytes(shard.keyBuf[:0], bytesutil.ToUnsafeBytes(values[0])) psg := shard.getPipeStatsGroup(shard.keyBuf) - shard.stateSizeBudget -= psg.updateStatsForAllRows(brs) + shard.stateSizeBudget -= psg.updateStatsForAllRows(shard.bms, br, &shard.brTmp) return } @@ -273,7 +270,7 @@ func (shard *pipeStatsProcessorShard) writeBlock(br *blockResult) { keyBuf = encoding.MarshalBytes(keyBuf[:0], bytesutil.ToUnsafeBytes(values[i])) psg = shard.getPipeStatsGroup(keyBuf) } - shard.stateSizeBudget -= psg.updateStatsForRow(brs, i) + shard.stateSizeBudget -= psg.updateStatsForRow(shard.bms, br, i) } shard.keyBuf = keyBuf return @@ -303,7 +300,7 @@ func (shard *pipeStatsProcessorShard) writeBlock(br *blockResult) { keyBuf = encoding.MarshalBytes(keyBuf, bytesutil.ToUnsafeBytes(values[0])) } psg := shard.getPipeStatsGroup(keyBuf) - shard.stateSizeBudget -= psg.updateStatsForAllRows(brs) + shard.stateSizeBudget -= psg.updateStatsForAllRows(shard.bms, br, &shard.brTmp) shard.keyBuf = keyBuf return } @@ -328,42 +325,23 @@ func (shard *pipeStatsProcessorShard) writeBlock(br *blockResult) { } psg = shard.getPipeStatsGroup(keyBuf) } - shard.stateSizeBudget -= psg.updateStatsForRow(brs, i) + shard.stateSizeBudget -= psg.updateStatsForRow(shard.bms, br, i) } shard.keyBuf = keyBuf } -func (shard *pipeStatsProcessorShard) applyPerFunctionFilters(brSrc *blockResult) []*blockResult { +func (shard *pipeStatsProcessorShard) applyPerFunctionFilters(br *blockResult) { funcs := shard.ps.funcs - brs := shard.brs for i := range funcs { - iff := funcs[i].iff - if iff == nil { - // Fast path - there are no per-function filters - brs[i] = brSrc - continue - } - bm := &shard.bms[i] - bm.init(len(brSrc.timestamps)) + bm.init(len(br.timestamps)) bm.setBits() - iff.f.applyToBlockResult(brSrc, bm) - if bm.areAllBitsSet() { - // Fast path - per-function filter doesn't filter out rows - brs[i] = brSrc - continue - } - // Store the remaining rows for the needed per-func fields to brDst - brDst := &shard.brsBuf[i] - if bm.isZero() { - brDst.reset() - } else { - brDst.initFromFilterNeededColumns(brSrc, bm, iff.neededFields) + iff := funcs[i].iff + if iff != nil { + iff.f.applyToBlockResult(br, bm) } - brs[i] = brDst } - return brs } func (shard *pipeStatsProcessorShard) getPipeStatsGroup(key []byte) *pipeStatsGroup { @@ -379,7 +357,8 @@ func (shard *pipeStatsProcessorShard) getPipeStatsGroup(key []byte) *pipeStatsGr shard.stateSizeBudget -= stateSize } psg = &pipeStatsGroup{ - sfps: sfps, + funcs: shard.ps.funcs, + sfps: sfps, } shard.m[string(key)] = psg shard.stateSizeBudget -= len(key) + int(unsafe.Sizeof("")+unsafe.Sizeof(psg)+unsafe.Sizeof(sfps[0])*uintptr(len(sfps))) @@ -388,21 +367,30 @@ func (shard *pipeStatsProcessorShard) getPipeStatsGroup(key []byte) *pipeStatsGr } type pipeStatsGroup struct { - sfps []statsProcessor + funcs []pipeStatsFunc + sfps []statsProcessor } -func (psg *pipeStatsGroup) updateStatsForAllRows(brs []*blockResult) int { +func (psg *pipeStatsGroup) updateStatsForAllRows(bms []bitmap, br, brTmp *blockResult) int { n := 0 for i, sfp := range psg.sfps { - n += sfp.updateStatsForAllRows(brs[i]) + iff := psg.funcs[i].iff + if iff == nil { + n += sfp.updateStatsForAllRows(br) + } else { + brTmp.initFromFilterAllColumns(br, &bms[i]) + n += sfp.updateStatsForAllRows(brTmp) + } } return n } -func (psg *pipeStatsGroup) updateStatsForRow(brs []*blockResult, rowIdx int) int { +func (psg *pipeStatsGroup) updateStatsForRow(bms []bitmap, br *blockResult, rowIdx int) int { n := 0 for i, sfp := range psg.sfps { - n += sfp.updateStatsForRow(brs[i], rowIdx) + if bms[i].isSetBit(rowIdx) { + n += sfp.updateStatsForRow(br, rowIdx) + } } return n } From 14ba7b237d2809c86b1e977916af574f4429e4ea Mon Sep 17 00:00:00 2001 From: Github Actions <133988544+victoriametrics-bot@users.noreply.github.com> Date: Wed, 29 May 2024 19:21:27 +0800 Subject: [PATCH 2/8] Automatic update operator docs from VictoriaMetrics/operator@cf753a6 (#6373) --- docs/operator/CHANGELOG.md | 1 + docs/operator/vars.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/operator/CHANGELOG.md b/docs/operator/CHANGELOG.md index c29a80d5d..dd9dc82e6 100644 --- a/docs/operator/CHANGELOG.md +++ b/docs/operator/CHANGELOG.md @@ -20,6 +20,7 @@ aliases: - [operator](./README.md): remove finalizer for child objects with non-empty `DeletetionTimestamp`. See this [issue](https://github.com/VictoriaMetrics/operator/issues/953) for details. - [operator](./README.md): skip storageClass check if there is no PVC size change. See this [issue](https://github.com/VictoriaMetrics/operator/issues/957) for details. - [vmauth](./api.md#vmauth): fix url when default http port is changed in targetRef. See this [issue](https://github.com/VictoriaMetrics/operator/issues/960) for details. +- [vmauth](./api.html#vmauth): fix deployment when custom reloader is used. See [this pull request](https://github.com/VictoriaMetrics/operator/pull/964). ## [v0.44.0](https://github.com/VictoriaMetrics/operator/releases/tag/v0.44.0) - 9 May 2024 diff --git a/docs/operator/vars.md b/docs/operator/vars.md index b7bedfa5b..1ad6bab10 100644 --- a/docs/operator/vars.md +++ b/docs/operator/vars.md @@ -10,7 +10,7 @@ menu: # Auto Generated vars for package config - updated at Thu May 23 09:10:16 UTC 2024 + updated at Wed May 29 11:18:39 UTC 2024 | varible name | variable default value | variable required | variable description | From 7e5a206057a58be4b4d71cabe495922f9a2bbc2a Mon Sep 17 00:00:00 2001 From: Andrii Chubatiuk Date: Wed, 29 May 2024 14:56:05 +0300 Subject: [PATCH 3/8] app/vmagent: fixed streamaggr args (#6374) use GetOptionalArg instead of index to fallback to a first argument if index is absent for remotewrite.streamaggr.config --- app/vmagent/remotewrite/streamaggr.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/vmagent/remotewrite/streamaggr.go b/app/vmagent/remotewrite/streamaggr.go index 0c357d298..454d14bf8 100644 --- a/app/vmagent/remotewrite/streamaggr.go +++ b/app/vmagent/remotewrite/streamaggr.go @@ -143,7 +143,7 @@ func getStreamAggrOpts(idx int) (string, *streamaggr.Options) { if len(*streamAggrConfig) == 0 { return "", &opts } - return (*streamAggrConfig)[idx], &opts + return streamAggrConfig.GetOptionalArg(idx), &opts } func newStreamAggrConfigWithOpts(pushFunc streamaggr.PushFunc, path string, opts *streamaggr.Options) (*streamaggr.Aggregators, error) { From b984f4672e4993f60562a482e18dae86262500fc Mon Sep 17 00:00:00 2001 From: Roman Khavronenko Date: Wed, 29 May 2024 14:07:44 +0200 Subject: [PATCH 4/8] =?UTF-8?q?lib/storage:=20filter=20deleted=20label=20n?= =?UTF-8?q?ames=20and=20values=20from=20`/api/v1/labe=E2=80=A6=20(#6342)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …ls` and `/api/v1/label/.../values` Check for deleted metrics when `match[]` filter matches small number of time series (optimized path). The issue was introduced [v1.81.0](https://docs.victoriametrics.com/changelog_2022/#v1810). Related issue https://github.com/VictoriaMetrics/VictoriaMetrics/issues/6300 Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/2978 Signed-off-by: hagen1778 --- docs/CHANGELOG.md | 1 + lib/storage/index_db.go | 16 +++++++++ lib/storage/index_db_test.go | 67 +++++++++++++++++++++++++----------- 3 files changed, 64 insertions(+), 20 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 9c44d1e5d..726afa0db 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -70,6 +70,7 @@ See also [LTS releases](https://docs.victoriametrics.com/lts-releases/). * BUGFIX: [Single-node VictoriaMetrics](https://docs.victoriametrics.com/) and `vminsert` in [VictoriaMetrics cluster](https://docs.victoriametrics.com/cluster-victoriametrics/): reduce the default value for `-maxLabelValueLen` command-line flag from `16KiB` to `1KiB`. This should prevent from issues like [this one](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/6176) when time series with too long labels are ingested into VictoriaMetrics. * BUGFIX: [vmauth](https://docs.victoriametrics.com/vmauth/): properly release memory used for metrics during config reload. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/6247). * BUGFIX: [dashboards](https://grafana.com/orgs/victoriametrics): fix `AnnotationQueryRunner` error in Grafana when executing annotations query against Prometheus backend. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/6309) for details. +* BUGFIX: [Single-node VictoriaMetrics](https://docs.victoriametrics.com/) and `vmselect` in [VictoriaMetrics cluster](https://docs.victoriametrics.com/cluster-victoriametrics/): filter deleted label names and values from [`/api/v1/labels`](https://docs.victoriametrics.com/url-examples/#apiv1labels) and [`/api/v1/label/.../values`](https://docs.victoriametrics.com/url-examples/#apiv1labelvalues) responses when `match[]` filter matches small number of time series. The issue was introduced [v1.81.0](https://docs.victoriametrics.com/changelog_2022/#v1810). * DEPRECATION: [vmagent](https://docs.victoriametrics.com/vmagent/): removed deprecated `-remoteWrite.multitenantURL` flag from vmagent. This flag was deprecated since [v1.96.0](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.96.0). Use `-enableMultitenantHandlers` instead, as it is easier to use and combine with [multitenant URL at vminsert](https://docs.victoriametrics.com/Cluster-VictoriaMetrics.html#multitenancy-via-labels). See these [docs for details](https://docs.victoriametrics.com/vmagent.html#multitenancy). diff --git a/lib/storage/index_db.go b/lib/storage/index_db.go index 848f90cb1..ebd8ad2ab 100644 --- a/lib/storage/index_db.go +++ b/lib/storage/index_db.go @@ -747,10 +747,18 @@ func (is *indexSearch) getLabelNamesForMetricIDs(qt *querytracer.Tracer, metricI if len(metricIDs) > 0 { lns["__name__"] = struct{}{} } + + dmis := is.db.s.getDeletedMetricIDs() + checkDeleted := dmis.Len() > 0 + var mn MetricName foundLabelNames := 0 var buf []byte for _, metricID := range metricIDs { + if checkDeleted && dmis.Has(metricID) { + // skip deleted IDs from result + continue + } var ok bool buf, ok = is.searchMetricNameWithCache(buf[:0], metricID) if !ok { @@ -946,10 +954,18 @@ func (is *indexSearch) getLabelValuesForMetricIDs(qt *querytracer.Tracer, lvs ma if labelName == "" { labelName = "__name__" } + + dmis := is.db.s.getDeletedMetricIDs() + checkDeleted := dmis.Len() > 0 + var mn MetricName foundLabelValues := 0 var buf []byte for _, metricID := range metricIDs { + if checkDeleted && dmis.Has(metricID) { + // skip deleted IDs from result + continue + } var ok bool buf, ok = is.searchMetricNameWithCache(buf[:0], metricID) if !ok { diff --git a/lib/storage/index_db_test.go b/lib/storage/index_db_test.go index f5ebc9336..127365c3a 100644 --- a/lib/storage/index_db_test.go +++ b/lib/storage/index_db_test.go @@ -1562,30 +1562,34 @@ func TestSearchTSIDWithTimeRange(t *testing.T) { "testMetric", } sort.Strings(labelNames) + + newMN := func(name string, day, metric int) MetricName { + var mn MetricName + mn.MetricGroup = []byte(name) + mn.AddTag( + "constant", + "const", + ) + mn.AddTag( + "day", + fmt.Sprintf("%v", day), + ) + mn.AddTag( + "UniqueId", + fmt.Sprintf("%v", metric), + ) + mn.AddTag( + "some_unique_id", + fmt.Sprintf("%v", day), + ) + mn.sortTags() + return mn + } for day := 0; day < days; day++ { date := baseDate - uint64(day) var metricIDs uint64set.Set for metric := 0; metric < metricsPerDay; metric++ { - var mn MetricName - mn.MetricGroup = []byte("testMetric") - mn.AddTag( - "constant", - "const", - ) - mn.AddTag( - "day", - fmt.Sprintf("%v", day), - ) - mn.AddTag( - "UniqueId", - fmt.Sprintf("%v", metric), - ) - mn.AddTag( - "some_unique_id", - fmt.Sprintf("%v", day), - ) - mn.sortTags() - + mn := newMN("testMetric", day, metric) metricNameBuf = mn.Marshal(metricNameBuf[:0]) var genTSID generationTSID if !is.getTSIDByMetricName(&genTSID, metricNameBuf, date) { @@ -1626,6 +1630,29 @@ func TestSearchTSIDWithTimeRange(t *testing.T) { } db.putIndexSearch(is2) + // add a metric that will be deleted shortly + is3 := db.getIndexSearch(noDeadline) + day := days + date := baseDate - uint64(day) + mn := newMN("deletedMetric", day, 999) + mn.AddTag( + "labelToDelete", + fmt.Sprintf("%v", day), + ) + mn.sortTags() + metricNameBuf = mn.Marshal(metricNameBuf[:0]) + var genTSID generationTSID + if !is3.getTSIDByMetricName(&genTSID, metricNameBuf, date) { + generateTSID(&genTSID.TSID, &mn) + createAllIndexesForMetricName(is3, &mn, &genTSID.TSID, date) + } + // delete the added metric. It is expected it won't be returned during searches + deletedSet := &uint64set.Set{} + deletedSet.Add(genTSID.TSID.MetricID) + s.setDeletedMetricIDs(deletedSet) + db.putIndexSearch(is3) + s.DebugFlush() + // Check SearchLabelNamesWithFiltersOnTimeRange with the specified time range. tr := TimeRange{ MinTimestamp: int64(now) - msecPerDay, From 9289c7512dab757c1401a81955ed99237b2537e7 Mon Sep 17 00:00:00 2001 From: yumeiyin <155420652+yumeiyin@users.noreply.github.com> Date: Wed, 29 May 2024 20:08:38 +0800 Subject: [PATCH 5/8] chore: remove redundant words (#6348) --- app/vmagent/remotewrite/pendingseries_test.go | 2 +- app/vmctl/opentsdb/opentsdb.go | 2 +- docs/stream-aggregation.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/vmagent/remotewrite/pendingseries_test.go b/app/vmagent/remotewrite/pendingseries_test.go index 487fdab49..6e949a94f 100644 --- a/app/vmagent/remotewrite/pendingseries_test.go +++ b/app/vmagent/remotewrite/pendingseries_test.go @@ -34,7 +34,7 @@ func testPushWriteRequest(t *testing.T, rowsCount, expectedBlockLenProm, expecte return true } if !tryPushWriteRequest(wr, pushBlock, isVMRemoteWrite) { - t.Fatalf("cannot push data to to remote storage") + t.Fatalf("cannot push data to remote storage") } if math.Abs(float64(pushBlockLen-expectedBlockLen)/float64(expectedBlockLen)*100) > tolerancePrc { t.Fatalf("unexpected block len for rowsCount=%d, isVMRemoteWrite=%v; got %d bytes; expecting %d bytes +- %.0f%%", diff --git a/app/vmctl/opentsdb/opentsdb.go b/app/vmctl/opentsdb/opentsdb.go index 4efc18c6c..b75e20b5a 100644 --- a/app/vmctl/opentsdb/opentsdb.go +++ b/app/vmctl/opentsdb/opentsdb.go @@ -26,7 +26,7 @@ type Retention struct { FirstOrder string SecondOrder string AggTime string - // The actual ranges will will attempt to query (as offsets from now) + // The actual ranges will attempt to query (as offsets from now) QueryRanges []TimeRange } diff --git a/docs/stream-aggregation.md b/docs/stream-aggregation.md index f94b42e49..daaa59e4b 100644 --- a/docs/stream-aggregation.md +++ b/docs/stream-aggregation.md @@ -1073,7 +1073,7 @@ This may lead to the following issues: since they ignore the first sample in a new time series. - Unexpected spikes for [total](#total) and [increase](#increase) outputs, since they assume that new time series start from 0. -These issues can be be fixed in the following ways: +These issues can be fixed in the following ways: - By increasing the `interval` option at [stream aggregation config](#stream-aggregation-config), so it covers the expected delays in data ingestion pipelines. From 252f8f096dea732237482b103dd5946cc04affe5 Mon Sep 17 00:00:00 2001 From: Dmytro Kozlov Date: Wed, 29 May 2024 14:45:14 +0200 Subject: [PATCH 6/8] docs: update managed create deployment description (#6376) ### Describe Your Changes Updated description how to create deployment in the cloud soulution --- .../create_deployment_continue.webp | Bin 0 -> 53654 bytes .../create_deployment_start.webp | Bin 27038 -> 82952 bytes docs/managed-victoriametrics/quickstart.md | 6 +++++- 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 docs/managed-victoriametrics/create_deployment_continue.webp diff --git a/docs/managed-victoriametrics/create_deployment_continue.webp b/docs/managed-victoriametrics/create_deployment_continue.webp new file mode 100644 index 0000000000000000000000000000000000000000..eb013392271433ce02af307d4d6492fd2464392e GIT binary patch literal 53654 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

47~p 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 literal 0 HcmV?d00001 diff --git a/docs/managed-victoriametrics/create_deployment_start.webp b/docs/managed-victoriametrics/create_deployment_start.webp index 040bae4de239ccdb4af71a02a23e1992345919ca..17cccddfd12d8a2b721187b3b753ca7beefc22de 100644 GIT binary patch literal 82952 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 F|ZrgeYt#o3|(oq1d3uTbr? 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 literal 27038 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 diff --git a/docs/managed-victoriametrics/quickstart.md b/docs/managed-victoriametrics/quickstart.md index f8656239b..ef2c488c7 100644 --- a/docs/managed-victoriametrics/quickstart.md +++ b/docs/managed-victoriametrics/quickstart.md @@ -183,11 +183,15 @@ If you forgot your password, it can be restored in the following way: On the [Deployments](https://cloud.victoriametrics.com/deployments?utm_source=website&utm_campaign=docs_quickstart) page you will see a list of your existing deployments and will be able to manage them. -To create a deployment click on the button `Create Deployment` button: +To create a deployment click on the button `Start sending metrics` button: +When you already have at least one deployment you can create a new one by clicking on the `Create deployment` button: + + + On the opened screen, choose parameters of your new deployment: From 0a71bad72285a5072fa56dc57103b59b9a74c030 Mon Sep 17 00:00:00 2001 From: Fred Navruzov Date: Wed, 29 May 2024 19:46:52 +0200 Subject: [PATCH 7/8] docs/vmanomaly: improve FAQ (#6369) ### Describe Your Change More explicit [vmanomaly FAQ](https://docs.victoriametrics.com/anomaly-detection/faq/index.html), based on common Q&A from recent communications with users ### Checklist The following checks are **mandatory**: - :heavy_check_mark: My change adheres [VictoriaMetrics contributing guidelines](https://docs.victoriametrics.com/contributing/). --- docs/anomaly-detection/FAQ.md | 95 +++++++++++++++++++++++++++++++- docs/anomaly-detection/README.md | 2 +- 2 files changed, 94 insertions(+), 3 deletions(-) diff --git a/docs/anomaly-detection/FAQ.md b/docs/anomaly-detection/FAQ.md index bed5bbc18..67ddfc930 100644 --- a/docs/anomaly-detection/FAQ.md +++ b/docs/anomaly-detection/FAQ.md @@ -27,6 +27,17 @@ The decision to set the changepoint at `1.0` is made to ensure consistency acros > Note: `anomaly_score` is a metric itself, which preserves all labels found in input data and (optionally) appends [custom labels, specified in writer](/anomaly-detection/components/writer.html#metrics-formatting) - follow the link for detailed output example. +## How is anomaly score calculated? +For most of the [univariate models](/anomaly-detection/components/models/#univariate-models) that can generate `yhat`, `yhat_lower`, and `yhat_upper` time series in [their output](/anomaly-detection/components/models/#vmanomaly-output) (such as [Prophet](/anomaly-detection/components/models/#prophet) or [Z-score](/anomaly-detection/components/models/#z-score)), the anomaly score is calculated as follows: +- If `yhat` (expected series behavior) equals `y` (actual value observed), then the anomaly score is 0. +- If `y` (actual value observed) falls within the `[yhat_lower, yhat_upper]` confidence interval, the anomaly score will gradually approach 1, the closer `y` is to the boundary. +- If `y` (actual value observed) strictly exceeds the `[yhat_lower, yhat_upper]` interval, the anomaly score will be greater than 1, increasing as the margin between the actual value and the expected range grows. + +Please see example graph illustrating this logic below: + +anomaly-score-calculation-example + + ## How does vmanomaly work? `vmanomaly` applies built-in (or custom) [anomaly detection algorithms](/anomaly-detection/components/models.html), specified in a config file. Although a single config file supports one model, running multiple instances of `vmanomaly` with different configs is possible and encouraged for parallel processing or better support for your use case (i.e. simpler model for simple metrics, more sophisticated one for metrics with trends and seasonalities). @@ -45,7 +56,9 @@ Respective config is defined in a [`reader`](/anomaly-detection/components/reade `vmanomaly` models generate [metrics](/anomaly-detection/components/models.html#vmanomaly-output) like `anomaly_score`, `yhat`, `yhat_lower`, `yhat_upper`, and `y`. These metrics provide a comprehensive view of the detected anomalies. The service also produces [health check metrics](/anomaly-detection/components/monitoring.html#metrics-generated-by-vmanomaly) for monitoring its performance. ## Choosing the right model for vmanomaly -Selecting the best model for `vmanomaly` depends on the data's nature and the types of anomalies to detect. For instance, [Z-score](anomaly-detection/components/models.html#z-score) is suitable for data without trends or seasonality, while more complex patterns might require models like [Prophet](anomaly-detection/components/models.html#prophet). +Selecting the best model for `vmanomaly` depends on the data's nature and the [types of anomalies](https://victoriametrics.com/blog/victoriametrics-anomaly-detection-handbook-chapter-2/#categories-of-anomalies) to detect. For instance, [Z-score](anomaly-detection/components/models.html#z-score) is suitable for data without trends or seasonality, while more complex patterns might require models like [Prophet](anomaly-detection/components/models.html#prophet). + +Also, starting from [v1.12.0](/anomaly-detection/changelog/#v1120) it's possible to auto-tune the most important params of selected model class, find [the details here](https://docs.victoriametrics.com/anomaly-detection/components/models/#autotuned). Please refer to [respective blogpost on anomaly types and alerting heuristics](https://victoriametrics.com/blog/victoriametrics-anomaly-detection-handbook-chapter-2/) for more details. @@ -57,8 +70,86 @@ While `vmanomaly` detects anomalies and produces scores, it *does not directly g ## Preventing alert fatigue Produced anomaly scores are designed in such a way that values from 0.0 to 1.0 indicate non-anomalous data, while a value greater than 1.0 is generally classified as an anomaly. However, there are no perfect models for anomaly detection, that's why reasonable defaults expressions like `anomaly_score > 1` may not work 100% of the time. However, anomaly scores, produced by `vmanomaly` are written back as metrics to VictoriaMetrics, where tools like [`vmalert`](/vmalert.html) can use [MetricsQL](https://docs.victoriametrics.com/metricsql/) expressions to fine-tune alerting thresholds and conditions, balancing between avoiding [false negatives](https://victoriametrics.com/blog/victoriametrics-anomaly-detection-handbook-chapter-1/#false-negative) and reducing [false positives](https://victoriametrics.com/blog/victoriametrics-anomaly-detection-handbook-chapter-1/#false-positive). +## How to backtest particular configuration on historical data? +Starting from [v1.7.2](/anomaly-detection/changelog/#v172) you can produce (and write back to VictoriaMetrics TSDB) anomaly scores for historical (backtesting) period, using `BacktestingScheduler` [component](/anomaly-detection/components/scheduler/#backtesting-scheduler) to imitate consecutive "production runs" of `PeriodicScheduler` [component](/anomaly-detection/components/scheduler/#periodic-scheduler). Please find an example config below: + +```yaml +schedulers: + scheduler_alias: + class: "scheduler.backtesting.BacktestingScheduler" + # define historical period to backtest on + # should be bigger than at least (fit_window + fit_every) time range + from_iso: '2024-01-01T00:00:00Z' + to_iso: '2024-01-15T00:00:00Z' + # copy these from your PeriodicScheduler args + fit_window: 'P14D' + fit_every: 'PT1H' + +models: + model_alias1: + # ... + schedulers: ['scheduler_alias'] # if ommited, all the defined schedulers will be attached + queries: ['query_alias1'] # if ommited, all the defined queries will be attached + # https://docs.victoriametrics.com/anomaly-detection/components/models/#provide-series + provide_series: ['anomaly_score'] + # ... other models + +reader: + datasource_url: 'some_url_to_read_data_from' + queries: + query_alias1: 'some_metricsql_query' + sampling_frequency: '1m' # change to whatever you need in data granularity + # other params if needed + # https://docs.victoriametrics.com/anomaly-detection/components/reader/#vm-reader + +writer: + datasource_url: 'some_url_to_write_produced_data_to' + # other params if needed + # https://docs.victoriametrics.com/anomaly-detection/components/writer/#vm-writer + +# optional monitoring section if needed +# https://docs.victoriametrics.com/anomaly-detection/components/monitoring/ +``` + +Configuration above will produce N intervals of full length (`fit_window`=14d + `fit_every`=1h) until `to_iso` timestamp is reached to run N consecutive `fit` calls to train models; Then these models will be used to produce `M = [fit_every / sampling_frequency]` infer datapoints for `fit_every` range at the end of each such interval, imitating M consecutive calls of `infer_every` in `PeriodicScheduler` [config](/anomaly-detection/components/scheduler/#periodic-scheduler). These datapoints then will be written back to VictoriaMetrics TSDB, defined in `writer` [section](/anomaly-detection/components/writer/#vm-writer) for further visualization (i.e. in VMUI or Grafana) + ## Resource consumption of vmanomaly `vmanomaly` itself is a lightweight service, resource usage is primarily dependent on [scheduling](/anomaly-detection/components/scheduler.html) (how often and on what data to fit/infer your models), [# and size of timeseries returned by your queries](/anomaly-detection/components/reader.html#vm-reader), and the complexity of the employed [models](anomaly-detection/components/models.html). Its resource usage is directly related to these factors, making it adaptable to various operational scales. ## Scaling vmanomaly -`vmanomaly` can be scaled horizontally by launching multiple independent instances, each with its own [MetricsQL](https://docs.victoriametrics.com/metricsql/) queries and [configurations](/anomaly-detection/components/). This flexibility allows it to handle varying data volumes and throughput demands efficiently. +> **Note:** As of latest release we don't support cluster or auto-scaled version yet (though, it's in our roadmap for - better backends, more parallelization, etc.), so proposed workarounds should be addressed manually. + +`vmanomaly` can be scaled horizontally by launching multiple independent instances, each with its own [MetricsQL](https://docs.victoriametrics.com/metricsql/) queries and [configurations](/anomaly-detection/components/): + +- By splitting **queries**, [defined in reader section](/anomaly-detection/components/reader/?highlight=queries#vm-reader) and spawn separate service around it. Also in case you have *only 1 query returning huge amount of timeseries*, you can further split it by applying MetricsQL filters, i.e. using "extra_filters" [param in reader](/anomaly-detection/components/reader/?highlight=extra_filters#vm-reader) + +- or **models** (in case you decide to run several models for each timeseries received i.e. for averaging anomaly scores in your alerting rules of `vmalert` or using a vote approach to reduce false positives) - see `queries` arg in [model config](/anomaly-detection/components/models/#queries) + +- or **schedulers** (in case you want the same models to be trained under several schedules) - see `schedulers` arg [model section](/anomaly-detection/components/models/#schedulers) and `scheduler` [component itself](/anomaly-detection/components/scheduler/) + + +```yaml +# config file #1, for 1st vmanomaly instance +# ... +reader: + # ... + queries: + extra_big_query: metricsql_expression_returning_too_many_timeseries + extra_filters: + # suppose you have a label `region` with values to deterministically define such subsets + - '{region="region_name_1"}' + # ... +``` + +```yaml +# config file #2, for 2nd vmanomaly instance +# ... +reader: + # ... + queries: + extra_big_query: metricsql_expression_returning_too_many_timeseries + extra_filters: + # suppose you have a label `region` with values to deterministically define such subsets + - '{region="region_name_2"}' + # ... +``` diff --git a/docs/anomaly-detection/README.md b/docs/anomaly-detection/README.md index bda519909..682e69ddd 100644 --- a/docs/anomaly-detection/README.md +++ b/docs/anomaly-detection/README.md @@ -49,7 +49,7 @@ Got questions about VictoriaMetrics Anomaly Detection? Chances are, we've got th Dive into [our FAQ section](/anomaly-detection/FAQ) to find responses to common questions. ## Get in Touch -We're eager to connect with you and tailor our solutions to your specific needs. Here's how you can engage with us: +We are eager to connect with you and adapt our solutions to your specific needs. Here's how you can engage with us: * [Book a Demo](https://calendly.com/victoriametrics-anomaly-detection) to discover what our product can do. * Interested in exploring our [Enterprise features](https://victoriametrics.com/products/enterprise), including [Anomaly Detection](https://victoriametrics.com/products/enterprise/anomaly-detection)? [Request your trial license](https://victoriametrics.com/products/enterprise/trial/) today and take the first step towards advanced system observability. From 8b6a31d8c63fd7e0dff9fed694c524a80baeb096 Mon Sep 17 00:00:00 2001 From: Zakhar Bessarab Date: Thu, 30 May 2024 15:39:32 +0400 Subject: [PATCH 8/8] docs/metricsql: fix typo in link (#6384) ### Describe Your Changes Fix typo in link. ### Checklist The following checks are **mandatory**: - [x] My change adheres [VictoriaMetrics contributing guidelines](https://docs.victoriametrics.com/contributing/). Signed-off-by: Zakhar Bessarab --- docs/MetricsQL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/MetricsQL.md b/docs/MetricsQL.md index 3c6e82da3..158b0725f 100644 --- a/docs/MetricsQL.md +++ b/docs/MetricsQL.md @@ -328,7 +328,7 @@ See also [increases_over_time](#increases_over_time). `default_rollup(series_selector[d])` is a [rollup function](#rollup-functions), which returns the last [raw sample](https://docs.victoriametrics.com/keyconcepts/#raw-samples) value on the given lookbehind window `d` per each time series returned from the given [series_selector](https://docs.victoriametrics.com/keyconcepts/#filtering). -Compared to [last_over_time](last_over_time) it accounts for [staleness markers](https://docs.victoriametrics.com/vmagent/#prometheus-staleness-markers) to detect stale series. +Compared to [last_over_time](#last_over_time) it accounts for [staleness markers](https://docs.victoriametrics.com/vmagent/#prometheus-staleness-markers) to detect stale series. If the lookbehind window is skipped in square brackets, then it is automatically calculated as `max(step, scrape_interval)`, where `step` is the query arg value passed to [/api/v1/query_range](https://docs.victoriametrics.com/keyconcepts/#range-query) or [/api/v1/query](https://docs.victoriametrics.com/keyconcepts/#instant-query),