菜单
开源

v3.3

Grafana Labs 和 Loki 团队很高兴地宣布 Loki 3.3 版本发布。以下是新增增强功能和重要修复的摘要。

有关所有更改和修复的完整列表,请参阅 CHANGELOG

功能和增强

Loki 3.3.0 的主要功能包括以下内容:

  • 使用 Bloom Filters 进行查询加速(实验性):Loki 3.0 中引入的 Bloom filters 功能仍处于实验阶段。Loki 利用 bloom filters 的方式发生了重大转变——从自由文本搜索转向利用结构化元数据的能力 (#14061) (a2fbaa8)。这一变化利用了 OpenTelemetry 在可观测性堆栈中日益增长的应用。Bloom Compactor 组件已被移除,并由 Bloom Planner 和 Bloom Builder 组件取代 (#13997) (bf60455),并且 Bloom 有了一个新的块模式 (V3) (#14038) (5395daf),这是一个破坏性更改。

  • Explore Logs:从 Grafana v11.3 开始,Explore Logs 应用程序的插件在 Grafana 中默认安装。此版本包含增强功能,以改进 Pattern Ingester 追踪 (#14707) (80aec25),将模式行长度限制应用于 json 消息键 (#14296) (41fafd8),添加配置以在 Pattern Ingester 中设置 max-allowed-line-length (#14070) (0780456),并将指标聚合移至按租户配置 (#14709) (c1fde26)。

  • logql:我们在 LogQL 中添加了一个 approx_topk 函数,该函数使用概率技术为您提供输入中最常出现值的近似值及其近似频率。这对于等效的 topk 查询达到最大系列限制或在完成前超时的情况非常有用。对于您想要更快地响应查询并可以接受真实答案的近似值的情况,它也非常有用。(#14243)。更多信息请访问 LogQL 文档

  • helm:对 Helm Chart 进行了多项改进,包括:将 Chart 更新到 Loki 版本 3.2.0 (#14281) (11b92ee),将 Bloom Compactor 替换为 Bloom Planner 和 Builder (#14003) (08e61ca),添加配置 client_max_body_size 的能力 (#12924) (809a024),为分布式模式中的组件添加额外的服务注解 (#14131) (5978f13),为 admin-api 和 enterprise-gateway 添加可配置的 extraEnvFrom (#14533) (5d78a3a),为 Helm Chart 添加 kubeVersionOverride (#14434) (0935d77),为 Helm Chart 上的 memcached 添加持久化选项 (#13619) (ef1df0e),为 pattern-ingester StatefulSet 添加容忍度 (#13605) (09530c0),允许为 tokengenprovisioner 设置节点属性 (#14311) (c708ae6),更新 Loki Helm Chart 以适应受限环境 (#14440) (adc7538),并支持单二进制模式下的 Ruler Sidecar (#13572) (684baf7)。

  • mixins:对 Loki mixins 进行了多项改进,包括:为 mixins 添加缺失的集群标签 (#12870) (547ca70),在仪表盘中添加对分区 ingester 的支持 (#14498) (70deebf),添加一个 Loki 压缩不成功警报 (#14239) (da04f50),通过参数化 mixin 记录/警报规则来覆盖一些标签 (#11495) (f1425b6),允许禁用 bloom 仪表盘 (#14177) (ce2e6d5),允许隐藏 loki-operational 中未使用的行 (#13646) (3aa4f22),以及将 SSD 的 read-resources 和 write-resources 仪表盘合并为一个也包含 backend-resources 的仪表盘 (#13471) (45b8719)。

  • operator:对 Operator 进行了多项更新,包括:添加对 Loki OTLP 限制配置的支持 (#13446) (d02f435),提供默认的 OTLP 属性配置 (#14410) (1b52387),添加 OTLP 配置用户指南 (#14620) (27b4071),将 Loki operand 更新到 v3.1.1 (#14042) (7ae1588),将 Loki operand 更新到 v3.2.1 (#14526) (5e970e5),重命名 Loki API Go 模块 (#14568) (976d8ab),引入 1x.pico size (#14407) (57de81d),将项目布局迁移到 kubebuilder go/v4 (#14447) (dbb3b6e),声明 FIPS 功能仅支持 OpenShift (#14308) (720c303)。

  • docs:新的视频和教程,包括一篇新的云部署指南:在 AWS 上部署 Loki,一篇新的 Fluent Bit 教程和一篇 OpenTelemetry Collector 入门教程。此外,Query 文档也有所改进,包括一篇新的 Query 最佳实践主题,一个重新组织的 Query 模板,以及一个修订的 LogQL 模拟器主题。

其他改进包括以下内容:

  • api:添加了一个端点用于返回检测到的字段值 (#14350) (7983f94)。
  • blooms:为 bloom-planner 添加基于磁盘的队列(回溯 k227)(#14927) (1f6828b)。
  • blooms:仅将键和 key=value 写入 bloom (#14686) (3af0004)。
  • blooms:不要将空的 bloom 添加到偏移量中 (#14577) (51c42e8)。
  • blooms:将任务计算提取到策略接口中 (#13690) (ab5e6ea)。
  • blooms:使用块大小 TSDB 统计信息进行新的 bloom 规划 (#14547) (673ede1)。
  • blooms:移除 .tar 存档 bloom 块的压缩 (#14159) (cdf084f)。
  • compactor:为保留过程添加指数退避机制 (#14182) (3136880)。
  • distributor:通过 usageTracker 跟踪丢弃的数据 (#14081) (c65721e)。
  • distributor:添加在服务名称检测前记录流选择器的能力 (#14154) (d7ff426)。
  • distributors:使用 worker 池推送到 ingesters。(#14245) (f80d68a)。
  • fluentd:支持自定义 http 头部 (#14299) (e59035e)。
  • ingester:使用 Partition Ring 实现自有流计算 (#14282) (3c36ba9)。
  • ingester:为 ingester 实现分区 Shuffle Sharding (#14304) (1a4436c)。
  • jsonnet:允许命名带区域 ingester 的前缀 (#14260) (fac3177)。
  • labels:将 app_name 添加为服务标签 (#13660) (f2a16f4)。
  • logcli:添加 gzip 压缩选项 (#14598) (4d3f9f5)。
  • logql:IP 过滤器的微优化 (#14072) (c5083c7)。
  • logql:在“正在执行查询”日志行中添加查询用户和查询来源 (#14320) (4d69929)。
  • promtail:向 promtail push API 添加结构化元数据 (#14153) (66cffcb)。
  • querier:将检测到的字段逻辑移至查询前端 (#14212) (36ace66)。
  • ruler:启用使用 thanos-io/objstore pkg 客户端的 ruler 存储 (#11713) (8bca2e7)。
  • storage:为 s3 ObjectExists 调用添加重试机制 (#14062) (73cbbb0)。
  • storage:为 S3ObjectClient 实现 IsRetryableErr (#14174) (fc90a63)。
  • storage:引入新的 ObjectExistsWithSize API (#14268) (ac422b3)。
  • storage:使用 thanos.io/objstore 的 AWS 后端 (#11221) (b872246)。
  • storage:使用 thanos.io/objstore 的 Azure 后端 (#11315) (5824e3d)。
  • storage:使用 thanos.io/objstore 的 GCS 后端 (#11132) (c059ace)。
  • structured metadata:在断言速率限制时包含 structured_metadata 大小 (#14571) (a962edb)。

弃用

Loki 3.0 的重点之一是清理未使用的代码和之前已弃用但未移除的旧功能。Loki 3.0 移除了许多之前的弃用功能,并引入了一些新的弃用功能。一些主要更改领域包括:

要了解有关此版本中破坏性更改的更多信息,请参阅升级指南

注意

Grafana Alloy 是我们的 OTel Collector 发行版的新名称。Grafana Agent 已被弃用,并通过 2025 年 10 月 31 日进入长期支持 (LTS)。Grafana Agent 将于 2025 年 11 月 1 日达到生命周期结束 (EOL)。阅读更多关于我们为什么推荐迁移到 Grafana Alloy 的信息。

升级注意事项

有关重要的升级指导,请参阅升级指南

  • 破坏性更改 - blooms:引入新的块模式 (V3) (#14038)。
  • 破坏性更改 - blooms:将结构化元数据索引到 bloom 中 (#14061)。
  • 破坏性更改 - docker:从 Promtail Docker 镜像中移除 wget (#15101)。
  • 破坏性更改 - operator:将项目布局迁移到 kubebuilder go/v4 (#14447)。
  • 破坏性更改 - operator:重命名 Loki API Go 模块 (#14568)。
  • 破坏性更改 - operator:提供默认的 OTLP 属性配置 (#14410)。

错误修复

3.3.3 (2025-02-14)

  • build:更新构建信息 3 3 x (#16169) (4672625)。
  • ci:为发布构建提供正确的构建信息 (#15939) (#16214) (e5f80d3)。
  • ci:回滚“修复 Publish Rendered Helm Chart Diff 工作流程”(#15511) (09d1085)。
  • 修复架构名称中的拼写错误 (amr64 -> arm64)(回溯 release-3.3.x)(#15715) (9acdc33)。
  • deps:Loki 3.3.2 的 CVE 更新 (#15645) (01a7a0d)。

3.3.2 (2024-12-18)

  • deps:回溯更新模块 golang.org/x/crypto 到 v0.31.0 (#15394) (57a7a2c)。
  • docker-driver:修复 docker driver 构建(回溯 release-3.3.x)(#15478) (23b5fc2)。
  • loki-local-config.yaml 中启用指标聚合(回溯 release-3.3.x)(#15319) (635f04d)。

3.3.1 (2024-12-04)

  • 破坏性更改 - docker:从 Promtail Docker 镜像中移除 wget (#15101)。
  • docker:从 base-nossl 迁移到 static。此 PR 移除了 Loki 构建系统创建的大多数 Docker 镜像中包含的 glibc。(#15203)。
  • promtail:将 Promtail 基础镜像从 Debian 切换到 Ubuntu,以修复关键安全问题 (#15195)。

3.3.0 (2024-11-19)

  • blooms:将租户限制添加为 pattern ingester 的依赖项 (#14665) (31eea90)。
  • blooms:在访问 slice 中的第一个元素之前检查任务长度 (#14634) (601f549)。
  • blooms:从 ForSeries 复制块(回溯 k227)(#14864) (d10f79c)。
  • blooms:planner 断开连接时不要重新启动 builder(回溯 k227)(#14922) (213e8ee)。
  • blooms:排除标签名称属于系列标签的标签过滤器 (#14661) (d1668f6)。
  • blooms:修复 bloom planner 和 builder 初始化中的 panic (#14110) (8307c42)。
  • blooms:修复策略 logger 并添加任务测试(回溯 k227)(#14921) (dc36a1e)。
  • blooms:修复 loadTenantTables 上的租户 slice(回溯 k227)(#14901) (540dd5a)。
  • blooms:在 bloom 规划期间跳过多租户 TSDB(回溯 k227)(#14888) (631cff3)。
  • blooms:改进 min 和 max table offsets 的文档(回溯 k227)(#14929) (3161fdc)。
  • blooms:修复 lint 错误 (#14574) (99ef900)。
  • build:为构建镜像使用 Debian Bullseye 基础镜像 (#14368) (3beb8ff)。
  • canary:在 tail 最大持续时间后立即重新连接 (#14287) (9267ee3)。
  • ci:修复 Publish Rendered Helm Chart Diff 工作流程 (#14365) (6de6420)。
  • ci:更新 helm diff 渲染工作流程 (#14424) (916e511)。
  • config:从 common 复制 Alibaba 和 IBM 对象存储配置 (#14297) (59ff1ec)。
  • config:迁移 renovate 配置 (#14646) (a67d8ef)。
  • deps:更新 aws-sdk-go-v2 monorepo (#13986) (6f49123)。
  • deps:更新 aws-sdk-go-v2 monorepo (#14742) (53a1ab7)。
  • deps:更新 github.com/grafana/dskit digest 到 687ec48 (#14395) (c2f38e1)。
  • deps:更新 github.com/grafana/dskit digest 到 7c41a40 (#14277) (f39cdbd)。
  • deps:更新 github.com/grafana/dskit digest 到 931a021 (#14032) (7c18642)。
  • deps:更新 github.com/grafana/dskit digest 到 b69ac1b (#14355) (9d7a6ea)。
  • deps:更新 github.com/grafana/dskit digest 到 f52de24 (#14319) (a4f3edf)。
  • deps:更新 github.com/twmb/franz-go/pkg/kfake digest 到 cea7aa5 (#14590) (688c42a)。
  • deps:更新 k8s.io/utils digest 到 702e33f (#14033) (b7eecc7)。
  • deps:更新模块 cloud.google.com/go/bigtable 到 v1.33.0 (#14580) (a0920ed)。
  • deps:更新模块 cloud.google.com/go/pubsub 到 v1.45.0 (#14361) (4351238)。
  • deps:更新模块 cloud.google.com/go/pubsub 到 v1.45.1 (#14650) (f173708)。
  • deps:更新模块 cloud.google.com/go/storage 到 v1.46.0 (#14744) (8e45116)。
  • deps:更新模块 github.com/alicebob/miniredis/v2 到 v2.33.0 (#14721) (7bfda25)。
  • deps:更新模块 github.com/aws/aws-sdk-go 到 v1.55.5 (#14715) (03f0f5a)。
  • deps:更新模块 github.com/axiomhq/hyperloglog 到 v0.2.0 (#14722) (0167b22)。
  • deps:更新模块 github.com/baidubce/bce-sdk-go 到 v0.9.189 (#14044) (7fb34b4)。
  • deps:更新模块 github.com/baidubce/bce-sdk-go 到 v0.9.192 (#14337) (6f7cae2)。
  • deps:更新模块 github.com/baidubce/bce-sdk-go 到 v0.9.196 (#14651) (478085a)。
  • deps:更新模块 github.com/baidubce/bce-sdk-go 到 v0.9.197 (#14682) (b898294)。
  • deps:更新模块 github.com/coder/quartz 到 v0.1.2 (#14652) (7459e07)。
  • deps:更新模块 github.com/felixge/fgprof 到 v0.9.5 (#14338) (a2ad3aa)。
  • deps:更新模块 github.com/fsouza/fake-gcs-server 到 v1.50.2 (#14313) (275c97c)。
  • deps:更新模块 github.com/hashicorp/raft 到 v1.7.1 (#14005) (e9cec1d)。
  • deps:更新模块 github.com/ibm/go-sdk-core/v5 到 v5.17.5 (#14045) (677d217)。
  • deps:更新模块 github.com/ibm/go-sdk-core/v5 到 v5.18.1 (#14716) (8395acd)。
  • deps:更新模块 github.com/ibm/ibm-cos-sdk-go 到 v1.11.1 (#14342) (aa82a7c)。
  • deps:更新模块 github.com/klauspost/compress 到 v1.17.10 (#14352) (e23c5ed)。
  • deps:更新模块 github.com/minio/minio-go/v7 到 v7.0.76 (#14006) (51f9376)。
  • deps:更新模块 github.com/minio/minio-go/v7 到 v7.0.77 (#14353) (d0e3ef7)。
  • deps:更新模块 github.com/minio/minio-go/v7 到 v7.0.80 (#14654) (eec2513)。
  • deps:更新模块 github.com/ncw/swift/v2 到 v2.0.3 (#14356) (c843288)。
  • deps:更新模块 github.com/prometheus/client_golang 到 v1.20.5 (#14655) (e12f843)。
  • deps: 更新模块 github.com/schollz/progressbar/v3 至 v3.17.0 ( #14720) ( 4419d0f)。
  • deps: 更新模块 github.com/shirou/gopsutil/v4 至 v4.24.10 ( #14719) ( 3280376)。
  • deps: 更新模块 github.com/shirou/gopsutil/v4 至 v4.24.9 ( #14357) ( c8e6a9d)。
  • deps: 更新模块 github.com/shopify/sarama 至 v1.43.3 ( #14059) ( 1cf4813)。
  • deps: 更新模块 github.com/spf13/afero 至 v1.11.0 ( #14060) ( bbbd82b)。
  • deps: 更新模块 go.etcd.io/bbolt 至 v1.3.11 ( #14358) ( b7bccfc)。
  • deps: 更新模块 golang.org/x/net 至 v0.29.0 ( #14341) ( 1b6b9da)。
  • deps: 降级 grpc 以修复回归 ( #14065) ( 8c38d46)。
  • deps: 修复 Ingester 缺少依赖 PartitionRing 的问题 ( #14292) ( 6354ded)。
  • deps: nix build, 降级 toolchain 至 go1.23.1 ( #14442) ( 26dfd62)。
  • deps: 回退“fix(deps): 更新模块 github.com/shirou/gopsutil/v4 至 v4.24.9 ( #14357)” ( #14437) ( d53955b)。
  • detected_fields: 传递解析器时返回已解析的标签 ( #14047) ( aa1ac99)。
  • detected_fields: 始终将空数组返回为 null ( #14112) ( 93009d4)。
  • docs: 更正 OTLP 文档中的拼写错误 ( #14602) ( 063c590)。
  • distributor: 启用时始终写入 detected_level,即使未知 ( #14464) ( 41c6b6c)。
  • distributor: 验证分区环是否为 kafka 且已启用 ( #14303) ( 8438d41)。
  • distributor: 警告级别的日志级别检测 ( #14444) ( 242a852)。
  • explore logs: 正确创建 logfmt 字符串 ( #14124) ( 63e84b4)。
  • explore logs: 允许任何级别用于聚合指标 ( #14255) ( c001a1d)。
  • helm: 向 Helm chart 添加缺失的 loki.storage.azure.chunkDelimiter 参数 ( #14011) ( 08c70cc)。
  • helm: 在创建角色之前检查 rbac.namespaced 条件 ( #14201) ( 3f47f09)。
  • helm: 修复 Memcached 的持久化配置 ( #14049) ( ee6e1cf)。
  • helm: 修复入口 NetworkPolicy 引用了错误的端口名 ( #12907) ( 963a25b)。
  • helm: Bloom 组件的各种修复和增强 ( #14128) ( dc0cbd4)。
  • ingester: 正确报告 PSRL 错误消息 ( #14187) ( a475153)。
  • ingester: 在 Ingester 启动时等待 OwnedStreams 服务 ( #14208) ( a4aee4f)。
  • lambda-promtail: 在 lambda-promtail terraform 代码中,向附加到 sqs 的 iam policy 添加 s3 principal ( #14619) ( db0889e)。
  • logcli: 在获取数据时检查是否存在之前检查错误 (backport k227) ( #14906) ( 31b2a63)。
  • logcli: 为每一行创建新的 tail 响应 ( #14525) ( bcfd0d1)。
  • logql: 修复使用空数组索引时 JSON 解析中的 panic ( #14393) ( 833bf0d)。
  • logql: 更新 JSONExpressionParser,如果提取的值是 JSON 对象,则不进行反转义。 ( #14499) ( 08b1a90)。
  • logql: 允许重命名结构化元数据标签 ( #13955) ( 2d4792a)。
  • logql: 重命名的标签应使用 ParsedLabel 类别 ( #14515) ( 82fb2f0)。
  • logql: 如果标签包含特殊符号则跳过 ( #14068) ( 55e374e)。
  • mixin: 从磁盘使用量聚合中移除 pod 标签 ( #14180) ( 5d45c96)。
  • mixins: 修复 loki-resources-overview 面板布局 ( #14178) ( 8f54ec6)。
  • mixins: 在 loki-operational 中为单一可伸缩部署添加后端路径部分 ( #13023) ( 16881ab)。
  • mixins: 使用最新 KSM 版本的磁盘空间利用率面板 ( #13486) ( 0ea7431)。
  • mixins: 保留仪表盘修复指标名称 ( #14617) ( c762b9b)。
  • otlp: 为 otlp 端点启用服务检测 ( #14036) ( 4f962ef)。
  • operator: 为 OpenShift UI 下拉菜单添加 1x.pico ( #14660) ( 4687f37)。
  • operator: 为 OpenShift 上的所有规则添加缺失的 groupBy 标签 ( #14279) ( ce7b2e8)。
  • operator: 再次正确忽略 BlotDB 仪表盘 ( #14587) ( 4879d10)。
  • operator: 禁用服务名称的自动发现 ( #14506) ( 3834c74)。
  • operator: 为 OpenShift 租户模式禁用日志级别发现 ( #14613) ( 5034d34)。
  • operator: 修复 size-calculator 镜像构建问题 ( #14573) ( a79b8fe)。
  • operator: 修复 size-calculator 的 make 构建目标 ( #14551) ( e727187)。
  • operator: 将 statefulset 名称的 OTLP 属性移动到流标签 ( #14630) ( 5df3594)。
  • operator: 没有 pod 时使用空初始化的 pod 状态映射 ( #14314) ( 6f533ed)。
  • operator: 更新 operator API 的 renovate ignore,使用新的模块路径 ( #14581) ( c9b2907)。
  • pattern: 修复 tee 到 pattern 的延迟指标命名空间 ( #14241) ( ae955ed)。
  • promtail: 修复配置 unmarshalling ( #14408) ( a05431f)。
  • promtail: 修复 azureeventhubs 消息缺少时间字段时的解析器问题 ( #14218) ( 2e62abb)。
  • promtail: 验证 scrape_config 作业名称,不允许重复的作业名称 ( #13719) ( f2d3499)。
  • querier: 从分位数和 topk 查询中传播查询统计信息 ( #13831) ( 78b275b)。
  • querier: 修正 detected fields 中的 _extracted 逻辑 ( #14064) ( 1b3ba53)。
  • querier: 时间戳。Time 应该用毫秒调用 ( #14196) ( f8d9143)。
  • querier: 在 metrics.go 中报告指标和日志查询的正确状态码 ( #12102) ( 900751c)。
  • query: 修复查询结果 marshal 过程中无效 utf8 字符的 bug ( #14585) ( f411a07)。
  • 在标签适配器 unmarshall 中移除不安全字符串的使用 ( #14216) ( 758364c)。
  • 重命名拼写错误的文件名 ( #14237) ( cf1d4a3)。
  • sharding: 在 shard 请求中将偏移量应用于 fromthrough ( #14256) ( 17c472d)。
  • storage: 检索 headers 时添加额外的超时验证 ( #14217) ( 8322e51)。
  • storage: 不要保留查询时初始化的索引集创建的 span logger ( #14027) ( 4e41744)。
  • storage: 扩展匹配以处理更多变体 ( #14221) ( 71d7291)。
  • storage: 在 S3 中启用拥塞控制时禁用客户端重试( #14588) ( cff9f43)。
  • storage: 让 GetObject 检查是否上下文已取消 ( #14420) ( 5f325aa)。
  • storage:ObjectExistsWithSize 转换为 GetAttributes ( #14329) ( 2f56f50)。
  • storage: 更新 AWS 存储超时错误以适应 Go 1.23 行为 ( #14226) ( a4642b5)。