The following tip changes can be tested by building VictoriaLogs from the latest commit of VictoriaLogs
repository
according to
these docs
tip #
SECURITY: upgrade Go builder from Go1.25.2 to Go1.25.3. See the list of issues addressed in Go1.25.3 .
SECURITY: upgrade base docker image (Alpine) from 3.22.1 to 3.22.2. See Alpine 3.22.2 release notes .
FEATURE: web UI : add Overview page for quick log characteristic inspection. See #516 .
FEATURE: web UI : allows grouping hits graph by any field with configurable top-N. See #110 .
BUGFIX: pattern_match filter : fix non-progress loop in
pattern_match(...)filter when the pattern starts with a literal separator that occurs multiple times in the target string and the rest of the pattern doesn’t match. Previously this could make queries spin indefinitely. Now the matcher advances correctly and returns no match as expected. See #759 .BUGFIX: web UI : fix page not resetting after changing the query in the Group View tab. See #753 .
BUGFIX: web UI : fix log rendering with
markdownenabled andcollapse_numspipe . See #647 .
v1.36.1 #
Released at 2025-10-08
FEATURE: web UI : add support for zooming the Hits chart to millisecond precision. See #112 .
FEATURE: web UI : add warning modal for
limit > 500with session suppression; validate limit to[1, 10000]. See #500 .BUGFIX: web UI : fix incorrect X-axis time labels after switching time zones; axis ticks now reflect the selected time zone correctly.
v1.36.0 #
Released at 2025-10-08
SECURITY: upgrade Go builder from Go1.25.1 to Go1.25.2. See the list of issues addressed in Go1.25.2 .
FEATURE: LogsQL : improve
collapse_numspipe by treating_(underscore) as a separator for numeric tokens. This enables collapsing underscore‑delimited numbers (e.g.temp_23_175863242537_93_98_→temp_<N>_<N>_<N>_<N>_) for better normalization and grouping. See #703 .BUGFIX: HTTP querying APIs : treat
endquery arg as exclusive bound for time ranges, i.e. use[start, end)instead of[start, end], e.g. the first nanosecond at theendisn’t included in the selected time range. This affects endpoints acceptingstart/end(e.g./select/logsql/query,/select/logsql/hits,/select/logsql/stats_query_range,/select/logsql/streams, etc.). See VictoriaMetrics#9753 and #587 for more details.BUGFIX: all components: restore sorting order of summary and quantile metrics exposed by VictoriaLogs components on
/metricspage. See metrics#105 for details.
v1.35.0 #
Released at 2025-09-27
SECURITY: upgrade Go builder from Go1.25.0 to Go1.25.1. See the list of issues addressed in Go1.25.1 .
FEATURE: LogsQL : add
equals_common_casefilter andcontains_common_casefilter . These filters can be used as faster alternatives toi(...)filter . For example,_msg:contains_common_case("VictoriaMetrics")matches logs with the_msgfield containing at least one of the following words :VictoriaMetrics,victoriametrics,VICTORIAMETRICS,VictoriametricsorvictoriaMetrics.FEATURE:
/select/logsql/stats_query: allow placing other pipes in front of| stats ..., including pipes that modify or drop the_timefield. This relaxes the previous guard for instant stats and allows using queries like* | field_names | stats count()in instant queries at Grafana plugin for VictoriaLogs and in recording and alerting rules at vmalert . See #681 .FEATURE: Syslog data ingestion : automatically parse CEF messages embedded into Syslog messages. CEF messages (aka Common Event Format messages) are typically generated by SIEM systems . This simplifies using VictoriaLogs as a database for SIEM logs. See these docs for details.
FEATURE: LogsQL : add
set_stream_fieldspipe , which allows constructing the_streamfield from the given log fields. This pipe is going to be used by vlagent for logs’ transformation before sending them to the remote storage.FEATURE: metrics : expose minimum and maximum timestamps across stored logs via
vl_storage_log_min_timestamp_secondsandvl_storage_log_max_timestamp_secondsmetrics. See #695 .FEATURE: web UI : consistently display timestamps with nanosecond precision across all the views in the built-in web UI. See #675 .
BUGFIX:
facetspipe : properly skip field names with more thanmax_values_per_fieldunique values. Previously these fields could be returned with incomplete number of hits.BUGFIX:
renamepipe : keep fields starting withdstwhenrename src* dst*is used. Previously, all thedst*fields were incorrectly dropped. See #691 for more details.BUGFIX:
copypipe : keep fields starting withdstwhencopy src* dst*is used. Previously, all thedst*fields were incorrectly dropped. See #691 for more details.BUGFIX:
formatpipe : properly load the original field values for thedst_fieldwhen theif(...)part doesn’t match the current log entry inside the| format if (...) ... as dst_field. Previously thedst_fieldwas incorrectly skipped in this case unless thekeep_original_fieldsorskip_empty_resultsoptions were set.BUGFIX:
/select/logsql/stats_queryand/select/logsql/stats_query_rangeendpoints: allow usingunrollpipe in LogsQL queries at Grafana plugin for VictoriaLogs and at alerting and recording rules at vmalert . See #697 . The issue has been introduced in this commit , which had been included in VictoriaLogs v1.29.0 .BUGFIX:
/select/logsql/queryendpoint : properly handle queries with therenameandcopypipe, which modifies or removes the_timefield, when these queries are issued by Grafana plugin for VictoriaLogs or by the built-in web UI for VictoriaLogs . See #702 for more details.
v1.34.0 #
Released at 2025-09-22
FEATURE: querying : add the ability to return partial responses in VictoriaLogs cluster setup when some of the
vlstoragenodes are unavailable. See these docs for details. See #72 .FEATURE: LogsQL : add the ability to configure the number of parallel readers to use during query execution for reading the queried data from storage. This may help improve query performance for high-latency storage systems such as NFS, Ceph or S3. See these docs for details.
FEATURE: vlselect : add
-storageNode.usernameFilecommand-line flag for dynamically reloading basic auth username for the corresponding-storageNodefrom the given file. See #459 .BUGFIX:
/select/logsql/queryendpoint at VictoriaLogs cluster : properly execute the query with thelimit=Nquery arg. Such queries are issued by the built-in web UI for VictoriaLogs and by Grafana plugin for VictoriaLogs for returning the last N logs for the given query on the given time range. Previously it could return unexpected results. The issue has been introduced in v1.30.0 while fixing #587 .BUGFIX: LogsQL : disallow incorrectly written filters such as
foo = bar,foo != bar,foo > bar, etc. They must be written asfoo:=bar,foo:!=bar,foo:>bar. See #590 .BUGFIX: LogsQL : allow using unquoted pipe names inside LogsQL filters . For example,
fields.foo:baris allowed now, while previously it should be written as"fields.foo":bar. See #669 .BUGFIX: LogsQL : properly account for
result_prefixin unpack_json , unpack_logfmt and unpack_syslog when determining the list of log fields to select. See #671 .BUGFIX: vlselect : avoid
unexpected number of imported shardserror incount_uniqandcount_uniq_hashstats functions whenvlselectandvlstorageinstances have different number of CPU cores. See #682 .BUGFIX: properly detele unneeded directories at Ossfs2 filesystem . See #649 . Thanks to @xiaozongyang for the initial pull request .
BUGFIX: all Enterprise version of VictoriaLogs : fix support for automatic issuing of TLS certificates for HTTPS server via Let’s Encrypt service using TLS-ALPN-01 challenge. See Automatic issuing of TLS certificates for more info.
BUGFIX: all components: lower severity of the log message for unavailable Pressure Stall Information (PSI) metrics from ERROR to INFO level. See this issue for details.
BUGFIX: all components: properly expose metadata for summaries and histograms in VictoriaMetrics components with enabled
-metrics.exposeMetadatacmd-line flag. See metrics#98 for details.BUGFIX: OpenTelemetry ingestion : fix log processor name from “opentelelemtry_protobuf” to “opentelelemtry_protobuf”. This changes the
typelabel value for ingestion metrics such asvl_rows_ingested_total,vl_bytes_ingested_total, andvl_insert_flush_duration_secondsfor OpenTelemetry data ingestion.
v1.33.1 #
Released at 2025-09-11
FEATURE: LogsQL : optimize queries containing
| offset X | limit Yfor VictoriaLogs cluster. It also improves performance of queries in vmui and Grafana when retrieving sorted logs. See #620 .BUGFIX:
/select/logsql/queryendpoint : properly optimize the query execution when thelimitquery arg is set, while theoffsetquery arg isn’t set. It wasn’t addressed properly in v1.33.0 . See #620 .BUGFIX:
/select/logsql/hitsendpoint : take into account results from theunionpipe while calculating log hits. See #641 .BUGFIX:
/select/logsql/hitsendpoint : take into account results from thejoinpipe while calculating log hits.BUGFIX: Syslog data ingesting : keep nanosecond precision when parsing RFC3339 timestamp. See #303 .
v1.33.0 #
Released at 2025-09-10
FEATURE:
extractpipe : the<...>placeholder now matches quoted strings in single quotes additionally to strings in double quotes and backticks. For example, the<login>placeholder at the... | extact "login=<login>,"now matchesfoo,barfor the log message with the textlogin='foo,bar'.FEATURE: LogsQL : add pattern match filter for searching logs by the given patterns such as
<DATETIME>: user_id=<N>, ip=<IP4>, trace_id=<UUID>. These filters are needed for #518 .FEATURE: Syslog data ingestion : support for receiving Syslog messages from Unix sockets of
SOCK_STREAMandSOCK_DGRAMtypes via-syslog.listenAddr.unix=/path/to/socketand-syslog.listenAddr.unix=unixgram:/path/to/socketcommand-line flags. See #570 .BUGFIX: querying :
-search.maxQueryTimeRangecommand-line flag now supports day (d), week (w) and year (y) suffixes additionally to the supported hour (h), minute (m) and second (s) suffixes. See #50 .BUGFIX:
/select/logsql/queryendpoint : improve query performance when thelimitquery arg is set, while theoffsetquery arg is missing. The issue has been introduced in v1.28.0 . See #620 .BUGFIX:
/select/logsql/facetsendpoint : prevent from incorrect swap ofhitsandfield_valuesfields in VictoriaLogs cluster . See #648 .BUGFIX: querying in VictoriaLogs cluster : properly handle queries with pipe executed only at the
vlstorageside without the need to post-process at thevlselectside. The issue has been introduced in v1.31.0 while working on #52 .
v1.32.0 #
Released at 2025-09-03
- FEATURE:
LogsQL
: add
splitpipe for splitting log fields by the given separator. It is useful for parsing CSV or tab-separated data stored in log values. - FEATURE:
LogsQL
: add
running_statspipe for calculating running sum , running min, running max and running count over query results. - FEATURE:
LogsQL
: add
total_statspipe for calculating global sum, global min, global max and global count over query results. - FEATURE:
LogsQL
: add the ability to sort logs returned by
json_valuesstats function via... | stats json_values() sort by (...)syntax. The sorting can be combined withlimit Nto get the top N logs. For example, the following query returns up to the 3 most recent logs for everyhostover the last 5 minutes:_time:5m | stats json_values() sort by (_time desc) limit 3 as last_3_host_logs. - FEATURE:
LogsQL
: return errors on typical incorrectly written queries. For example,
foo=~"bar",foo~="bar",foo=bar,foo!=bar,foo>bar,foo==bar, etc. See #590 . - FEATURE: LogsQL : add substring filter , which searches for logs containing the given substring. Previously the regexp filter was used instead of substring filter. The downside of the regexp filter is that it needs proper escaping of special regexp chars.
- FEATURE:
querying
: expose
vl_storage_per_query_found_rowshistogram at the/metricspage, which shows the number of log entries found per query.
v1.31.0 #
Released at 2025-08-31
FEATURE: querying : add
-search.maxQueryTimeRangecommand-line flag, which can be used for limiting resource usage by queries with too broad time range filters . See resource usage limits docs for details. See #50 and #611 .FEATURE: LogsQL : add
query_statspipe for analyzing query execution statistics. This pipe may help understanding why the given query is slow and may help optimizing slow queries. See #52 .FEATURE: querying : expose
vl_storage_per_query_read_valueshistogram at the/metricspage, which shows the number of log field values read per query.FEATURE: querying : expose
vl_storage_per_query_read_timestampshistogram at the/metricspage, which shows the number of log timestamps read per query.FEATURE: querying : expose
vl_storage_per_query_uncompressed_values_processed_byteshistogram at the/metricspage, which shows the amount of bytes processed for uncompressed field values per query.FEATURE: querying : expose
vl_storage_per_query_processed_rowshistogram at the/metricspage, which shows the number of log entries processed per query.FEATURE: web UI : always sort field names in alphabetical order in the JSON view. This simplifies exploring logs with a large number of fields (such as wide events ). See #87 .
FEATURE: add
/internal/partition/snapshot/createHTTP endpoint for creating instant snapshots for per-day partitions. See these docs for details.FEATURE: add
/internal/partition/snapshot/listHTTP endpoint, which returns the list of absolute paths to snapshots created via/internal/partition/snapshot/create. See these docs for details.FEATURE: add
/internal/partition/listHTTP endpoint, which returns the list of currently active partitions. See partition lifecycle docs for details.BUGFIX: querying HTTP APIs : properly return
VL-Request-Duration-SecondsHTTP response header from/select/logsql/queryendpoint when it returns an empty result. Previously this header wasn’t set for empty result. This is needed for #602 .
v1.30.0 #
Released at 2025-08-27
FEATURE: HTTP querying APIs : return the actual query execution time in the
VL-Request-Duration-SecondsHTTP response header. This will be used for displaying the query execution time at vlogscli , at the built-in web UI and at Grafana plugin for VictoriaLogs .FEATURE:
/select/logsql/stats_query_rangeand/select/logsql/hits: returnVL-Selected-Time-RangeHTTP response header, which contains the original time range specified in the query without taking into accountstartandendquery args. The time range is returned as[start, end], wherestartandendare Unix timestamps in nanoseconds. This header is needed for built-in web UI in order to adjust the displayed time range to the time range specified by the user in the query. See #558 .FEATURE:
/select/logsql/hits: take into account pipes , which do not modify the_timefield , when calculating hits for the given query on the given time range. Previously all the pipes in the query were ignored. This could lead to unexpected results. For example,* | extract "statusCode=<statusCode>," | filter statusCode:200query was returning hits for all the logs instead of returning hits only for the logs containing the givenstatusCode. See this comment .FEATURE: querying HTTP APIs : take into account all the pipes specified in the query when returning the requested field names, field values and log streams from
/select/logsql/field_names,/select/logsql/field_values,/select/logsql/stream_field_names,/select/logsql/stream_field_values,/select/logsql/streamsand/select/logsql/stream_idsHTTP endpoints. This makes the auto-completion results at the built-in web UI and at the Grafana plugin for VictoriaLogs more expected. See this comment .FEATURE: web UI : show query execution time. See #602 for details.
BUGFIX: LogsQL : properly match newlines with ‘.’ char in regular expressions used by
extract_regexpandreplace_regexppipes. See #88 .BUGFIX: querying HTTP APIs : properly parse
endquery arg if it contains a numeric timestamp, which can be represented as RFC3339 timestamp with zero nanoseconds (e.g. only microseconds, milliseconds or seconds are non-zero). See #587 .BUGFIX: vlselect : return
502 Bad GatewayHTTP response code when one of thevlstorageservers is unavailable. Previously400 Bad RequestHTTP response code was incorrectly returned in this case. This helps build a proper failover scheme in high-availability setups for VictoriaLogs. See #576 .BUGFIX: web UI : fix incorrect logs sorting on the Group tab. See #579 for details.
BUGFIX: web UI : add button to control offset of live tailing. See #577 for details.
BUGFIX: web UI : escape value with double quotes when converting to a field filter.
v1.29.0 #
Released at 2025-08-22
- FEATURE: introduce Enterprise version of VictoriaLogs . See the list of Enterprise features . See also #120 .
- FEATURE: improve the scalability of data ingestion on systems with a large number of CPU cores. Previously only up to 40 CPU cores were used during logs’ ingestion into VictoriaLogs on AMD64 and ARM64 architectures, while the remaining CPU cores were idle. Remove the scalability bottleneck by switching from musl-based to glibc-based cross-compiler. This improved the data ingestion speed on a host with hundreds of CPU cores by more than 4x. See #517 .
- FEATURE: upgrade Go builder from Go1.24.6 to Go1.25.0. See Go1.25.0 release notes .
- FEATURE: expose
vl_total_disk_space_bytesmetric at/metricspage , which shows the disk space size for the-storageDataPathdirectory . This metric can be used for calculating the percentage of the free disk space via the following MetricsQL query:vl_free_disk_space_bytes / vl_total_disk_space_bytes. - FEATURE:
LogsQL
: implement
generate_sequencepipe, which allows generating logs with messages containing integer sequence numbers. This pipe is useful for debugging and testing LogsQL pipes. See these docs .
v1.28.0 #
Released at 2025-08-13
FEATURE: LogsQL : optimize queries ending with
| first N by (_time desc)and| last N by (_time)in the same way as queried ending with| sort by (_time desc) limit Nare optimized. This is a follow-up for #46 .FEATURE: LogsQL : add support for applying a global time offset to the
<q>query viaoptions(time_offset=<duration>) <q>syntax. This is useful for comparing query results on some time range to query results on the same time range with the given offset (similar to theoffsetmodifier in PromQL ). See these docs and #78 for details.FEATURE: LogsQL : add
| time_add <duration>pipe, which allows adding the given<duration>to_timefield (and to any other field). See these docs . This is a part of #78 .FEATURE: LogsQL : speed up queries that select a large number of logs and end with
| sort by (_time) desc offset M limit Npipe . These queries allow building simple pagination over the selected logs. See #96 .FEATURE: VictoriaLogs cluster : use HTTP POST instead of HTTP GET method for internal VictoriaLogs cluster communication to avoid hitting too long URI limits when too long queries are passed to VictoriaLogs. See #545 .
FEATURE: Syslog data ingestion : support rsyslog high-precision timestamps . See #303 .
BUGFIX:
sortpipe : properly sort logs for| sort by (_time desc) limit N. Previously they were incorrectly sorted in the ascending order of_time, while they must be sorted in the descending order of_time. The bug has been introduced in v1.27.0 when adding an optimized execution path for the| sort by (_time desc) limit N. See #46 .BUGFIX: /select/logsql/query : properly return
limit=Nlogs when they have identical_timevalue. Previously an empty result could be returned in this case.BUGFIX: Syslog data ingestion : properly parse FreeBSD dialect of Syslog messages, which may miss hostname. See #571 .
v1.27.0 #
Released at 2025-08-08
SECURITY: upgrade Go builder from Go1.24.5 to Go1.24.6. See the list of issues addressed in Go1.24.6 .
SECURITY: upgrade base docker image (Alpine) from 3.22.0 to 3.22.1. See Alpine 3.22.1 release notes .
FEATURE: LogsQL : speed up execution of queries that select a large number of logs and end with
| sort by (_time) desc limit Npipe . These queries return up to N logs with the largest_timefield values from a large number of selected logs (tens of millions and more). See #46 .FEATURE: web UI : update legend behavior in hits chart. The menu now opens on left-click, and visibility actions are moved to menu items. See #58 .
FEATURE: web UI : add the ability to show stream context for each log line. See #113 .
FEATURE: web UI : improve visibility of the Query History button. See #540 .
FEATURE: Syslog data ingestion : add the ability to record the remote IP address from received syslog messages into the
remote_iplog field. See these docs for details. Thanks to @biancalana for the pull request . See #40 .FEATURE: retention : support disk space percentage-based retention (
-retention.maxDiskUsagePercent), which helps dynamically manage total disk space usage. Only one of-retention.maxDiskSpaceUsageBytesor-retention.maxDiskUsagePercentcan be set; otherwise, the application will panic. See #513 .FEATURE: add the ability to dynamically attach and detach per-day partitions. This simplifies creating multi-tier storage schemes when recently ingested logs are stored on fast storage (such as NVMe or SSD), while historical logs are gradually migrated to less expensive storage with bigger capacity (such as HDD). See these docs and #432 .
FEATURE: querying : expose
vl_storage_per_query_processed_blockshistogram , which shows the number of data blocks processed per every query. This histogram can be used for analyzing query performance issues. See #45 .FEATURE: querying : expose histograms on the number of bytes read from disk for various data types per query (see #45 ):
vl_storage_per_query_total_read_bytes- the total number of bytes read during query execution.vl_storage_per_query_values_read_bytes- the number of bytes read for log field values.vl_storage_per_query_timestamps_read_bytes- the number of bytes read for the_timefield .vl_storage_per_query_bloom_filters_read_bytes- the number of bytes read for bloom filters (bloom filters are built from words seen in log fields and are used for quickly skipping blocks without the given words).vl_storage_per_query_block_headers_read_bytes- the number of bytes read for block headers (block headers contain various metadata about the data block).vl_storage_per_query_columns_headers_read_bytes- the number of bytes read for column headers (column headers contain information about column names in every data block).vl_storage_per_query_columns_header_indexes_read_bytes- the number of bytes read for column header indexes (these indexes contain the location of the per-column information in the column headers).
FEATURE: data ingestion : expose additional metrics, which can be used for troubleshooting data ingestion performance issues (see #45 ):
vl_active_merges{type="indexdb/inmemory"}- the number of active merges for in-memory indexdb (indexdb is used for indexing log stream fields ).vl_active_merges{type="indexdb/file"}- the number of active merges for file-based indexdb.vl_merges_total{type="indexdb/inmemory"}- the total number of background merges for in-memory indexdb parts.vl_merges_total{type="indexdb/file"}- the total number of background merges for file-based indexdb parts.vl_rows_merged_total{type="indexdb/inmemory"}- the total number of in-memory indexdb entries merged during the background merge.vl_rows_merged_total{type="indexdb/file"}- the total number of file-based indexdb entries merged during the background merge.vl_pending_rows{type="storage"}- the number of in-memory log entries, which were ingested, but weren’t stored to disk yet.vl_pending_rows{type="indexdb"}- the number of in-memory indexdb entries, which were ingested, but weren’t stored to disk yet.vl_merge_duration_seconds{type="storage/inmemory"}- the summary , which shows the duration of background merges for in-memory data parts.vl_merge_duration_seconds{type="storage/small"}- the summary, which shows the duration of background merges for small file-based data parts.vl_merge_duration_seconds{type="storage/big"}- the summary, which shows the duration of background merges for big file-based data parts.vl_merge_bytes{type="storage/inmemory"}- the summary, which shows the size of the created in-memory data parts.vl_merge_bytes{type="storage/small"}- the summary, which shows the size of the created small file-based data parts.vl_merge_bytes{type="storage/big"}- the summary, which shows the size of the created big file-based data parts.
BUGFIX: web UI : fix broken “Collapse all” button in Group view. See #509 . The bug has been introduced in v1.26.0 .
BUGFIX: web UI : fix chart axis label color on theme switch. See #541 .
BUGFIX: web UI : fix applying legend filter when using pipe filters. See #546 .
BUGFIX: data ingestion : prevent from possible crash when ingesting logs for dates, which are concurrently removed because of the configured retention . See #505 .
BUGFIX: data ingestion : support numbers and null in Loki structured metadata. See #547 .
v1.26.0 #
Released at 2025-07-18
FEATURE: vlogscli : add ability to configure auth options and TLS options for connections to the
-datasource.url. See auth options docs and TLS options docs . See this feature request . Thanks to @thom-vend for the initial pull request .FEATURE: web UI : add the ability to hide the logs panel to view only the graph. When the logs panel is hidden, the
/queryrequest is not executed.FEATURE: web UI : improve autocomplete functionality with enhanced quick autocomplete via hotkey support and removed special characters from autocomplete suggestions. See this comment for details.
BUGFIX: web UI : prevent groups from automatically expanding on list updates if all groups were previously collapsed. See #92 .
BUGFIX: data ingestion : restore logging of too long ingested lines in order to simplify debugging of such cases. See #430 . The regression has been introduced in v1.24.0-victorialogs .
BUGFIX: properly persist newly created data on unclean shutdown such as power off, hardware crash or operating system crash. See #505 .
v1.25.1 #
Released at 2025-07-14
SECURITY: upgrade Go builder from Go1.24.4 to Go1.24.5. See the list of issues addressed in Go1.24.5 .
FEATURE: VictoriaLogs cluster : expose
vl_insert_remote_send_errors_total,vl_select_remote_send_errors_totalandvl_insert_remote_is_reachablemetrics at the/metricspage for monitoring failed remote insert/select attempts pervlstoragenode and detecting temporarily unavailablevlstoragenodes.BUGFIX: properly return VictoriaLogs version at
./victoria-logs -versionand at thevm_app_versionmetric exposed via/metricspage . See #409 . The bug has been introduced in v1.25.0 .
v1.25.0 #
Released at 2025-07-07
VictoriaLogs source code has been moved from VictoriaMetrics repository
to its own github.com/VictoriaMetrics/VictoriaLogs
repository. All the future development will be performed in the new repository. The -victorialogs suffix is removed from the release tag and from docker image tags starting from v1.25.0 release
FEATURE:
formatpipe : add support for Unix timestamps in seconds, milliseconds and microseconds additionally to nanoseconds when using<time:field_name>formatting. See this issue .BUGFIX: data ingestion : properly parse fractional Unix timestamps with millisecond, microsecond and nanosecond precision in the ingested logs. Previously the precision loss in the parsed timestamps could occur. See this comment for details.
BUGFIX:
rate_sumstats function : fix inconsistent per-second rate calculation when time filters are specified via HTTP query parameters instead of LogsQL expression. This affects recording rule results. See #9303 .BUGFIX: web UI : disabled opening of autocomplete popup on initial page load.
v1.24.0 #
Released at 2025-06-20
FEATURE: add
-http.disableKeepAliveto disable HTTP keep-alives for incoming connections. The flag could improve load balancing among replicas behind HTTP load balancers. See #9125 and #2395 for details.FEATURE:
deletepipe : allow deleting all the fields with common prefix via... | delete prefix*syntax.FEATURE:
fieldspipe : allow keeping all the fields with common prefix via... | fields prefix*syntax.FEATURE:
copypipe : allow copying all the fields with common prefix to fields with another common prefix via... | copy old_prefix* as new_prefix*syntax.FEATURE:
renamepipe : allow renaming all the fields with common prefix to fields with another common prefix via... | rename old_prefix* as new_prefix*syntax.FEATURE:
unpack_jsonpipe : allow unpacking JSON fields with common prefix via... fields (prefix*)syntax.FEATURE:
unpack_logfmtpipe : allow unpacking JSON fields with common prefix via... fields (prefix*)syntax.FEATURE:
avgstats function : allow calculating the average value over all the fields with common prefix viaavg(prefix*)syntax.FEATURE:
maxstats function : allow calculating the maximum value over all the fields with common prefix viamax(prefix*)syntax.FEATURE:
minstats function : allow calculating the minimum value over all the fields with common prefix viamin(prefix*)syntax.FEATURE:
medianstats function : allow calculating the median value over all the fields with common prefix viamedian(prefix*)syntax.FEATURE:
quantilestats function : allow calculating the maximum value over all the fields with common prefix viaquantile(prefix*)syntax.FEATURE:
sumstats function : allow calculating the sum for all the fields with common prefix viasum(prefix*)syntax.FEATURE:
sum_lenstats function : allow calculating the sum of byte lengths for all the fields with common prefix viasum_len(prefix*)syntax.FEATURE:
countstats function : allow calculating the number of logs with at least a single non-empty field across fields with common prefix viacount(prefix*)syntax.FEATURE:
count_emptystats function : allow calculating the number of logs with empty fields with common prefix viacount_empty(prefix*)syntax.FEATURE:
rate_sumstats function : allow calculating the per-second rate over the sum of all the fields with common prefix viarate_sum(prefix*)syntax.FEATURE:
row_anystats function : allow returning all the fields with common prefix viarow_any(prefix*)syntax.FEATURE:
row_maxstats function : allow returning all the fields with common prefix viarow_max(max_field, prefix*)syntax.FEATURE:
row_minstats function : allow returning all the fields with common prefix viarow_min(min_field, prefix*)syntax.FEATURE:
uniq_valuesstats function : allow fetching unique values for all the fields with common prefix viauniq_values(prefix*)syntax.FEATURE:
valuesstats function : allow fetching values for all the fields with common prefix viavalues(prefix*)syntax.FEATURE:
json_valuesstats function : allow fetching values for all the fields with common prefix viajson_values(prefix*)syntax.FEATURE:
-insert.maxLineSizeBytes: add logging of the number of bytes skipped for oversize lines.FEATURE: add
-insert.disableand-select.disablecommand-line flags for disabling both public and internal HTTP endpoints (/insert/*+/internal/insertand/select/*+/internal/select/*respectively). See #9061 .FEATURE: web UI : enhance autocomplete with parsed field suggestions from unpack pipe. See this issue .
FEATURE: Journald data ingestion : automatically add
levellog field according to thePRIORITYfield value . This enables log level highlighting in Grafana . See #8535 .FEATURE: Syslog data ingestion : automatically add
levellog field according to theseverityfield value . This enables log level highlighting in Grafana .FEATURE: Journald data ingestion : use
(_MACHINE_ID, _HOSTNAME, _SYSTEMD_UNIT)fields as log stream fields by default. See #9143 .FEATURE: LogsQL : optimize
(any_filter or *)filters to*. This avoids executing theany_filter. Such filters are frequently generated by Grafana.FEATURE:
/select/logsql/queryendpoint : optimize the input query after adding thelimitto it. This improves performance and reduces memory usage for queries ending withsortpipe . See #9200 . Thanks to @vadimalekseev for the fix .BUGFIX: query API : properly set storage node authorization in cluster mode when Basic Auth is enabled. See #9080 .
BUGFIX: web UI : live tailing tab automatically reconnects when the connection is lost. See this issue .
BUGFIX: web UI : fix issue with hits chart ignoring selected AccountID and ProjectID. See #9157 .
BUGFIX: web UI : fix missing field values in auto-complete. See this issue
BUGFIX: web UI : remove the compact mode of the table tab and add field sorting capabilities to the JSON tab. See #7047 .
BUGFIX: web UI : fix errors in console about loading of
manifest.jsonwhen accessing UI through vmauth with Basic Auth enabled.BUGFIX: Journald data ingestion : properly read log timestamp from
__REALTIME_TIMESTAMPfield according to the docs . See #9144 . The bug has been introduced in v1.22.0-victorialogs .BUGFIX: data ingestion : support
-as a timestamp value, as described in RFC5424 .BUGFIX: LogsQL : properly handle quotes inside quoted strings such as
"\"". Previously this could lead to panics. See #9219 .BUGFIX: LogsQL regexp filter : properly parse unquoted filter ending with
*, such asfoo:~bar.*. It must be parsed asfoo:~"bar.*", while previously it was incorrectly parsed asfoo:~"bar.".BUGFIX: Journald data ingestion : properly read large Journald requests in streaming manner. See #9070 . Deprecate
-journald.maxRequestSizecommand-line flag, since it is no longer used.
v1.23.3 #
Released at 2025-06-02
- BUGFIX:
live tailing API
: properly return live tailing results. Previously some of these results could be missing, while others could be returned out of order (e.g. improperly sorted by
_timefield ). The issue has been introduced in v1.18.0 . - BUGFIX:
query API
: properly return the last
limitlogs on the selected time range if thelimitquery arg is passed to/select/logsql/query. Previously logs could be returned without proper sorting because of the bug, which has been introduced in v1.18.0 . - BUGFIX:
querying HTTP APIs
: properly drop LogsQL pipes from the provided
querybefore obtaining field names and values. This is needed in order to properly implement auto-suggestion for log field names and values. See #9068 .
v1.23.2 #
Released at 2025-05-30
- BUGFIX:
web UI
: correctly handle
sortpipe in queries — UI now respects the server-defined sort order instead of always sorting by time. See #8660 . - BUGFIX: web UI : add alphabetical sorting for record fields in selectors and table view. See #8438 .
- BUGFIX: web UI : fix an issue where queries were not triggered when relative time was selected and the chart was hidden. See #8983 .
v1.23.1 #
Released at 2025-05-29
- BUGFIX:
multi-level cluster setup
: properly calculate
statspipe functions when avlselectnode queries othervlselectnodes, which, in turn, queryvlstoragenodes. Previously such setup resulted in theunexpected non-empty tail lefterror for all the queries withstatspipe (explicit or implicit). See #8815 .
v1.23.0 #
Released at 2025-05-28
FEATURE: web UI : add “Live” tab that allows monitoring logs in real-time as they arrive. This feature helps users to observe the most recent log entries without manual refreshing, making troubleshooting and monitoring more efficient. See #7046 .
FEATURE: dashboards/cluster and dashboards/single : add panels for Pressure Stall Information (PSI) metrics to dashboards. They could help to identify shortage of resources for VictoriaLogs components.
FEATURE:
mathpipe : addnow()function, which returns the current Unix timestamp in nanoseconds.BUGFIX: OpenTelemetry : properly handle nested attributes by expanding them into separate top-level fields. See this issue .
BUGFIX: Datadog : respond with HTTP 202 instead of HTTP 200 on successful Datadog endpoint ingestion, as it’s strictly required by the Datadog agent. See #8956 .
BUGFIX: web UI : properly escape special characters in field values shown in autocomplete suggestions. See #8925 .
BUGFIX: LogsQL : Properly handle time filters when querying vlstorage directly or through vlselect. See #8985 .
BUGFIX: Self-healing from OOM interruption during the creation of a daily partition. See #8873 .
v1.22.2 #
Released at 2025-05-10
v1.22.1 #
Released at 2025-05-09
v1.22.0 #
Released at 2025-05-08
FEATURE: LogsQL : add
decolorizepipe for dropping ANSI color codes from the given log fields.FEATURE: data ingestion : add the ability to remove ANSI color codes from the ingested log fields before storing them in the database. This can be done by passing comma-separated list of field names to remove ANSI color codes from, to
decolorize_fieldsHTTP query arg or toVL-Decolorize-FieldsHTTP header. See these docs for details.FEATURE: data ingestion : support for comma-separated list of fields at the
_time_fieldHTTP query arg and atVL-Time-FieldHTTP header. Then the first non-empty log field from the list is used as a timestamp field. This is useful when the ingested logs may contain log timestamp across different fields. See these docs for details.FEATURE: web UI : add sorting of fields by key in the Group tab. See #8438 .
FEATURE: JSON lines data ingestion : return
400 Bad Requestif no logs were successfully processed. This improves error visibility for malformed requests. See this issue .BUGFIX: web UI : fix log entry sorting in group mode (newest logs appear first). See #8726 .
BUGFIX: web UI : fix page freeze after timeline zooming and panning. See #8655 .
BUGFIX: replace_regexp : fixed infinite loop when regex pattern matches empty strings (e.g.
\d*,(),\b). Also fixed incorrect behavior with anchors (^) due to repeated string slicing. See this issue .
v1.21.0 #
Released at 2025-04-25
FEATURE: querying : support for multiple
extra_filtersandextra_stream_filtersargs. This should simplify applying multiple independent filters to thequery. See these docs and this comment .FEATURE: data ingestion : add the ability to force-flush recently ingested logs so they become available for querying. See these docs .
FEATURE: LogsQL : add
samplepipe , which returns1/Nthrandom sample for the selected logs.FEATURE: web UI : add a toggle to handle ANSI escape sequences in log messages. See this issue .
BUGFIX: web UI : fix the Group tab to display raw JSON when
_msgis missing. See this issue .BUGFIX: web UI : fix display of
Query historyicon in mobile view. See this issue .BUGFIX: web UI : fix zoom behavior on logs chart. See this issue .
BUGFIX: web UI : preserve zoom selection in the logs chart when auto-refresh is enabled. See this issue .
v1.20.0 #
Released at 2025-04-22
FEATURE: data ingestion : reduce CPU usage by up to 10x when ingesting small number of log entries per request.
FEATURE: dashboards/cluster : add Grafana dashboard for cluster version of VictoriaLogs. The source of the dashboard is available here and will continue improving with time.
FEATURE: deployment/docker : add docker-compose environment for VictoriaLogs cluster deployment. It is intended for demonstrative purposes, includes alerting and Grafana dashboards.
BUGFIX: web UI : fix high CPU usage when hovering over log entries due to complex button styles. See this issue .
BUGFIX: web UI : add 0 label to the Y axis. See this issue .
BUGFIX: OpenTelemetry : add missed WARN severity levels. See this issue . Thanks to @090809 for the bugfix .
v1.19.0 #
Released at 2025-04-17
FEATURE:
formatpipe : add the ability to format duration values as floating-point seconds via<duration_seconds:field_with_duration_value>syntax.FEATURE: web UI : add button for downloading displayed logs. It supports downloading in the following formats: CSV, JSON. See this issue . Thanks to @arturminchukov.
FEATURE: web UI : optimize vmui for mobile layout to use space more efficiently. See this pull request . Thanks to @arturminchukov.
FEATURE: web UI : add query history for quick access to previously executed queries, in a way similar to VictoriaMetrics. See this issue . Thanks to @arturminchukov.
BUGFIX: data ingestion : properly store the contents of the
_msgfield for newly ingested logs. It was incorrectly replaced withmissing _msg field; see https://docs.victoriametrics.com/victorialogs/keyconcepts/#message-fieldbecause of the bug in v1.18.0 . See this issue .BUGFIX: web UI : fix incorrect table sorting for numeric columns. See this issue .
v1.18.0 #
Released at 2025-04-10
FEATURE: add cluster mode , which allow scaling VictoriaLogs horizontally to multiple nodes. See this issue , this feature request , this question .
FEATURE:
statspipe : addjson_valuesfunction for JSON-encoding logs into JSON arrays.FEATURE: stream filters : support
{field in (*)}and{field not_in (*)}to be consistent within(*). The{field in (*)}matches any log stream , while the{field not_in (*)}matches zero log streams. This is needed for this feature request for VictoriaLogs datasource in Grafana .BUGFIX: web UI : fix endless group expansion loop bug. See this issue .
BUGFIX: web UI : respect nanosecond precision when sorting logs. See this issue .
v1.17.0 #
Released at 2025-03-16
Update note: this release changes data storage format in backwards-incompatible way, so it is impossible to downgrade to the previous releases after upgrading to this release. It is safe upgrading to this release and all the future releases from older releases.
FEATURE: data ingestion : support zstd compression for all HTTP-based ingestion protocols. See this and this issues.
FEATURE: data ingestion : allow specifying prefixes for log fields, which must be ignored during data ingestion, at
ignore_fieldsHTTP query arg and atVL-Ignore-FieldsHTTP header. For example,ignore_fields=foo.*,bar.baz.*will ignore all the log fields , which start fromfoo.or frombar.baz.. See these docs for details.FEATURE: stream filter : support
{label in ("v1", ..., "vN")}and{label not_in ("v1", ..., "vN")}syntax. It is equivalent to{label=~"v1|...|vN"}and{label!~"v1|...|vN"}respectively, wherev1, … ,vNare properly escaped inside regexp. For example,{app in ("foo.bar","baz")}is equivalent to{app=~"foo\\.bar|baz"}- note that the.char is properly escaped inside the regexp.FEATURE: improve performance when processing constant log fields with length exceeding 256 bytes. For example, repeated stack traces.
BUGFIX: Loki data ingestion : return
204 No ContentHTTP response code from/insert/loki/api/v1/pushendpoint. Previously200 Successcode was sent. See this issue .BUGFIX: OpenTelemetry data ingestion : properly parse
trace_idandspan_idlog fields as hex numbers. See this issue for details. Thanks to @forgethub for the pull request .
v1.16.0 #
Released at 2025-03-12
FEATURE: Loki data ingestion : automatically parse JSON-encoded log fields from the plaintext log message and store them as separate log fields . This behavior allows achieving lower disk space usage and higher query performance compared to the case when the JSON-encoded log fields were stored in VictoriaLogs as a plaintext log message, which should be parsed at query time with
unpack_jsonpipe . The previous behavior can be restored if needed by passing the-loki.disableMessageParsingcommand-line flag to VictoriaLogs (the previous behavior isn’t recommended because it is less efficient). See this feature request .BUGFIX: querying : properly parse floating-point numbers with leading zeroes in fractional part (for example,
12.03or1.0002). Parsing for these numbers has been broken in v1.15.0 . See this issue .BUGFIX: data ingestion : support floating-point timestamps for Elasticsearch data ingestion protocol . See this issue .
BUGFIX: OpenTelemetry data ingestion : properly convert nested OpenTelemetry attributes into JSON. See this issue .
v1.15.0 #
Released at 2025-02-27
FEATURE:
pack_jsonpipe : allow packing fields, which start with the given prefixes. For example,pack_json fields (foo.*, bar.*)creates a JSON containing all the fields, which start with eitherfoo.orbar..FEATURE:
pack_logfmtpipe : allow packing fields, which start with the given prefixes. For example,pack_logfmt fields (foo.*, bar.*)creates logfmt message containing all the fields, which start with eitherfoo.orbar..FEATURE: expose
vl_http_request_duration_secondssummaries for select APIs at the /metrics page.FEATURE: allow passing
*as a subquery insidein(*),contains_any(*)andcontains_all(*)filters . Such filters are treated asmatch allaka*. This is going to be used by Grafana plugin for VictoriaLogs . See this issue .FEATURE: victorialogs dashboard : add panels to display amount of ingested logs in bytes, latency of select APIs calls, troubleshooting panels.
FEATURE: provide alternative registry for all VictoriaLogs components at Quay.io : VictoriaLogs and vlogscli .
BUGFIX: do not treat a string containing leading zeros as a number during data ingestion and querying. For example,
00123string shouldn’t be treated as123number. See this issue .
v1.14.0 #
Released at 2025-02-25
FEATURE: add
lt_fieldfilter , which can be used for obtaining logs where the given field value doesn’t exceed the other field value.FEATURE: add
le_fieldfilter , which can be used for obtaining logs where the given field value is smaller or equal to the other field value.BUGFIX: elasticsearch data ingestion : support health-check endpoint requested by Jaeger v2. See this issue .
BUGFIX:
stats_query_rangeHTTP endpoint : fix inconsistent result ofstats_query_rangeAPI. See this issue .
v1.13.0 #
Released at 2025-02-22
- FEATURE: add
contains_allfilter , which matches logs containing all the given words / phrases in the given log field . - FEATURE: add
contains_anyfilter , which matches logs containing at least one of the given words / phrases in the given log field . - FEATURE: add
eq_fieldfilter , which can be used for obtaining logs with identical values at the given log fields . - FEATURE: add
unpack_wordspipe for unpacking individual words from the given log field into the given destination field as JSON array. - FEATURE: add
json_array_lenpipe for calculating the length of JSON array stored in the given log field .
v1.12.0 #
Released at 2025-02-20
- FEATURE:
_timefilter : allow using>,>=,<and<=. For example,_time:<2025-02-24Zselects all the logs with_timefield less than2025-02-24by UTC. Another example:_time:>1dselects all the logs with_timefield older than one day from the current time. This simplifies querying VictoriaLogs. - FEATURE:
toppipe : allow specifying the list of log fields without parens. For example,top 5 foois equivalent totop 5 by (foo). - FEATURE:
uniqpipe : allow specifying the list of log fields without parens. For example,uniq foois equivalent touniq (foo). - FEATURE:
unrollpipe : allow specifying the list of log fields without parens. For example,unroll foois equivalent tounroll (foo).
v1.11.0 #
Released at 2025-02-19
Update note: this release changes data storage format in backwards-incompatible way, so it is impossible to downgrade to the previous releases after upgrading to this release. It is safe upgrading to this release and all the future releases from older releases.
FEATURE: improve per-field data locality on disk. This reduces overhead related to reading data from unrelated fields during queries. This improves query performance over structured logs with a large number of fields (aka wide events ) when only a small portion of fields are used in the query.
FEATURE: data ingestion : reduce memory usage by up to 4x when ingesting wide events at high rate into VictoriaLogs.
FEATURE: web UI : add ability to limit the number of logs per page in the Group view (client-side). See this pull request .
BUGFIX: data ingestion : Fixed journald ingestion to support entities with single-character names. See this issue .
v1.10.1 #
Released at 2025-02-14
- BUGFIX:
statspipe : fix a possibleconcurrent map writespanic when usingcount_uniqandcount_uniq_hashfunctions over a large number of uniquestats by (...)groups. The bug was introduced in v1.9.0-victorialogs . - BUGFIX:
LogsQL
: properly calculate
<q> | len(f) f_len | min(f_len). Previously it incorrectly returned0if the minimum value length forffield is bigger than0. - BUGFIX:
statspipe : properly calculate stats functions with additional filters . Previously some stats functions could return incorrect results if the additional filter filters out all the values in the processed data block.
v1.10.0 #
Released at 2025-02-12
FEATURE: OpenTelemetry data ingestion : support parsing of
span_idandtrace_idlog fields. See this issue for details.FEATURE: Journald data ingestion : add support for data compression at journald side. See this pull request .
FEATURE:
statsby time buckets ,statsby field buckets ,statsby IPv4 buckets : improve performance for large buckets.BUGFIX: web UI : respect the selected tenant for autocomplete suggestions. See this issue .
BUGFIX:
statsby time buckets : properly align start of the week to Monday atstats by (_time:week) .... Previously the week was started on Wednesday. The start of the week can be adjusted with offset . For example, the following query aligns the start of the week to Sunday:_time:30d | stats by (_time:week offset -1d) count() | sort by (_time).BUGFIX:
statsby field value buckets : properly calculate buckets for negative values.BUGFIX: syslog data ingestion : correctly parse rows with allowed in rfc5424
\]character. See this issue .
v1.9.1 #
Released at 2025-02-10
- BUGFIX:
web UI
: properly apply this
and this
bugfixes. They weren’t applied to
v1.9.0-victorialogsby an accident.
v1.9.0 #
Released at 2025-02-10
FEATURE: LogsQL : improve performance for
stats by (...) ...by up to 30% when it is applied to a large number ofby (...)groups.FEATURE: LogsQL : improve performance for
toppipe by up to 30% when it is applied to a large number of unique values.FEATURE:
statspipe : improve performance forcount_uniqandcount_uniq_hashfunctions by up to 30% when they are applied to a large number of unique values.FEATURE:
block_statspipe : return the path to the part where every data block is stored. The path to the part is returned in thepart_pathfield. This allows investigating the distribution of data blocks among parts.FEATURE: reduce VictoriaLogs startup time by multiple times when it opens a large datastore with big retention .
FEATURE: data ingestion : accept timestamps with microsecond and nanosecond precision at
_timefield .FEATURE: JSON lines data ingestion : continue parsing lines after encountering parse errors for some lines. Previously the input JSON lines’ stream was closed after the first parse error.
FEATURE: web UI : add the
_msgfield to the list of fields for the group view, allowing users to select multiple fields, including_msg, for log display.BUGFIX: LogsQL : properly limit
concurrencyquery option forstats,uniqandtop. This prevents fromruntime error: index out of rangepanic. See this issue .BUGFIX:
sortpipe : properly sort RFC3339 timestamps with variable sub-second precision. Previously such timestamps were sorted using natural sorting , and this could lead to unexpected results. For example,2025-02-21T10:20:30.9Zwas incorrectly considered smaller than2025-02-21T10:20:30.012Z, since the last one had higher decimal value after the last dot.BUGFIX: data ingestion : drop log entries with too long field names and log the dropped log entries with the
ignoring log entry with too long field namemessage, so human operators could notice and fix the ingestion of incorrect logs ASAP. Previously too long field names were silently truncated to shorter values. This isn’t what most users expect. See why VictoriaLogs has a limit on the field name length .BUGFIX: web UI : fix transparency for bars in the hits bar chart to improve visibility. See this issue .
BUGFIX: web UI : fix
Group by fielddropdown menu not displaying any options in Group View settings. See this issue .
v1.8.0 #
Released at 2025-01-24
FEATURE: LogsQL : add the ability to limit query concurrency for the
<q>query viaoptions(concurrency=N) <q>syntax. This may be needed for reducing RAM and CPU usage at the cost of longer query execution times. See these docs for details.FEATURE: LogsQL : allow overriding the global time range filter at subqueries inside
infilter ,joinpipe andunionpipe viaoptions(ignore_global_time_filter=true) <q>syntax. See these docs for details.FEATURE: add
hashpipe for calculating hashes over the selected log fields. This may be useful for splitting the selected logs into distinct buckets. For example, the following query splitsuser_idfields into 4 buckets with the help ofhashpipe:_time:5m | hash(user_id) as h | math h%4 as bucket | stats by (bucket) count().FEATURE: web UI : reflect column settings for the table view in URL, so the table view can be shared via link. See this issue .
FEATURE: web UI : added context menu for legend items with options to copy and filter streams and fields. See this PR .
FEATURE: web UI : improved legend functionality with consistent click behavior across all vmui charts. See this PR .
FEATURE: web UI : added sorting for group view by record count in descending order. See this PR .
BUGFIX: web UI : removed the ability to filter by other in the legend, as other represents an aggregated series of all streams not included in the top results. See this issue .
BUGFIX: LogsQL : properly apply optimizations to all the subqueries. Previously only the top-level query was optimized, while subqueries inside
infilter ,joinpipe andunionpipe weren’t optimized.BUGFIX: HTTP querying API : properly apply extra filters to all the subqueries. Previously extra filters were applied only to the top-level query and weren’t applied to sub-queries inside
infilter ,joinpipe andunionpipe .BUGFIX: HTTP querying API : properly apply time range filter from
startandendargs to all the subqueries. Previously the time range filters were applied only to the top-level query and weren’t applied to sub-queries insideinfilter ,joinpipe andunionpipe . The global time range filter can be ignored on a per-subquery basis via theignore_global_time_filter=trueoption - see these docs for details.
v1.7.0 #
Released at 2025-01-20
FEATURE:
joinpipe : add the ability to executeINNER JOINby adding theinnersuffix to thejoinpipe.FEATURE: web UI : updated the default graph type in the
hits panelto bars with color fill. Removed options forlines,stepped lines, andpoints. See this issue .FEATURE: web UI : reduce logs text size and improved styles in grouped view. See this issue .
FEATURE: web UI : add the ability to select fields for display instead of the
_msgfield. See this issue .FEATURE: web UI : add various display configuration settings for the grouped view. See this pull request
BUGFIX: web UI : fix an issue where pressing the “Enter” key in the query editor did not execute the query. See this issue .
v1.6.1 #
Released at 2025-01-16
- BUGFIX:
LogsQL
: properly apply multiple
log stream filters
. For example,
{foo="bar"} AND {baz="x"}must correctly return logs withfoo="bar"andbaz="x"log stream fields . See this issue .
v1.6.0 #
Released at 2025-01-15
- FEATURE: add
unionpipe , which can be used for returning results from multiple independent LogsQL queries. - FEATURE: add
histogramstats function for calculating VictoriaMetrics histogram buckets over the given log field . They will be used for building heatmaps at the built-in Web UI and VictoriaLogs plugin for Grafana . - FEATURE:
mathpipe : addrand()function, which can be used for generating random numbers in the range[0 ... 1).
v1.5.0 #
Released at 2025-01-13
FEATURE:
count_uniqstats function : improve performance by up to 50% and reduce memory usage by up to 4x when this function is applied to fields with a large number of unique integer values.FEATURE:
statspipe : improve performance and reduce memory usage by up to 50% forlog_fieldwith a large number of unique values atstats by (log_field) ....FEATURE:
mathpipe : improve performance by up to 8x.FEATURE:
formatpipe : add ability to apply URL encoding / decoding (aka percent encoding ) to the formatted log fields with<urlencode:field_name>and<urldecode:field_name>syntax.FEATURE:
formatpipe : add ability to base64-encode / base64-decode log fields with<base64encode:field_name>and<base64decode:field_name>syntax.FEATURE:
formatpipe : add ability to hex-encode / hex-decode log fields with<hexencode:field_name>and<hexdecode:field_name>syntax.FEATURE:
formatpipe : add ability to convert integers to hexadecimal numbers via<hexnumencode:field_name>and<hexnumdecode:field_name>syntax.FEATURE: add
value_typefilter , which can be useful during exploration of the stored logs.FEATURE: Datadog data ingestion : added
-datadog.streamFieldsand-datadog.ignoreFieldsflags to configured default stream and ignore fields. Useful for Datadog serverless plugin, which doesn’t allow to provide extra headers of query args.FEATURE: web UI : add support for autocomplete in LogsQL queries. This feature provides suggestions for field names, field values, and pipe names.
BUGFIX: Datadog data ingestion : accepts
messagefield as both string and object type to fix compatibility with Datadog serverless extension, which sends logs data in format, which is not documented. See this issue .BUGFIX: vlinsert : order of
VL-Msg-Fieldfields now defines a priority of these fields.
v1.4.0 #
Released at 2024-12-22
FEATURE:
statspipe : allow non-numeric field values atmedianandquantilestats functions.FEATURE: improve performance of
statspipe andtoppipe by up to 2x when these pipes are applied to logs with millions of uniqueby (...)groups.FEATURE:
statspipe : addcount_uniq_hashfunction, which counts the number of unique value hashes. This number is usually a good approximation to the number of unique values, so thecount_uniq_hashcan be used as a faster alternative tocount_uniq.FEATURE:
statspipe : improve performance ofcount_uniqanduniq_valuesfunctions when they are applied to fields with a large number of unique values.FEATURE:
facetspipe : add the ability to return log fields with the same values across all the selected logs by adding thekeep_const_fieldsoption. Such log fields aren’t interesting in most cases, so they aren’t returned by default.FEATURE:
infilter : improve performance forin(<query>)when the<query>returns a large number of values.FEATURE: HTTP querying APIs : allow passing arbitrary LogsQL filters to
extra_filtersandextra_stream_filtersquery args. See these docs and this feature request for details.FEATURE: Grafana Loki data ingestion : add support of Loki healthcheck
/insert/readyendpoint. See this issue .FEATURE:
stream_contextpipe : return an error as soon as too many logs and/or log streams are passed to this pipe. This prevents from excess resource usage by thestream_contextpipe when it is improperly used. It is expected that the results of this pipe are investigated by humans, who cannot inspect surrounding logs for millions of the logs passed tostream_context. This change addresses this and this issues.BUGFIX: syslog data ingestion : correctly parse rows with multiple consecutive spaces between fields. See this issue .
BUGFIX: web UI : fix cursor reset in query input field. See this issue .
BUGFIX:
sortpipe : fix improper sorting of numeric fields in some cases.BUGFIX: properly return an empty minimum value from
minstats function .
v1.3.2 #
Released at 2024-12-09
FEATURE:
collapse_numspipe : add the ability to prettify some patterns in collapsed numbers. For example,<N>.<N>.<N>.<N>is replaced with<IP4>when executing thecollapse_nums prettifypipe.BUGFIX:
stream_contextpipe : fixindex out of range [0] with length 0panic, which has been introduced in v1.3.0-victorialogs . See this issue .
v1.3.1 #
Released at 2024-12-08
- BUGFIX:
facetspipe : fixassignment to entry in nil mappanic, which has been introduced in v1.3.0-victorialogs .
v1.3.0 #
Released at 2024-12-08
- FEATURE: add
collapse_numspipe , which replaces all the decimal and hexadecimal numbers with<N>in the given log field . This can be useful for locating the most frequently seen log message patterns if log messages differ only by decimal and hexadecimal numbers (this is very frequent case). For example, the following query returns top 5 log message patterns seen over the last hour:_time:1h | collapse_nums | top 5 by (_msg). - FEATURE: improve performance for
stream_contextpipe over log streams with a large number of logs (millions and more). See this issue . - FEATURE:
stream_contextpipe allow changing the time window for search for surrounding logs viatime_windowoption. For example, the following query searches for surrounding log stream logs on the one week window:_time:5m error | stream_context before 10 time_window 1w. Thanks to @worker24h for the idea .
v1.2.0 #
Released at 2024-12-06
FEATURE: add
rateandrate_sumstats functions, which can be used for calculating the average per-second rate of matching logs and the average per-second rate of sum over the given numeric log fields . See this feature request .FEATURE: add
facetspipe , which can be used for returning the most frequent values across all the fields seen in the selected logs. This pipe simplifies logs’ exploration.FEATURE: add
/select/logsql/facetsHTTP endpoint , which returns the most frequent values across all the fields seen in the selected logs. This endpoint is going to be used for building faceted search over logs in the VictoriaLogs web UI .BUGFIX:
/select/logsql/stats_query: properly applylimitatstatspipe . The bug was introduced in the release v1.1.0 when fixing this issue .BUGFIX:
mathpipe : properly format expressions with multiple binary operations with the same priority. For example,x / (y * z)was improperly formatted asx / y * z, whilex - (y + z)was improperly formatted asx - y + z. This could lead to incorrect query results in vlogscli .
v1.1.0 #
Released at 2024-12-05
FEATURE: add
firstandlastpipes for returning the firstNand the lastNlogs after sorting them by the given set of log fields . For example, the following query returns up to 5 logs with the biggest value forrequest_durationover the last hour:_time:1h | last 5 by (request_duration).FEATURE:
sortpipe : add the ability to applylimitindividually per group of logs viapartition by (...)syntax. For example, the following query returns up to 3 logs with the smallestrequest_durationfor eachhost:_time:5m | sort by (request_duration) limit 3 partition by (host).FEATURE: format pipe : allow formatting log fields in lowercase and uppercase via
<uc:field_name>and<lc:field_name>syntax. This can be useful when some fields must be consistently transformed to the same case during querying. See this issue .FEATURE: web UI : add frontend-only pagination for table view.
FEATURE: web UI : improve memory consumption during data processing. This enhancement reduces the overall memory footprint, leading to better performance and stability.
FEATURE: web UI : reduce memory usage across all tabs for improved performance and stability. See this issue .
FEATURE: Grafana Loki data ingestion : use Loki stream labels as VictoriaLogs stream fields by default. The set of stream fields can be overridden via
_stream_fieldsquery arg or viaVL-Stream-Fieldsheader as described here .FEATURE: OpenTelemetry data ingestion : use resource labels as VictoriaLogs stream fields by default. The set of stream fields can be overridden via
_stream_fieldsquery arg or viaVL-Stream-Fieldsheader as described here .FEATURE: data ingestion : expose
vl_bytes_ingested_totalcounter at/metricspage. This counter tracks an estimated number of bytes processed when parsing the ingested logs. This counter is exposed individually per every supported data ingestion protocol - the protocol name is exposed in thetypelabel. For example,vl_bytes_ingested_total{type="jsonline"}tracks an estimated number of bytes processed when reading the ingested logs via json line protocol . Thanks to @tenmozes for the idea and the initial implementation .FEATURE: data ingestion : expose
vl_too_long_lines_skipped_totalcounter at/metricspage. This counter tracks the number of the ingested lines with the length bigger than the value of-insert.maxLineSizeBytescommand-line flag. Such lines are ignored.BUGFIX:
/select/logsql/stats_query_rangeAPI : properly handle thelimitpipe after thesortpipe . Previously thelimitwas applied globally across all calculated stats, while it must be applied individually for eachstepon thestart ... endtime range. See this issue .BUGFIX: vmui : fix for
showLegendandaliasflags in predefined panels. See this issueBUGFIX: fix a
too many columns detected in the blockpanic when the ingested logs contain more than 2000 fields with different names per log stream . See this issue for details.BUGFIX: properly parse lines after too long JSON lines and Elasticsearch lines with the length exceeding
-insert.maxLineSizeBytes. Previously all the lines after the too long line in the stream were ignored.
v1.0.0 #
Released at 2024-11-12
This release is identical to v0.42.0 .
VictoriaLogs gained all the planned features since the initial v0.1.0 release 1.5 years ago, and is ready for production!
v0.42.0 #
Released at 2024-11-08
FEATURE:
joinpipe : add the ability to add a prefix to all log field names from the joined query by using the| join by (<by_fields>) (<query>) prefix "some_prefix"syntax.FEATURE:
_timefilter : allow specifying offset without time range. For example,_time:offset 1dmatches all the logs untilnow-1din the_timefield . This is useful when building graphs for time ranges with some offset in the past.FEATURE:
/select/logsql/tailHTTP endpoint : support foroffsetquery arg, which can be used for delayed emission of matching logs during live tailing. Thanks to @Fusl for the initial idea and implementation in this pull request .FEATURE: vlogscli : allow enabling and disabling wrapping of long lines, which do not fit screen width, with
\wrap_long_linescommand.FEATURE: syslog data ingestion : allow overriding default stream fields with the given log fields during data ingestion. See these docs . See this feature request .
FEATURE: syslog data ingestion : allow adding arbitrary log fields via
[label1=value1 ... labelN=valueN]syntax inside Syslog messages. For example,<165>1 2024-06-03T17:42:00.000Z example.com appname 12345 ID47 [field1=value1 field2=value2] some message.FEATURE: syslog data ingestion : allow dropping the specified log fields during data ingestion. See these docs .
FEATURE: syslog data ingestion : allow adding the specified log fields during data ingestion. See these docs . See this issue .
FEATURE: Loki data ingestion : show the original request body on parse errors. This should simplify debugging. See this issue .
BUGFIX:
valuesstats function : fix a bug, which could lead to corrupted results. See this issue .BUGFIX:
uniq_values,min,max,row_minandrow_maxstats functions: fix a bug, which could return non-matching field values for these functions. See this issue .BUGFIX: HTTP querying APIs : properly take into account the
endquery arg when calculating time range for_time:durationfilter . Previously the_time:durationfilter was treated as_time:[now-duration, now), while it should be treated as_time:[end-duration, end).
v0.41.0 #
Released at 2024-11-06
FEATURE: support structured metadata when ingesting logs with Grafana Loki ingestion protocol . See this issue .
FEATURE: add
joinpipe , which can be used for performing SQL-like joins.FEATURE: support returning historical logs from live tailing API via
start_offsetquery arg. For example, request to/select/logsql/tail?query=*&start_offset=5mreturns logs for the last 5 minutes before starting returning live tailing logs for the givenquery.FEATURE: add the ability to specify extra fields for logs ingested via HTTP-based data ingestion protocols . See the
extra_fieldsquery arg andVL-Extra-FieldsHTTP header in these docs .FEATURE: add
block_statspipe for returning various per-block stats. This pipe is useful for debugging.FEATURE: web UI : add sorting of logs by groups and within each group by time in desc order. See this issue and this issue .
FEATURE: add support for receiving DataDog logs over network. See this issue .
BUGFIX: properly sort fields with floating-point numbers by
sortpipe . Previously floating-point numbers could be improperly sorted because they were treated as strings, and natural sorting was incorrectly applied to them. For example,0.123was treated as bigger than0.9.
v0.40.0 #
Released at 2024-10-31
FEATURE: add support for extra filters across all the HTTP querying APIs . See these docs for details. This is needed for implementing quick filtering on field values at this feature request .
BUGFIX: properly apply
replaceandreplace_regexppipes to identical values in adjacent log entries. See this issue .BUGFIX: properly apply
extractandextract_regexppipe with additionalif (...)filter (aka conditional extract and conditional extract_regexp ).
v0.39.0 #
Released at 2024-10-30
FEATURE: allow specifying a list of log fields, which may contain log message, via
_msg_fieldquery arg and viaVL-Msg-FieldHTTP request header. For example,_msg_field=message,event.messageinstructs obtaining message field from the first non-empty field out of themessageandevent.messagefields. See these docs for details.FEATURE: accept logs without
_msgfield . In this case the_msgfield is automatically set to the value specified in the-defaultMsgValuecommand-line flag.BUGFIX: fix
runtime error: index out of range [0] with length 0panic during low-rate data ingestion. The panic has been introduced in v0.38.0 . See this issue .
v0.38.0 #
Released at 2024-10-29
FEATURE: added the ability to receive systemd (journald) logs over network. See this issue .
FEATURE: improve performance for queries over a large volume of logs with a large number of fields (aka
wide events).FEATURE: improve performance for
/select/logsql/field_valuesHTTP endpoint .FEATURE: improve performance for
field_valuespipe when it is applied directly to log filter .FEATURE: add the ability to return the
rankfield from thetoppipe . For example, the following query returns the1..5rank for each returnedipwith the largest number of logs over the last 5 minutes:_time:5m | top 5 by (ip) rank.BUGFIX: web UI : fix various glitches with updating query responses. The issue was introduced in v0.36.0 . See this issue .
v0.37.0 #
Released at 2024-10-18
FEATURE: web UI : add ability to hide hits chart. See this issue .
FEATURE: add basic alerting rules for VictoriaLogs process. See details at monitoring docs .
FEATURE: improve
statspipe performance on systems with many CPU cores whenby(...)fields contain a large number of unique values. For example,_time:1d | stats by (user_id) count() xshould be executed much faster when theuser_idfield contains millions of unique values.FEATURE: improve performance for
top,uniqandfield_valuespipes on systems with many CPU cores when applied to log fields with a large number of unique values. For example,_time:1d | top 5 (user_id)should be executed much faster when theuser_idfield contains millions of unique values.FEATURE: improve performance for
field_namespipe when it is applied to logs with hundreds of log fields .BUGFIX: web UI : fix display of hits chart. See this issue .
v0.36.0 #
Released at 2024-10-16
FEATURE: optimize LogsQL queries that need to scan a large number of logs with a large number of log fields (aka
wide events). Performance for such queries is improved by 10x or more depending on the number of log fields in the scanned logs. The performance improvement is visible when querying logs ingested after upgrading to this release.FEATURE: add support for forced merge. See these docs .
FEATURE: skip empty log fields in query results, since they are treated as non-existing fields in VictoriaLogs data model . This should reduce the level of confusion for end users when they see empty log fields.
FEATURE: allow using
formatpipe for creating output labels from existing log fields at/select/logsql/stats_queryand/select/logsql/stats_query_rangeendpoints.FEATURE: web UI : add the ability to cancel running queries. See this issue .
BUGFIX: avoid possible panic when logs for a new day are ingested during execution of concurrent queries.
BUGFIX: avoid panic at
lib/logstorage.(*blockResultColumn).forEachDictValue()when the query contains stats with additional filters . The panic has been introduced in v0.33.0 in this commit .BUGFIX: add more checks for stats query APIs to avoid invalid results.
BUGFIX: vmui : fix error messages rendering from overflowing the screen with long messages. See this issue .
v0.35.0 #
Released at 2024-10-09
- FEATURE: vlogscli : add ability to live tail query results - see these docs .
- FEATURE:
vlogscli
: add compact output mode for query results. It can be enabled by typing
\cand then pressingenter. See these docs . - FEATURE:
vlogscli
: add
-accountIDand-projectIDcommand-line flags for settingAccountIDandProjectIDvalues when querying the specific tenants .
v0.34.0 #
Released at 2024-10-08
- FEATURE:
vlogscli
: add ability to display results in
logfmtmode, single-line and multi-line JSON modes according these docs . - FEATURE:
vlogscli
: preserve
lessoutput after the exit from scrolling mode. This should help reusing previous query results in subsequent queries. - FEATURE: add
lenpipe for calculating the length for the given log field value in bytes.
v0.33.0 #
Released at 2024-10-01
FEATURE: add interactive command-line tool for querying VictoriaLogs -
vlogscli.BUGFIX:
count_uniqstats function : do not count field values, which aren’t matched by the used filters. See this issue .
v0.32.1 #
Released at 2024-09-30
- BUGFIX: do not return field values with zero matching logs from
field_values,topanduniqpipes. See this issue .
v0.32.0 #
Released at 2024-09-29
FEATURE: data ingestion : accept Unix timestamps in seconds in the ingested logs. This simplifies integration with systems, which prefer Unix timestamps over text-based representation of time.
FEATURE:
sortpipe : allow usingorderalias instead ofsort. For example,_time:5s | order by (_time)query works the same as_time:5s | sort by (_time). This simplifies LogsQL transition from SQL-like query languages.FEATURE:
statspipe : allow using multiple identical stats functions with distinct filters and automatically generated result names. For example,_time:5m | count(), count() if (error)query works as expected now, e.g. it returns two results over the last 5 minutes: the total number of logs and the number of logs witherrorword . Previously this query couldn’t be executed because theif (...)condition wasn’t included in the automatically generate result name, so both results had the same name -count(*).BUGFIX: properly calculate
uniqandtoppipes. Previously they could return invalid results in some cases.
v0.31.0 #
Released at 2024-09-27
- FEATURE: web UI : improved readability of staircase graphs and tooltip usability. See this comment .
- FEATURE:
web UI
: simplify query input by adding only the label name when
ctrl+clicking the line legend. See this comment . - FEATURE: web UI : keep selected columns in table view on page reloads. Before, selected columns were reset on each update. See this issue .
- FEATURE: allow skipping
_stream:prefix in stream filters . This simplifies writing queries with stream filters. Now{foo="bar"}is the recommended format for stream filters over the_stream:{foo="bar"}format. - FEATURE: allow using
-instead of!asNOToperator shorthand in logical filters . For example,-info -warnquery is equivalent to!info !warn. This simplifies transition from other query languages with full-text search support, which usually use-asNOToperator.
v0.30.1 #
Released at 2024-09-27
- BUGFIX: consistently return matching log streams sorted by time from
stream_contextpipe . Previously log streams could be returned in arbitrary order with every request. This could complicate usingstream_contextpipe. - BUGFIX:
stream_contextpipe : add missing_msg="---"delimiter between stream contexts belonging to different log streams . This should simplify investigatingstream_contextoutput for multiple matching log streams.
v0.30.0 #
Released at 2024-09-27
FEATURE: web UI : add button for enabling auto refresh, similarly to VictoriaMetrics vmui. See this issue .
FEATURE: drop logs without
_msgfield or with empty_msgfield, since this field is required to be non-empty in VictoriaLogs data model . See this issue .FEATURE: improve performance of analytical queries, which do not need reading the
_timefield. See this issue .FEATURE: add
blocks_countpipe , which can be used for counting the number of matching blocks for the given query. For example,_time:5m | blocks_countreturns the number of blocks with logs for the last 5 minutes. This pipe can be useful for debugging purposes.FEATURE: support ingesting logs with
_timefield, which doesn’t contain timezone information. For example,2024-09-20T10:20:30. In this case the local timezone of the host where VictoriaLogs runs is used. See this issue .FEATURE: reduce memory usage when
stream_contextpipe is applied to log streams with a large number of messages. See this issue .BUGFIX: fix Windows build, which has been broken in v0.29.0 . See this issue .
BUGFIX: properly return logs from
/select/logsql/tailendpoint if the query contains_time:some_durationfilter like_time:5m. See this issue . The bug has been introduced in v0.29.0 .BUGFIX: properly return logs without
_msgfield when*query is passed to/select/logsql/queryendpoint together with positivelimitarg. See this issue . Thanks to @jiekun for identifying the root cause of the issue.BUGFIX: support ingesting logs with
_timefield containing whitespace delimiter between the date and time instead ofTdelimiter. For example,2024-09-20 10:20:30. This is valid ISO8601 format akaSQL datetimeformat, which sometimes is used in production. See this issue .BUGFIX: return all the requested surrounding logs for
stream_contextpipe . Previously only logs matching the_timefilter were returned. This is needed for this feature .
v0.29.0 #
Released at 2024-09-08
FEATURE: add
/select/logsql/stats_queryHTTP API , which is going to be used by vmalert for executing alerting and recording rules against VictoriaLogs. See this feature request for details.FEATURE: add
/select/logsql/stats_query_rangeHTTP API , which is going to be used by VictoriaLogs plugin for Grafana for building time series panels. See this feature request for details.FEATURE: optimize multi-exact queries with many phrases to search. For example,
ip:in(path:="/foo/bar" | keep ip)when there are many unique values foripfield among log entries with/foo/barpath.FEATURE: web UI : add support for displaying the top 5 log streams in the hits graph. The remaining log streams are grouped into an “other” label. See this issue .
FEATURE: web UI : add the ability to customize the graph display with options for bar, line, stepped line, and points.
FEATURE: web UI : add fields for setting AccountID and ProjectID. See this issue .
FEATURE: web UI : add a toggle button to the “Group” tab that allows users to expand or collapse all groups at once.
FEATURE: web UI : introduce the ability to select a key for grouping logs within the “Group” tab.
FEATURE: web UI : display the number of entries within each log group.
FEATURE: web UI : move the Markdown toggle to the general settings panel in the upper left corner.
FEATURE: web UI : add search functionality to the column display settings in the table. See this issue .
FEATURE: web UI : add the ability to select all columns in the column display settings of the table. See this issue . Thanks to @yincongcyincong for the pull request .
FEATURE: Allow to define ingestion parameters via headers. Supported headers -
VL-Msg-Field,VL-Stream-Fields,VL-Ignore-Fields,VL-Time-Field,VL-Debug. See this PR for details.FEATURE: vlinsert : added OpenTelemetry logs ingestion support. See this PR for details.
BUGFIX: properly handle Logstash requests for Elasticsearch configuration when using
outputs.elasticsearchin Logstash pipelines. Previously, the requests could be rejected with400 Bad Requestresponse. Updates this issue .BUGFIX: vmui : fix
not found index.jserror when loading vmui in VictoriaLogs. See this issue . Thanks to @yincongcyincong for the pull request .BUGFIX: properly execute queries with
ORfilters for distinct log fields . For example,field1:foo OR field2:bar. Previously logs matching these filters may be skipped during querying. See this issue for details. Thanks to @yincongcyincong for the pull request .
v0.28.0 #
Released at 2024-07-10
- FEATURE: web UI : show a spinner on top of bar chart until user’s request is finished. See this issue .
- FEATURE:
web UI
: use compact representation of JSON lines at
JSONtab if only a single log field is queried. See this feature request . - FEATURE:
web UI
: properly show the number of matching logs on the selected time range at bar chart for queries with arbitrary
pipes
, including
statspipe andtoppipe .
v0.27.1 #
Released at 2024-07-05
- BUGFIX: properly JSON-encode strings with special chars in
HTTP querying API
responses. This fixes the
error decode response: invalid character 'x' in string escape codeerror in VictoriaLogs datasource for Grafana . See this issue . The issue has been introduced in the release v0.9.0 .
v0.27.0 #
Released at 2024-07-02
FEATURE: add
-syslog.useLocalTimestamp.tcpand-syslog.useLocalTimestamp.udpcommand-line flags, which could be used for using the local timestamp as_timefield for the logs ingested via the corresponding-syslog.listenAddr.tcp/-syslog.listenAddr.udp. By default, the timestamp from the syslog message is used as_timefield . See these docs .BUGFIX: make slowly ingested logs visible for search as soon as they are ingested into VictoriaLogs. Previously slowly ingested logs could remain invisible for search for long time.
v0.26.1 #
Released at 2024-07-01
- BUGFIX: return the proper surrounding logs for
stream_contextpipe when additional pipes are put after thestream_contextpipe. This has been broken in v0.26.0 .
v0.26.0 #
Released at 2024-07-01
- FEATURE: add ability to return log position (aka rank) after sorting logs with
sortpipe . This can be done by addingrank as <fieldName>to the end of| sort ...pipe. For example,_time:5m | sort by (_time) rank as positioninstructs storing position of every sorted log line intopositionfield name . - FEATURE: add delimiter log with
---message between log chunks returned bystream_contextpipe . This should simplify investigation of the returned logs. - FEATURE: reduce memory usage when a large number of context logs are requested from the
stream_contextpipe .
v0.25.0 #
Released at 2024-06-28
FEATURE: add ability to select surrounding logs in front and after the selected logs via
stream_contextpipe . This functionality may be useful for investigating stacktraces, panics or some correlated log messages. This functionality is similar togrep -Aandgrep -B.FEATURE: add ability to return top
N"fields"groups from/select/logsql/hitsHTTP endpoint , by specifyingfields_limit=Nquery arg. This query arg is going to be used in this feature request .BUGFIX: fix
runtime error: index out of range [0] with length 0panic when empty lines are ingested via Syslog format by Cisco controllers. See this issue .
v0.24.0 #
Released at 2024-06-27
FEATURE: add
/select/logsql/tailHTTP endpoint, which can be used for live tailing of LogsQL query results. See these docs for details.FEATURE: add
/select/logsql/stream_idsHTTP endpoint, which can be used for returning_stream_idvalues with the number of hits for the given LogsQL query . See these docs for details.FEATURE: add
-retention.maxDiskSpaceUsageBytescommand-line flag, which allows limiting disk space usage for VictoriaLogs data by automatic dropping the oldest per-day partitions if the storage disk space usage becomes bigger than the-retention.maxDiskSpaceUsageBytes. See these docs .BUGFIX: properly take into account query timeout specified via
-search.maxQueryDurationcommand-line flag and/or viatimeoutquery arg. Previously these timeouts could be ignored during query execution.BUGFIX: web UI : fix the update of the relative time range when
Execute Queryis clicked. See this issue .
v0.23.0 #
Released at 2024-06-25
FEATURE: syslog data ingestion : parse STRUCTURED-DATA into
SD-ID.field1=value1,SD-ID.field2=value2, …,SD-ID.fieldN=valueNlog fields . Previously theSTRUCTURED-DATAwas parsed into a single log field with theSD-IDname andfield1=value1 field2=value2 ... fieldN=valueNvalue. This could complicate querying of such data.BUGFIX: properly parse timestamps with timezones during data ingestion and querying . This has been broken in v0.20.0 . See this issue .
v0.22.0 #
Released at 2024-06-24
- FEATURE: allow specifying multiple
_stream_idvalues in_stream_idfilter via_stream_id:in(id1, ..., idN)syntax. - FEATURE: allow specifying subquery for searching for
_stream_idvalues inside_stream_idfilter . For example,_stream_id:in(_time:5m error | fields _stream_id)returns logs for logs streams with theerrorword across logs for the last 5 minutes.
v0.21.0 #
Released at 2024-06-20
- FEATURE: web UI : add a bar chart displaying the number of log entries over a time range. See this issue .
- FEATURE: expose
_stream_idfield, which uniquely identifies log streams . This field can be used for quick obtaining of all the logs belonging to a particular stream via_stream_idfilter .
v0.20.2 #
Released at 2024-06-18
- BUGFIX: properly parse timestamps with nanosecond precision for logs ingested via jsonline format . The bug has been introduced in v0.20.0 release .
v0.20.1 #
Released at 2024-06-18
FEATURE: allow configuring multiple receivers with distinct configs for syslog messages. See these docs .
BUGFIX: properly read syslog messages over TCP and TLS connections according to RFC5425 when data ingestion for syslog protocol is enabled.
v0.20.0 #
Released at 2024-06-17
- FEATURE: add ability to accept logs in Syslog format . See these docs .
- FEATURE: add ability to specify timezone offset when parsing rfc3164
syslog messages with
unpack_syslogpipe . - FEATURE: add
toppipe for returning top N sets of the given fields with the maximum number of matching log entries.
v0.19.0 #
Released at 2024-06-11
FEATURE: do not allow starting the filter with pipe names and stats function names . This prevents from unexpected results returned by incorrect queries, which miss mandatory filter .
FEATURE: treat unexpected syslog message as RFC3164 containing only the
messagefield when usingunpack_syslogpipe .FEATURE: allow using
whereprefix instead offilterprefix infilterpipe .FEATURE: disallow unescaped
!char in LogsQL queries, since it permits writing incorrect query, which may look like correct one. For example,foo!:barinstead offoo:!bar.FEATURE: web UI : add markdown support to the
Groupview. See this pull request .BUGFIX: return back the improved performance for queries with
*filters (akaSELECT *). This has been broken in v0.16.0 .
v0.18.0 #
Released at 2024-06-06
- FEATURE: web UI : improve displaying of logs. See this pull request and the following issues: 6408 , 6405 , 6406 and 6407 .
- FEATURE: add support for day range filter and week range filter . These filters allow selecting logs on a particular time range per every day or on a particular day of the week.
- FEATURE: allow using
evalinstead ofmathkeyword inmathpipe .
v0.17.0 #
Released at 2024-06-05
FEATURE: add
pack_logfmtpipe for formatting log fields into logfmt messages.FEATURE: allow using IPv4 addresses in range comparison filters . For example,
ip:>'12.34.56.78'is valid filter now.FEATURE: add
ceil()andfloor()functions tomathpipe .FEATURE: add support for bitwise
and,orandxoroperations atmathpipe .FEATURE: add support for automatic conversion of RFC3339 time and IPv4 addresses into numeric representation at
mathpipe .FEATURE: add ability to format numeric fields into string representation of time, duration and IPv4 with
formatpipe .FEATURE: set
formatfield torfc3164orrfc5424depending on the Syslog format parsed viaunpack_syslogpipe .BUGFIX: always respect the limit set in
limitpipe . Previously the limit could be exceeded in some cases.
v0.16.0 #
Released at 2024-06-04
- FEATURE: add
unpack_syslogpipe for unpacking syslog messages from log fields . - FEATURE: parse timestamps in
_timefilter with nanosecond precision. - FEATURE: return the last
Nmatching logs from/select/logsql/queryHTTP API with the maximum timestamps iflimit=Nquery arg is passed to it. Previously a random subset of matching logs could be returned, which could complicate investigation of the returned logs. - FEATURE: add
drop_empty_fieldspipe for dropping log fields with empty values.
v0.15.0 #
Released at 2024-05-30
FEATURE: add
row_anyfunction forstatspipe . This function returns a sample log entry per every calculated group of results .FEATURE: add
defaultoperator tomathpipe . It allows overridingNaNresults with the given default value.FEATURE: add
exp()andln()functions tomathpipe .FEATURE: allow omitting result name in
mathpipe expressions. In this case the result name is automatically set to string representation of the corresponding math expression. For example,_time:5m | math duration / 1000is equivalent to_time:5m | math (duration / 1000) as "duration / 1000".FEATURE: allow omitting result name in
statspipe . In this case the result name is automatically set to string representation of the corresponding stats function expression . For example,_time:5m | count(*)is valid LogsQL query now. It is equivalent to_time:5m | stats count(*) as "count(*)".BUGFIX: properly calculate the number of matching rows in
* | field_values x | stats count() rowsand in* | unroll (x) | stats count() rowsqueries.
v0.14.0 #
Released at 2024-05-29
FEATURE: allow specifying fields, which must be packed into JSON in
pack_jsonpipe viapack_json fields (field1, ..., fieldN)syntax.BUGFIX: properly apply
if (...)filters to calculated results instatspipe when grouping by fields is enabled. For example,_time:5m | stats by (host) count() logs, count() if (error) errorsnow properly calculates per-hosterrors.
v0.13.0 #
Released at 2024-05-28
- FEATURE: add
extract_regexppipe for extracting arbitrary substrings from log fields with RE2 regular expressions . - FEATURE: add
mathpipe for mathematical calculations over log fields . - FEATURE: add
field_valuespipe , which returns unique values for the given log field . - FEATURE: allow omitting
statsprefix instatspipe . For example,_time:5m | count() rowsis a valid query now. It is equivalent to_time:5m | stats count() as rows. - FEATURE: allow omitting
filterprefix infilterpipe if the filter doesn’t clash with pipe names . For example,_time:5m | stats by (host) count() rows | rows:>1000is a valid query now. It is equivalent to_time:5m | stats by (host) count() rows | filter rows:>1000. - FEATURE: allow
headpipe without number. For example,error | head. In this case 10 first values are returned asheadUnix command does by default. - FEATURE: allow using
comparison filters
with strings. For example,
some_text_field:>="foo"matches log entries withsome_text_fieldfield values bigger or equal tofoo.
v0.12.1 #
Released at 2024-05-26
FEATURE: add support for comments in multi-line LogsQL queries. See these docs .
BUGFIX: properly apply
in(...)filter insideif (...)conditions at various pipes . This bug has been introduced in v0.12.0 .
v0.12.0 #
Released at 2024-05-26
FEATURE: add
pack_jsonpipe , which packs all the log fields into a JSON object and stores it into the given field.FEATURE: add
unrollpipe , which can be used for unrolling JSON arrays stored in log fields .FEATURE: add
replace_regexppipe , which allows updating log fields with regular expressions.FEATURE: improve performance for
/select/logsql/field_namesHTTP API .BUGFIX: prevent from panic in
sortpipe when VictoriaLogs runs on a system with one CPU core.BUGFIX: do not return referenced fields if they weren’t present in the original logs. For example,
_time:5m | format if (non_existing_field:"") "abc"could return emptynon_exiting_field, while it shouldn’t be returned because it is missing in the original logs.BUGFIX: properly initialize values for
in(...)filter insidefilterpipe if thein(...)contains other filters . For example,_time:5m | filter ip:in(user_type:admin | fields ip)now works correctly.
v0.11.0 #
Released at 2024-05-25
- FEATURE: add
replacepipe , which allows replacing substrings in log fields . - FEATURE: support
comparing
log field values with
special numeric values
. For example,
duration:>1.5sandresponse_size:<15KiBare valid filters now. - FEATURE: properly sort
durations
and
short numeric values
in
sortpipe . For example,10sgoes in front of1h, while10KBgoes in front of1GB. - FEATURE: add the ability to preserve the original non-empty field values when executing the
extract,unpack_json,unpack_logfmtandformatpipes. - FEATURE: add the ability to preserve the original field values if the corresponding unpacked values are empty when executing the
extract,unpack_json,unpack_logfmtandformatpipes.
v0.10.0 #
Released at 2024-05-24
FEATURE: return the number of matching log entries per returned value in HTTP API results. This simplifies detecting field / stream values with the biggest number of logs for the given LogsQL query .
FEATURE: improve performance for regexp filter in the following cases:
- If the regexp contains just a phrase without special regular expression chars. For example,
~"foo". - If the regexp starts with
.*or ends with.*. For example,~".*foo.*". - If the regexp contains multiple strings delimited by
|. For example,~"foo|bar|baz". - If the regexp contains multiple
words
. For example,
~"foo bar baz".
- If the regexp contains just a phrase without special regular expression chars. For example,
FEATURE: allow disabling automatic unquoting of the matched placeholders in
extractpipe . See these docs .BUGFIX: properly parse
!in front of exact filter , exact-prefix filter and regexp filter . For example,!~"some regexp"is properly parsed asnot ="some regexp". Previously it was incorrectly parsed as'~="some regexp"'phrase filter .BUGFIX: properly sort results by
_timefield whenlimitpipe is applied. For example,_time:5m | sort by (_time) desc | limit 10properly works now.
v0.9.1 #
Released at 2024-05-22
v0.9.0 #
Released at 2024-05-22
FEATURE: allow using
~"some_regexp"regexp filter instead ofre("some_regexp").FEATURE: allow using
="some phrase"exact filter instead ofexact("some phrase").FEATURE: allow using
="some prefix"*exact prefix filter instead ofexact("some prefix"*).FEATURE: add ability to generate output fields according to the provided format string. See these docs .
FEATURE: add ability to extract fields with
extractpipe only if the given condition is met. See these docs .FEATURE: add ability to unpack JSON fields with
unpack_jsonpipe only if the given condition is met. See these docs .FEATURE: add ability to unpack logfmt fields with
unpack_logfmtpipe only if the given condition is met. See these docs .FEATURE: add
row_minandrow_maxfunctions forstatspipe , which allow returning all the log fields for the log entry with the minimum / maximum value at the given field.FEATURE: add
/select/logsql/streamsHTTP endpoint for returning streams from results of the given query. See these docs for details.FEATURE: add
/select/logsql/stream_field_namesHTTP endpoint for returning stream field names from results of the given query. See these docs for details.FEATURE: add
/select/logsql/stream_field_valuesHTTP endpoint for returning stream field values for the given label from results of the given query. See these docs for details.FEATURE: web UI : change time range limitation from
_timein the expression tostartandendquery args.BUGFIX: fix
invalid memory address or nil pointer dereferencepanic when usingextract,unpack_jsonorunpack_logfmtpipes. See this issue .BUGFIX: web UI : fix an issue where logs with long
_msgvalues might not display. See this issue .BUGFIX: properly handle time range boundaries with millisecond precision. See this issue .
v0.8.0 #
Released at 2024-05-20
FEATURE: add ability to extract JSON fields from log fields . See these docs .
FEATURE: add ability to extract logfmt fields from log fields . See these docs .
FEATURE: add ability to extract arbitrary text from log fields into the output fields. See these docs .
FEATURE: add ability to put arbitrary queries inside
in()filter .FEATURE: add support for post-filtering of query results with
filterpipe .FEATURE: allow applying individual filters for each stats function . See these docs .
FEATURE: allow passing string values to
minandmaxfunctions. Previously only numeric values could be passed to them.FEATURE: speed up
sort ... limit Npipe for typical cases.FEATURE: allow using more convenient syntax for
rangefilters if upper or lower bound isn’t needed. For example, it is possible to writeresponse_size:>=10KiBinstead ofresponse_size:range[10KiB, inf), ortemperature:<42instead oftemperature:range(-inf, 42).FEATURE: add
/select/logsql/hitsHTTP endpoint for returning the number of matching logs per the given time bucket over the selected time range. See these docs for details.FEATURE: add
/select/logsql/field_namesHTTP endpoint for returning field names from results of the given query. See these docs for details.FEATURE: add
/select/logsql/field_valuesHTTP endpoint for returning unique values for the given field obtained from results of the given query. See these docs for details.BUGFIX: properly take into account
offsetatsortpipe when it already haslimit. For example,_time:5m | sort by (foo) offset 20 limit 10.
v0.7.0 #
Released at 2024-05-15
- FEATURE: add support for optional
startandendquery args to HTTP querying API , which can be used for limiting the time range for LogsQL query . - FEATURE: add ability to return the first
Nresults fromsortpipe . This is useful whenNbiggest orNsmallest values must be returned from large amounts of logs. - FEATURE: add
quantileandmedianstats functions .
v0.6.1 #
Released at 2024-05-14
FEATURE: use natural sort order when sorting logs via
sortpipe .BUGFIX: properly return matching logs in streams with small number of entries. Previously they could be skipped. The issue has been introduced in the release v0.6.0 .
BUGFIX: fix
runtime error: index out of rangepanic when usingsortpipe like_time:1h | sort by (_time). See this issue .
v0.6.0 #
Released at 2024-05-12
FEATURE: return all the log fields by default in query results. Previously only
_stream,_timeand_msgfields were returned by default.FEATURE: add support for returning only the requested log fields . See these docs .
FEATURE: add support for calculating various stats over log fields . Grouping by arbitrary set of log fields is supported. See these docs for details.
FEATURE: add support for sorting the returned results. See these docs .
FEATURE: add support for returning unique results. See these docs .
FEATURE: add support for limiting the number of returned results. See these docs .
FEATURE: add support for copying and renaming the selected log fields. See these and these docs.
FEATURE: allow using
_inside numbers. For example,score:range[1_000, 5_000_000]forrangefilter .FEATURE: allow numbers in hexadecimal and binary form. For example,
response_size:range[0xff, 0b10001101101]forrangefilter .FEATURE: allow using duration and byte size suffixes in numeric values inside LogsQL queries. See these docs .
FEATURE: improve data ingestion performance by up to 50%.
FEATURE: optimize performance for LogsQL query , which contains multiple filters for words or phrases delimited with
ANDoperator . For example,foo AND barquery must find log messages withfooandbarwords at faster speed.BUGFIX: prevent from possible corruption of short log fields during data ingestion.
BUGFIX: prevent from additional CPU usage for up to a few seconds after canceling the query.
BUGFIX: prevent from returning log entries with empty
_streamfield in the form"_stream":""in search query results . See this issue .
v0.5.2 #
Released at 2024-04-11
- BUGFIX: properly register new log streams under high data ingestion rate. The issue has been introduced in v0.5.0 .
v0.5.1 #
Released at 2024-04-04
- BUGFIX: properly apply time range filter for queries containing
ORoperators . See this issue . - BUGFIX: do not log debug lines
DEBUG: start trimLinesandDEBUG: end trimLines. This bug has been introduced in v0.5.0 in this commit .
v0.5.0 #
Released at 2024-03-01
FEATURE: support the ability to limit the number of returned log entries from HTTP querying API by passing
limitquery arg. Previously all the matching log entries were returned until closing the response stream. See this feature request . Thanks to @dmitryk-dk for the pull request .BUGFIX: do not panic on incorrect regular expression in stream filter . Thanks to @XLONG96 for the bugfix .
BUGFIX: properly determine when the assisted merge is needed. Previously, logs for determining whether the assisted merge was needed were broken. This could lead to too many parts under a high data ingestion rate. Thanks to @lujiajing1126 for the fix .
BUGFIX: properly stop execution of aborted query when the query doesn’t contain
_streamfilter . Previously such a query could continue consuming resources after being aborted by the client. Thanks to @z-anshun for the fix .
v0.4.2 #
Released at 2023-11-15
- BUGFIX: properly locate logs for the requested streams . Previously logs for some streams may be missing in query results. See this issue . Thanks to @XLONG96 for the fix !
- BUGFIX: web UI : properly sort found logs by time. See this issue .
v0.4.1 #
Released at 2023-10-04
- BUGFIX: fix the free space verification process in VictoriaLogs that was erroneously shifting to read-only mode, despite there being sufficient free space available. See this issue.
v0.4.0 #
Released at 2023-10-03
FEATURE: add
-elasticsearch.versioncommand-line flag, which can be used for specifying the Elasticsearch version returned by VictoriaLogs to Filebeat at the Elasticsearch bulk API . This helps resolve this issue .FEATURE: expose the following metrics at /metrics page:
vl_data_size_bytes{type="storage"}- on-disk size for data excluding log stream indexes.vl_data_size_bytes{type="indexdb"}- on-disk size for log stream indexes.
FEATURE: add
-insert.maxFieldsPerLinecommand-line flag, which can be used for limiting the number of fields per line in logs sent to VictoriaLogs via ingestion protocols. This helps avoid issues like this .FEATURE: expose
vl_http_request_duration_secondshistogram at the /metrics page. Thanks to @crossoverJie for this pull request .FEATURE: add support for the
-storage.minFreeDiskSpaceBytescommand-line flag to allow switching to read-only mode when running out of disk space at-storageDataPath. See this issue .BUGFIX: fix possible panic when no data is written to VictoriaLogs for a long time. See this issue . Thanks to @crossoverJie for filing and fixing the issue.
BUGFIX: add
/insert/loki/readyendpoint, which is used by Promtail for health checks. This should removeunsupported path requested: /insert/loki/readywarning logs. See this comment .BUGFIX: prevent from panic during background merge when the number of columns in the resulting block exceeds the maximum allowed number of columns per block. See this issue .
v0.3.0 #
Released at 2023-07-20
- FEATURE: add support for data ingestion via Promtail (aka default log shipper for Grafana Loki). See these and these docs.
v0.2.0 #
Released at 2023-07-17
- FEATURE: support short form of
_timefilters over the last X minutes/hours/days/etc. For example,_time:5mis a short form for_time:(now-5m, now], which matches logs with timestamps for the last 5 minutes. See these docs for details. - FEATURE: add ability to specify offset for the selected time range. For example,
_time:5m offset 1his equivalent to_time:(now-5m-1h, now-1h]. See these docs for details. - FEATURE:
LogsQL
: replace
exact_prefix("...")withexact("..."*). This makes it consistent with i() filter, which can accept phrases and prefixes, e.g.i("phrase")andi("phrase"*). See these docs .
v0.1.0 #
Released at 2023-06-21
Initial release