Released at 2026-07-16
Update note 1: the base Docker image has been changed from Alpine to distroless in order to reduce an attack surface (The distroless base image doesn't contain any executables contrary to the Alpine base image). For debugging VictoriaLogs containers in Kubernetes it is recommended to use kubectl debug.
Update note 2: VictoriaLogs no longer provides a Docker image for the linux/386 platform because the distroless base image doesn't support this platform. Executable files for linux/386 platform are still published at the VictoriaLogs releases page.
-
SECURITY: upgrade Go builder from Go1.26.4 to Go1.26.5. See the list of issues addressed in Go1.26.5.
-
FEATURE: switch base Docker image from Alpine to distroless for VictoriaLogs,
vlagentandvlogscli. This reduces the image size and attack surface. See #1228. -
FEATURE: LogsQL: add
json_array_concatpipe for joining JSON array items stored in the given log field into a string with the given delimiter. See #712. -
FEATURE: data ingestion: adjust
_streamfield value according to the actual log fields. This simplifies importing of previously modified VictoriaLogs-exported data. See #1122. -
FEATURE: vlagent: add
-remoteWrite.basicAuth.usernameFilecommand-line flag for dynamically reloading basic auth username for the corresponding-remoteWrite.urlfrom the given file. See operator#2371. -
FEATURE: web UI: improve hits chart tooltip timestamp display by hiding excessive precision. See #1533.
-
FEATURE: web UI: add Quick start examples to autocomplete suggestions and show recent query history items alongside field and value suggestions. See #1498.
-
FEATURE: web UI: persist query history in browser local storage and show the last run time for history items. See #1498.
-
FEATURE: web UI: improve hits chart interval selector by using curated interval options and choosing a more suitable default step for the selected time range. See #1511.
-
FEATURE: web UI: sync grouping in raw logs panel with Hits chart. Raw Logs are no longer grouped by
_streamby default, and both panels now use the sameGroup bysetting. See #1534. -
FEATURE: web UI: persist the selected auto-refresh interval in the URL. See #1310.
-
BUGFIX: LogsQL: fix panic when using
uniq_values()in thestatspipe in VictoriaLogs cluster when somevlstoragenodes return no values for the requested field while othervlstoragenodes return values for the same group. See #1383. -
BUGFIX: LogsQL: properly select the top
Nlog entries in thejson_valuesstats function withsort by (...) limit Nwhen more thanNlogs match per group. Previously an arbitrary subset of the matching logs could be returned instead of the topNones. The returned entries were correctly sorted, but they could be the wrong entries. See #1311. -
BUGFIX: syslog data ingestion: avoid stamping RFC3164 messages received right after the new year with the previous year (which could drop them under a short
-retentionPeriod), and compute the year in-syslog.timezoneinstead of the server local timezone. See #1556. -
BUGFIX: LogsQL: fix
field_namespipe not respectinghidden_fields_filters. Fields listed inhidden_fields_filtersstill appeared infield_namesoutput, leaking their existence to the caller. See #1574. -
BUGFIX: LogsQL: fix a
vlselectcrash in cluster mode on some valid queries. This happened when amathpipe operand had the same name as a function (such asabs,roundorfloor), or whenfromwas used as a separator in thesplitpipe. See #1518. -
BUGFIX: LogsQL: allow
filterpipes without thefilterprefix when the filter starts with a non-word token or thenotkeyword, such as... | !foo,... | {host="x"},... | >5,... | =fooor... | not foo. These were unintentionally rejected withunexpected pipein v1.51.0. A non-word token (and thenotoperator) cannot clash with a pipe name, so it is unambiguously a filter. See #1522. -
BUGFIX: LogsQL: reject
field*wildcards in the comma-separated (no parens) form ofuniq,topandunrollpipes, consistently with their parens form, which already rejects wildcards. Previously a query such asuniq by foo*was accepted but could not be parsed back from its string representation. See #1487. -
BUGFIX: cluster version:
vlstoragenow returns the error and stops processing an/internal/select/*request when the request cannot be parsed, instead of continuing to handle it and writing the response twice. -
BUGFIX: cluster version: bump the internal protocol version for the delete endpoints, which switched to multipart encoding in v1.51.0 but kept the previous version. A version mismatch between
vlselectandvlstoragefor delete requests is now reported instead of silently mishandled. All cluster components must be upgraded together to use delete. -
BUGFIX: cluster version: avoid
cannot connect to storage node at ...: EOFerrors aftervlselectorvlinsertwas idle for more than 60 seconds. See #1440. -
BUGFIX: vlselect: respect
-search.maxQueueDurationfor queued requests. Previously, when the number of concurrent requests exceeded-search.maxConcurrentRequests, the extra requests could be queued for much longer than-search.maxQueueDuration(up to-search.maxQueryDuration) before being rejected, so a few slow queries could stall other requests for everyone. See #1554. -
BUGFIX: vlselect: properly register
-vmalert.proxyURLas a secret flag. Previously, this flag was registered after logger initialization and printed in plaintext on application startup. -
BUGFIX: vlselect: return
502 Bad GatewayHTTP response code for incoming queries when one of thevlstoragenodes runs a VictoriaLogs version with an incompatible internal API instead of400 Bad Request. This is consistent with the502 Bad Gatewayresponse returned when avlstoragenode is unavailable, and it allows building a proper failover scheme in high-availability setups. See these docs. -
BUGFIX: multi-level cluster setup: properly return
502 Bad GatewayHTTP response code when avlselectnode queries othervlselectnodes and the underlyingvlstorageis unavailable, as described at high availability docs. This allows configuring proper failover schemes to a healthy cluster. -
BUGFIX:
/select/tenant_ids: return tenant ids in a deterministic (sorted) order. Previously the order was random across requests. See #1575. -
BUGFIX: web UI: fix hits chart tooltip layout to prevent long values from overflowing the viewport. See #1536.
-
BUGFIX: web UI: fix filters sidebar opening on mobile. See #1537.