Released at 2026-11-13
v1.52.x is a line of LTS releases. It contains important up-to-date bugfixes for VictoriaLogs enterprise.
All these fixes are also included in the latest community release.
The v1.52.x line will be supported for at least 12 months since v1.52.0 release
Update note 1: the /internal/force_merge, /internal/force_flush, /internal/log_new_streams and /internal/partition/* HTTP endpoints now require the POST method for security reasons, in order to prevent GET-based SSRF attacks. Update any scripts or automation calling these endpoints via GET to use POST. See #1635.
Update note 2: requests to /select/vmalert/-/reload and other /select/vmalert/* paths ending with /config or /reload now require the -httpAuth.* credentials for security reasons. Previously, such requests were proxied to vmalert without checking the credentials. Add the credentials to any scripts calling these paths. See VictoriaMetrics#11548.
-
SECURITY: upgrade Go builder from Go1.26.8 to Go1.27.4. See Go1.27 release notes and the list of issues addressed in Go1.27.1, Go1.27.2, Go1.27.3 and Go1.27.4.
-
SECURITY: web UI: sanitize rendered HTML and Markdown in log messages and autocomplete descriptions to prevent cross-site scripting (XSS) attacks. See #1746.
-
SECURITY: querying: hide the fields matching any of the
hidden_fields_filtersargs passed in the request query string and in the request body. Previously, a client could see the hidden fields by passinghidden_fields_filtersin the request body, since it overrode thehidden_fields_filtersadded to the query string by an auth proxy such as vmauth. See #1848. -
FEATURE: Enterprise version of VictoriaLogs: run with the
-eulacommand-line flag to accept ESA. License keys are no longer verified. The-license,-licenseFile,-licenseFile.reloadIntervaland-license.forceOfflineflags are deprecated and are treated as-eula, so existing setups keep working. Thevm_license_expires_atandvm_license_expires_in_secondsmetrics are no longer exposed. See Running VictoriaMetrics Enterprise. -
FEATURE: deletion API: add the
-deleteAuthKeycommand-line flag for protecting the/delete/*endpoints with a dedicatedauthKey. This allows restricting who can delete logs independently of-httpAuth.*. See #1749. -
BUGFIX: web UI: prevent long group-by values from overflowing group headers. See #1663.
-
BUGFIX: web UI: prevent manually entered time ranges from shifting after Apply when using non-UTC time zones.
-
BUGFIX: web UI: fix bar chart tap, pan, and pinch-to-zoom interactions on mobile devices.
-
BUGFIX: web UI: fix the
Tableview to show all logs whenAllis selected forRows per page. Previously, the table showed no rows in this case. See #1661. -
BUGFIX: web UI: display the systemd-compatible
notice,crit,alert, andemerglog level labels instead of collapsing them intoinfoandfatal. See #1543. -
BUGFIX: web UI: keep the query autocomplete details panel open when interacting with it, so documentation links open and description text remains selectable. See #1810.
-
BUGFIX: web UI: stop rewriting the time range in the URL on every auto-refresh. Previously, each refresh of a relative time range changed the URL, so an idle tab with a short refresh interval could add thousands of entries per hour to the browser history. See #1676.
-
BUGFIX: Datadog data ingestion: fix incorrect
_timefor logs without thetimestampfield when they are sent after logs with thetimestampfield in the same request. See #1845. -
BUGFIX: querying: properly return logs for queries with subqueries at live tailing and at queries, which select the N newest logs, such as
/select/logsql/querywith thelimitquery arg or queries ending with| sort by (_time desc) limit N. Previously, subqueries in such queries could match only the logs from a few last seconds or minutes instead of the time range set in the query. As a result, live tailing could return no logs, while queries with thelimitcould return older logs instead of the newest ones. See #1850. -
BUGFIX: File Collector: properly resolve relative symlink log paths when searching for a rotated file after restart. Previously, unread lines of a log file rotated while
vlagentwas stopped could be lost if the log path was a relative symlink. See #1875. -
BUGFIX: web UI: show the first logs in the Live tab in narrow browser windows. Previously, these logs were hidden behind the page header and the tabs. See #1842.
-
BUGFIX: OpenTelemetry data ingestion: properly store the log message when
VL-Msg-FieldHTTP header is set. Now the field set via this header is used as the log message, while the log body is stored in thebodyfield. Previously, the ingested logs took the message from either the log body or the field set via this header, and the other one was lost. See these docs and #1884. -
BUGFIX: Kubernetes Collector: use the log timestamp from the container runtime for logs in the Kubernetes Log format. This fixes wrong
_timefor such logs from pods with non-UTC timezone, which could be shifted by the timezone offset. See #1883. -
BUGFIX: data ingestion: do not drop logs, which go after a line exceeding
-insert.maxLineSizeBytesnear the end of the request. This affected the JSON stream, Elasticsearch bulk and Journald ingestion APIs. Elasticsearch bulk requests also failed with themissing log message after the "create" or "index" commanderror. See #1827. -
BUGFIX: web UI: use exact filters instead of phrase filters when selecting field values in LogsQL autocomplete. See #1860.
-
BUGFIX: web UI: fix autocomplete suggestions for partially typed and completed LogsQL pipe commands, including commands with leading whitespace and different letter cases. See #1346.
-
BUGFIX: web UI: fix autocomplete caret positioning and preserve surrounding text and whitespace in multiline queries. See #1879.
-
BUGFIX: live tailing API: return an error if the query matches too many new logs per second, since such queries are not suitable for live tailing and could result in OOM crash of VictoriaLogs (or
vlselectin cluster mode). See these docs and #1837. -
BUGFIX:
/select/logsql/queryendpoint: properly return logs when thelimit=Nquery arg is passed to this endpoint. Also, properly return logs from LogsQL queries ending with| sort by (_time desc) limit Npipe. Previously, some logs could be missing or returned twice when many logs had the same timestamp. See #1882. -
BUGFIX: Syslog data ingestion: properly unescape the value of the last
cef.extension.*field in CEF messages. Previously the last value kept escape sequences such as\=, while all the other values were unescaped. See #1730. -
BUGFIX: HTTP querying APIs: apply the
-search.maxQueryLenlimit to theextra_filtersandextra_stream_filtersquery args. Previously, a deeply nested filter passed via these args could crash VictoriaLogs (orvlselectin cluster mode). See #1923. -
BUGFIX: VictoriaLogs cluster: properly return an error from
vlselectwhen one ofvlstoragenodes responds with an error (for example, because of misconfiguration), while partial responses are enabled via-search.allowPartialResponse. Previously, queries could return empty or incomplete results without any error in this case, depending on the order of nodes in-storageNode, so dashboards could silently show no logs. See #1935. -
BUGFIX: web UI: derive the log level in the Group view from the OpenTelemetry
severity_numberfield when it is set. Previously, the level was detected only from the text fields such asseverity_text, so logs with aseverity_numbercould be shown with a wrong level or without any level. See #1899. -
BUGFIX: hide values passed to
-pushmetrics.headerin startup logs,/metricsand/flags, since they can contain sensitive HTTP headers such asAuthorization. See VictoriaMetrics#11545. -
BUGFIX: security: make the
-deleteAuthKey,-logNewStreamsAuthKeyand-partitionManageAuthKeycommand-line flags override-httpAuth.*as documented. Previously, requests to/delete/*,/internal/log_new_streamsand/internal/partition/*had to pass both theauthKeyand the-httpAuth.*credentials. See #1764.