v3.4
Grafana Labs and the Loki team are excited to announce the release of Loki 3.4. Here’s a summary of new enhancements and important fixes.
For a full list of all changes and fixes, refer to the CHANGELOG.
Features and enhancements
Key features in Loki 3.4.0 include the following:
Time sharding ingestion: Add per-tenant time sharding for long out-of-order ingestion. The setting
shard_streams.time_sharding_enabled
is a per-tenant config that splits incoming log streams by injecting a new__time_shard__
synthetic label in such a way that no stream will ever be longer than1h
(or, rather,max_chunk_age
/2). This allows the ingestion of very old logs, because the logs in these new streams will never be “too far behind” by design. (#14711) (0d6d68d).Thanos object client: Previously Loki and Grafana Enterprise Logs used different Go packages to talk to the underlying object store. Migrating to Thanos means that there is now a single object client across Loki and GEL, and across the other Grafana backend databases: Mimir and Pyroscope.(#14891) (fb6789d), (#14638) (8958eb9), (#14867) (947a66f), (#14793) (cfc3819), (#14937) (a629212). The documentation now includes configuration examples using Thanos-based storage clients.
API: Add support for Parquet file format as a query response format. (#15408) (d0c11a6).
Structured metadata: Introduces a new feature,based on per-tenant configuration, that allows for extraction of “fields” into structured metadata at ingest time. Fields can either be regular labels, structured metadata keys, or keys from
logfmt
orjson
formatted log lines. (#15188) (7033091).lambda-promtail: Adds support for relabeling log entries in lambda-promtail using Prometheus-style relabel configs. This allows for more flexible label manipulation and filtering of log entries before they are sent to Loki. (#15600) (c41a8b4).
Kafka: Loki 3.4 adds an Apache Kafka development environment to support ongoing development work(#15603) (226e9f1).
Helm charts: Loki 3.4 includes multiple improvements to the Helm charts, including: Added support for overrides exporter (#15630) (db72164), Expose topologySpreadConstraints for admin-api pods (#14995) (1b93086), Expose topologySpreadConstraints for distributed deployment (#14853) (d075107), Compute ConfigMap/Secret checksum only over .data content (#15177) (990f71c), Do not explicitly template
managed-by
, as it should be set at install time by the installation manager. (#14763) (10b7478).Query acceleration with Bloom filters (experimental): The Bloom filters feature introduced in Loki 3.0 remains experimental. In Loki 3.3, there was a major shift in how Loki leverages bloom filters — pivoting from free-text search to harnessing the power of structured metadata. In Loki 3.4, work continues on the new Bloom Planner (#14874) (b646861).
Docs: This release includes a heavily revised labels topic and a new Cardinality topic. This release also marks the return of the sizing guidance page, newly updated based on Grafana Labs experience running Loki. Continuing updates to the Query section include a revised logcli topic and new logcli tutorial. There is also two additional new tutorials: Deploying Loki on Azure tutorial and Kubernetes Monitoring Helm tutorial.
Note
Note that when appropriate, documentation updates have been backported to previous releases.
Other improvements include the following:
- analytics: Add TLS config to the analytics client (#15227) (2c5eabd).
- approx_topk: Reduce memory usage of HyperLogLog in approx_topk. (#15559) (bef2043).
- approx_topk: Improve
approx_topk
performance by reducing allocations. (#15450) (04994ca). - blooms: Add task timing and sizing metrics (#15032) (79cccfd).
- blooms: Apply task timeout in bloom builder (#14988) (f92dde0).
- blooms: Prefetch bloom blocks as soon as they are built (#15050) (b406015).
- blooms: Compute chunkrefs for series right before sending task to builder (#14808) (66e6b1c).
- blooms: Replace JSON lib for encoding/decoding metas (#14767) (57f16a0).
- distributor: Add a metric ingestion time SM sanitization (#15222) (e9d0c3e).
- docker compose: enable feature toggle (#14858) (8f243ee).
- docker driver: Add ARM64 build and release of the Docker driver in Drone pipeline(#9247) (e950251).
- lambda-promtail: Add terraform variable for s3 bucket notification filter prefix (#15381) (3dd8d7d).
- logcli: Add opt-in support for ProxyFromEnvironment in logcli (#11742) (#14950) (c56b95d).
- logcli: Include common labels (#15611) (639ac74).
- logql: Allow line_format bypass template execution if possible (#15411) (2150fbc).
- metrics: Add lines skipped metric to pattern ingesters (#14997) (dea5d78).
- operator: Add support for managed GCP WorkloadIdentity (#14752) (7635a5c).
- otel/labels: Add otlp attribute deployment.environment.name to list of default labels (#14747) (2d407bd).
- querier: Present DF bytes values in queryable format (#15272) (f5d62bd).
- querier: Use context propagation to call the same ingester in GetChunksID as Query (#15186) (70d9587).
- ruler: Add Rule Name and Type to Query Tags (#15055) (b272573).
- storage: Add objstore support for Swift using thanos.io/objstore (#11672) (44523e0).
- storage: Skip writeback for chunks fetched by queriers older than a duration (#15605) (3b8d993).
- storage: Support config timeout for AlibabaCloud OSS requests (#14856) (ac2e21f).
- storage: Allow TSDB index creation in memory only (#14732) (831c0d5).
- structured metadata: Sanitize structured metadata during ingestion in the distributor (#15141) (be4f17e).
Deprecations
One of the focuses of Loki 3.0 was cleaning up unused code and old features that had been previously deprecated but not removed. Loki 3.0 removed a number of previous deprecations and introduces some new deprecations. Some of the main areas with changes include:
Promtail is deprecated, as the code has been merged into Grafana Alloy. You can find migration documentation and a utility to convert your Promtail configuration to Alloy configuration in the Alloy documentation.
Deprecated storage options including the deprecation of the BoltDB store.
To learn more about breaking changes in this release, refer to the Upgrade guide.
Caution
Grafana Alloy is the new name for our distribution of the OTel collector. Grafana Agent has been deprecated and is in Long-Term Support (LTS) through October 31, 2025. Grafana Agent will reach an End-of-Life (EOL) on November 1, 2025. Read more about why we recommend migrating to Grafana Alloy.
Upgrade Considerations
For important upgrade guidance, refer to the Upgrade Guide.
- BREAKING CHANGE - Docker image: Remove
wget
from Promtail docker image (#15101).
Bug fixes
3.4.2 (2025-02-14)
- blooms: Initialize bloom gateway client only once (backport release-3.4.x) (#16268) (1b9829b)
- ci: do not disable CGO in Makefile (backport release-3.4.x) (#16272) (4fa045d)
3.4.1 (2025-02-12)
3.4.0 (2025-02-12)
aggregated_metrics: Fix the IsError method causing retries (#15296) (7a7b3b1).
azureblob: Return error if Azure returns no service principal token (#13195) (e98a86b).
blooms: Do not restart builders when planner disconnects (#14783) (7669385).
blooms: Enable metas cache on backend when running in ssd mode (#15275) (4cce207).
blooms: Fix check for skipping most recent data when filtering blooms (#15300) (78d3c44).
blooms: Fix strategy logger and add task test (#14857) (ab2721d).
blooms: Fix tenants slice on loadTenantTables (#14900) (a8f7851).
blooms: Match series to newest block only (#15481) (5846ea2).
blooms: Skip multi-tenant TSDBs during bloom planning (#14770) (76d35cc).
blooms: Fix data race in bloombuild tests (#15360) (aa7b849).
ci: Revert “fixed
Publish Rendered Helm Chart Diff
workflow” (#15506) (6c49cc0).ci: Transform TestChunkSize into a benchmark (#15361) (fed43db).
deps: Downgrade hyperloglog to 0.2.0 (#15424) (#15426) (3b0d815).
deps: Update module cloud.google.com/go/bigtable to v1.34.0 (#15581) (9f28f69).
deps: Update module cloud.google.com/go/pubsub to v1.45.3 (#15294) (672fb08).
deps: Update module cloud.google.com/go/storage to v1.50.0 (#15690) (efd3ec3).
deps: Update module github.com/alecthomas/chroma/v2 to v2.15.0 (#15596) (a2d3057).
deps: Update module github.com/alicebob/miniredis/v2 to v2.34.0 (#15501) (61b4ddf).
deps: Update module github.com/aliyun/aliyun-oss-go-sdk to v3 (#14976) (64081c0).
deps: Update module github.com/aws/aws-sdk-go-v2 to v1.32.8 (#15680) (42c43ec).
deps: Update module github.com/aws/aws-sdk-go-v2/config to v1.28.9 (#15663) (c5c9a2e).
deps: Update module github.com/aws/aws-sdk-go-v2/service/s3 to v1.72.2 (#15685) (0e329e1).
deps: Update module github.com/axiomhq/hyperloglog to v0.2.3 (#15641) (b6df82e).
deps: Update module github.com/azure/azure-storage-blob-go to v0.15.0 (#14746) (ad9bdcd).
deps: Update module github.com/baidubce/bce-sdk-go to v0.9.213 (#15686) (95dac7c).
deps: Update module github.com/bmatcuk/doublestar to v4 (#14977) (a2b66d3).
deps: Update module github.com/docker/docker to v27.3.1+incompatible (#14753) (b4a926c).
deps: Update module github.com/fatih/color to v1.18.0 (#14754) (8fc9b28).
deps: Update module github.com/fsnotify/fsnotify to v1.8.0 (#14755) (0704f5d).
deps: Update module github.com/go-redis/redis/v8 to v9 (#14978) (33a2148).
deps: Update module github.com/gocql/gocql to v1 (#15016) (2a51081).
deps: Update module github.com/golang/snappy to v0.0.4 (#15415) (035f871).
deps: Update module github.com/grafana/loki/v3 to v3.2.1 (#14826) (b8509fc).
deps: Update module github.com/grpc-ecosystem/go-grpc-middleware/v2 to v2.2.0 (#15392) (6b7c3fc).
deps: Update module github.com/hashicorp/consul/api to v1.31.0 (#15540) (8207a9b).
deps: Update module github.com/hashicorp/golang-lru to v2 (#14979) (3abb3b1).
deps: Update module github.com/heroku/x to v0.4.1 (#15370) (20f5414).
deps: Update module github.com/ibm/go-sdk-core/v5 to v5.18.5 (#15673) (b7ec8e3).
deps: Update module github.com/ibm/ibm-cos-sdk-go to v1.12.0 (#15228) (5689e2e).
deps: Update module github.com/ibm/sarama to v1.45.0 (#15636) (9e13abd).
deps: Update module github.com/imdario/mergo to v1 (#15035) (be24862).
deps: Update module github.com/influxdata/telegraf to v1.33.1 (#15688) (d57492c).
deps: Update module github.com/klauspost/compress to v1.17.11 (#15451) (6e8bd9d).
deps: Update module github.com/masterminds/sprig/v3 to v3.3.0 (#14899) (8874878).
deps: Update module github.com/minio/minio-go/v7 to v7.0.82 (#15417) (7b8d82e).
deps: Update module github.com/opentracing-contrib/go-stdlib to v1.1.0 (#15221) (9f7892a).
deps: Update module github.com/pierrec/lz4 to v2.6.1+incompatible (#15502) (60f031a).
deps: Update module github.com/pierrec/lz4/v4 to v4.1.22 (#15400) (36bda72).
deps: Update module github.com/prometheus/common to v0.61.0 (#15352) (860c25d).
deps: Update module github.com/schollz/progressbar/v3 to v3.18.0 (#15691) (5f902b4).
deps: Update module github.com/shirou/gopsutil/v4 to v4.24.12 (#15569) (bc43878).
deps: Update module github.com/sony/gobreaker/v2 to v2.1.0 (#15556) (d188d06).
deps: Update module github.com/spf13/afero to v1.12.0 (#15696) (94cfb90).
deps: Update module github.com/stretchr/testify to v1.10.0 (#15091) (f65ab13).
deps: Update module github.com/twmb/franz-go/pkg/kadm to v1.14.0 (#14911) (1b59525).
deps: Update module go.opentelemetry.io/collector/pdata to v1.22.0 (#15452) (661ae79).
deps: Update module go.opentelemetry.io/otel/trace to v1.33.0 (#15454) (82c2c56).
deps: Update module golang.org/x/crypto to v0.32.0 (#15610) (db1188f).
deps: Update module golang.org/x/net to v0.34.0 (#15612) (0b25012).
deps: Update module golang.org/x/oauth2 to v0.25.0 (#15590) (ccee7f9).
deps: Update module golang.org/x/sync to v0.10.0 (#15253) (3150f07).
deps: Update module golang.org/x/sys to v0.29.0 (#15591) (efb9a81).
deps: Update module golang.org/x/text to v0.21.0 (#15266) (818446c).
deps: Update module golang.org/x/time to v0.9.0 (#15592) (5401e78).
deps: Update module google.golang.org/api to v0.214.0 (#15519) (e34944d).
deps: Update module google.golang.org/grpc to v1.68.1 (#15269) (b607fe0).
deps: Update module google.golang.org/protobuf to v1.36.2 (#15635) (74885a2).
deps: Update module gopkg.in/alecthomas/kingpin.v2 to v2.4.0 (#14970) (37d0bb8).
deps: Update module k8s.io/apimachinery to v0.32.0 (#15398) (fada02c).
distributor: Fix data race in distributor tests (#15423) (b8168a8).
distributor: Return error 422 (Unprocessable Content) when push request does not contain any streams (#13706) (17bf32b).
docs: Correct typo in architecture name (amr64 -> arm64) (#15707) (068f81d).
docs: Improve docs for min and max table offsets (#14890) (fd9d332).
docs: Change “did received” to “did receive” in NOTES.txt (#15584) (9191eaf).
helm/loki: Add namespace to Loki templates for ruler and index-gateway (#14838) (733d99f).
helm/loki: Allow prefixing of rollout-group value and ingester name (#15063) (f4accc1).
helm: Add
appProtocol: tcp
to headless backend grpc ports (#14507) (400f5af).helm: Add conditional to include ruler config only when enabled (#15385) (3badbb3).
helm: Add default wal dir to ruler config (#14920) (1a6751f).
helm: Fix statefulset templates to not show diffs in ArgoCD (#15192) (3c71c83).
helm: Split ingester HPA when zoneAwareReplication is enabled (#14565) (80e46f7).
helm: FIx Yaml templates incorrectly annotated (#15207) (acd4d11).
helm: Disable Helm test pod when test.enabled=false (#15346) (1fb4e2b).
ingester: Add stream creation error logging (#15640) (f63c16f).
kafka: Ensure partition-reader starts up correctly (#14845) (b2f3d2e).
kafka: Fix incorrect error check in autoCommitLoop (#15149) (4b5925a).
kafka: Read from beginning if no committed offset (#14865) (1b6da11).
kafka: Use separate variable to track the consume offset (#15095) (161a192).
Keep the service_name label after discovery in push.ParseLokiRequest before calculating retention and passing to the usage tracker (#14960) (71d4d6a)
lambda-promtail: Correct S3 bucket owner label key to prevent retrieval errors (#14913) (85aaf63).
lambda-promtail: Remove s3 bucket ownership verification (#15383) (bf73014).
logcli: Check for errors before checking for
exists
when fetching data (#14780) (9e7d2f2).logql: Allow comparison against zero bytes (#15217) (17f1972).
memberlist: Respect interface names config for advertise address (#13940) (751324c).
metric_aggregation: Fix duplicate metrics registration (#15142) (215f994).
metrics: Correctly propagate index stats to metrics.go log line (#14941) (ff111dc).
metrics: Enable metric aggregation in
loki-local-config.yaml
(#15302) (c96b750).operator: Add log attribute for level to structured metadata (#14776) (036c131).
operator: Fix operator release pipeline warnings (#14817) (e707a3d).
operator: Fix RBAC permission for poddisruptionbudgets (#15107) (f00d07a).
operator: Publish images on docker hub upon release (#14786) (126ebed).
operator: Update kube-rbac-proxy to upstream registry (#14809) (568d22f).
pattern ingester: Remove
enabled
field in loki-local-config.yaml (#15059) (7410f10).promtail: Fix API level node filtering of Kubernetes SD to only fetch pod metadata for pods of the current node (#14267) (d2b6fd8).
promtail: Fix Windows forward event crash. #16155 (1c0d558).
querier: Fix goroutine leak in queryrange downstreamer (#15665) (5f476a3).
querier: Mitigate ingester race between Query & GetChunkIDs (#15178) (bd46e4c).
querier: Show correct setting in error message (#14842) (f5ae015).
queries: Bytes unit detection in detected fields (#15525) (8e260fe).
Remove unsafe pkg usage from util.mempool (#15428) (e6d82b9).
ruler: Fix loki ruler generator url left parameter url encoding (#15601) (e347eb7).
Shut down delete client on local rule-evaluator (#15345) (42469cc).
storage: Data race in chunk client hedging tests (#15466) (fad06ee).
storage: Do not retain copy of chunk while indexing a new chunk in tsdb while processing delete requests (#15541) (ff19955).
structured metadata: Structured metadata not always passed down for processing deletes (#15526) (a3808b6).
wal: Ensure successive WAL replays don’t overwrite each other (#14848) (ec95ed1).