Since the beginning of Loki, log entries had to be written to Loki in order by time. This limitation has been lifted. Out-of-order writes are enabled globally by default, but can be disabled/enabled on a cluster or per-tenant basis.
To disable out-of-order writes for all tenants, place in the
limits_config
section:
limits_config:
unordered_writes: false
To disable out-of-order writes for specific tenants, configure a runtime configuration file:
runtime_config: overrides.yaml
In the
overrides.yaml
file, addunordered_writes
for each tenant permitted to have out-of-order writes:
overrides:
"tenantA":
unordered_writes: false
How far into the past accepted out-of-order log entries may be is configurable with
max_chunk_age
.max_chunk_age
defaults to 2 hour. Loki calculates the earliest time that out-of-order entries may have and be accepted with
time_of_most_recent_line - (max_chunk_age/2)
Log entries with timestamps that are after this earliest time are accepted. Log entries further back in time return an out-of-order error.
For example, if
max_chunk_age
is 2 hours and the stream{foo="bar"}
has one entry at8:00
, Loki will accept data for that stream as far back in time as7:00
. If another log line is written at10:00
, Loki will accept data for that stream as far back in time as9:00
.