菜单
开源

v3.4

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

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

特性和增强功能

Loki 3.4.0 中的主要特性包括:

  • 时间分片摄取: 为长期乱序摄取添加了每个租户的时间分片。设置 shard_streams.time_sharding_enabled 是一个每个租户的配置,它通过注入一个新的 __time_shard__ 合成标签来分割传入的日志流,以确保没有任何流的长度会超过 1h(或更确切地说,max_chunk_age/2)。这允许摄取非常旧的日志,因为这些新流中的日志在设计上永远不会“落后太多”。( #14711) ( 0d6d68d)。

  • Thanos 对象客户端: 以前,Loki 和 Grafana Enterprise Logs 使用不同的 Go 包与底层对象存储通信。迁移到 Thanos 意味着现在 Loki 和 GEL 以及其他 Grafana 后端数据库(Mimir 和 Pyroscope)之间使用单个对象客户端。( #14891) ( fb6789d), ( #14638) ( 8958eb9), ( #14867) ( 947a66f), ( #14793) ( cfc3819), ( #14937) ( a629212)。文档现在包括使用基于 Thanos 的存储客户端的配置示例

  • API: 添加了对 Parquet 文件格式作为查询响应格式的支持。( #15408) ( d0c11a6)。

  • 结构化元数据: 引入了一项新功能,基于每个租户的配置,允许在摄取时将“字段”提取到结构化元数据中。字段可以是常规标签、结构化元数据键,或来自 logfmtjson 格式日志行的键。( #15188) ( 7033091)。

  • lambda-promtail: 添加了对 lambda-promtail 中使用 Prometheus 风格的 relabel 配置来重新标记日志条目的支持。这允许在将日志条目发送到 Loki 之前进行更灵活的标签操作和过滤。( #15600) ( c41a8b4)。

  • Kafka: Loki 3.4 添加了 Apache Kafka 开发环境,以支持正在进行的开发工作。( #15603) ( 226e9f1)。

  • Helm Charts: Loki 3.4 对 Helm Charts 进行了多项改进,包括:添加了对 overrides exporter 的支持 ( #15630) ( db72164),为 admin-api pods 暴露 topologySpreadConstraints ( #14995) ( 1b93086),为分布式部署暴露 topologySpreadConstraints ( #14853) ( d075107),仅计算 .data 内容的 ConfigMap/Secret 校验和 ( #15177) ( 990f71c),不显式模板化 managed-by,因为它应由安装管理器在安装时设置。( #14763) ( 10b7478)。

  • 使用布隆过滤器加速查询(实验性):Loki 3.0 中引入的布隆过滤器功能仍然是实验性的。在 Loki 3.3 中,Loki 利用布隆过滤器的方式发生了重大转变——从自由文本搜索转向利用结构化元数据的能力。在 Loki 3.4 中,新 Bloom Planner 的工作仍在继续 ( #14874) ( b646861)。

  • Explore 日志: 用于指标、日志、追踪和 Profiling 的 Explore 应用套件有了新名称:Grafana Drilldown。要了解我们做出这一改变的原因,您可以阅读这篇博客文章。自 2025 年 2 月 20 日起,新名称已体现在 Grafana Cloud 用户界面和导航中,并将包含在 3 月份发布的 Grafana 11.6 中。

  • 文档: 本次发布包含大幅修订的标签主题和新的Cardinality (基数)主题。本次发布还标志着根据 Grafana Labs 运行 Loki 的经验最新更新的大小调整指南页面的回归。查询部分的持续更新包括修订的logcli 主题和新的logcli 教程。此外还有两个新的教程:在 Azure 上部署 Loki 教程Kubernetes 监控 Helm 教程

注意

请注意,在适当的情况下,文档更新已回port到以前的版本。

其他改进包括:

  • analytics: 为分析客户端添加 TLS 配置 ( #15227) ( 2c5eabd)。
  • approx_topk: 减少 approx_topk 中 HyperLogLog 的内存使用。( #15559) ( bef2043)。
  • approx_topk: 通过减少分配来提高 approx_topk 的性能。( #15450) ( 04994ca)。
  • blooms: 添加任务计时和大小调整指标 ( #15032) ( 79cccfd)。
  • blooms: 在 bloom builder 中应用任务超时 ( #14988) ( f92dde0)。
  • blooms: 一旦 bloom 块构建完成即预取 ( #15050) ( b406015)。
  • blooms: 在将任务发送给 builder 之前立即计算系列的 chunkrefs ( #14808) ( 66e6b1c)。
  • blooms: 替换用于编码/解码 metas 的 JSON 库 ( #14767) ( 57f16a0)。
  • distributor: 添加一个指标摄取时间的 SM 清理 ( #15222) ( e9d0c3e)。
  • docker compose: 启用功能开关 ( #14858) ( 8f243ee)。
  • docker driver: 在 Drone pipeline 中添加 Docker 驱动的 ARM64 构建和发布 ( #9247) ( e950251)。
  • lambda-promtail: 为 s3 存储桶通知过滤器前缀添加 terraform 变量 ( #15381) ( 3dd8d7d)。
  • logcli: 在 logcli 中添加对 ProxyFromEnvironment 的可选支持 ( #11742) ( #14950) ( c56b95d)。
  • logcli: 包含通用标签 ( #15611) ( 639ac74)。
  • logql: 如果可能,允许 line_format 跳过模板执行 ( #15411) ( 2150fbc)。
  • metrics: 向 pattern ingesters 添加跳过的行指标 ( #14997) ( dea5d78)。
  • operator: 添加对托管式 GCP WorkloadIdentity 的支持 ( #14752) ( 7635a5c)。
  • otel/labels: 将 otlp 属性 deployment.environment.name 添加到默认标签列表 ( #14747) ( 2d407bd)。
  • querier: 以可查询格式呈现 DF 字节值 ( #15272) ( f5d62bd)。
  • querier: 使用上下文传播在 GetChunksID 中调用与 Query 相同的 ingester ( #15186) ( 70d9587)。
  • ruler: 将规则名称和类型添加到查询标签 ( #15055) ( b272573)。
  • storage: 使用 thanos.io/objstore 添加对 Swift 的 objstore 支持 ( #11672) ( 44523e0)。
  • storage: 跳过早于特定时长的查询器获取的块的写回 ( #15605) ( 3b8d993)。
  • storage: 支持阿里云 OSS 请求的配置超时 ( #14856) ( ac2e21f)。
  • storage: 允许仅在内存中创建 TSDB 索引 ( #14732) ( 831c0d5)。
  • structured metadata: 在分发器中摄取期间清理结构化元数据 ( #15141) ( be4f17e)。

弃用

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

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

注意

Grafana Alloy 是我们 OTel collector 分发版的新名称。Grafana Agent 已被弃用,并将在 2025 年 10 月 31 日之前处于长期支持 (LTS) 状态。Grafana Agent 将于 2025 年 11 月 1 日达到生命周期结束 (EOL)。阅读更多关于我们为何推荐迁移到 Grafana Alloy 的信息。

升级注意事项

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

  • 破坏性变更 - Docker 镜像: 从 Promtail docker 镜像中移除 wget ( #15101)。

错误修复

3.4.2 (2025-02-14)

  • blooms: 仅初始化 bloom 网关客户端一次(回port release-3.4.x)( #16268) ( 1b9829b)
  • ci: 不在 Makefile 中禁用 CGO(回port release-3.4.x)( #16272) ( 4fa045d)

3.4.1 (2025-02-12)

  • docker: 更新 docker 镜像中的构建信息 ( #16225) ( 4484080)。

3.4.0 (2025-02-12)

  • aggregated_metrics: 修复导致重试的 IsError 方法 ( #15296) ( 7a7b3b1)。

  • azureblob: 如果 Azure 未返回服务主体令牌,则返回错误 ( #13195) ( e98a86b)。

  • blooms: 从 ForSeries 复制 chunks ( #14863) ( bfc2890)。

  • blooms: 当 planner 断开连接时,不要重启 builders ( #14783) ( 7669385)。

  • blooms: 在 ssd 模式下运行时,在后端启用 metas 缓存 ( #15275) ( 4cce207)。

  • blooms: 修复过滤 blooms 时跳过最新数据的检查 ( #15300) ( 78d3c44)。

  • blooms: 修复 strategy logger 并添加 task test ( #14857) ( ab2721d)。

  • blooms: 修复 loadTenantTables 中的 tenants slice ( #14900) ( a8f7851)。

  • blooms: 仅将 series 匹配到最新的 block ( #15481) ( 5846ea2)。

  • blooms: 在 bloom 规划期间跳过多租户 TSDBs ( #14770) ( 76d35cc)。

  • blooms: 修复 bloombuild tests 中的数据竞争 ( #15360) ( aa7b849)。

  • ci: 修复测试编译错误 ( #15404) ( db2b6db)。

  • ci: 彻底移除 submodule ( #15495) ( 80e8e60)。

  • ci: 恢复“修复了 Publish Rendered Helm Chart Diff workflow” ( #15506) ( 6c49cc0)。

  • ci: 将 TestChunkSize 转换为基准测试 ( #15361) ( fed43db)。

  • ci: 更新 Helm CI 的 Python 版本 ( #15420) ( bdbb009)。

  • deps: 将 hyperloglog 降级到 0.2.0 ( #15424) ( #15426) ( 3b0d815)。

  • deps: 更新 aws-sdk-go-v2 monorepo ( #14820) ( a355840)。

  • deps: 更新模块 cloud.google.com/go/bigtable 到 v1.34.0 ( #15581) ( 9f28f69)。

  • deps: 更新模块 cloud.google.com/go/pubsub 到 v1.45.3 ( #15294) ( 672fb08)。

  • deps: 更新模块 cloud.google.com/go/storage 到 v1.50.0 ( #15690) ( efd3ec3)。

  • deps: 更新模块 github.com/alecthomas/chroma/v2 到 v2.15.0 ( #15596) ( a2d3057)。

  • deps: 更新模块 github.com/alicebob/miniredis/v2 到 v2.34.0 ( #15501) ( 61b4ddf)。

  • deps: 更新模块 github.com/aliyun/aliyun-oss-go-sdk 到 v3 ( #14976) ( 64081c0)。

  • deps: 更新模块 github.com/aws/aws-sdk-go-v2 到 v1.32.8 ( #15680) ( 42c43ec)。

  • deps: 更新模块 github.com/aws/aws-sdk-go-v2/config 到 v1.28.9 ( #15663) ( c5c9a2e)。

  • deps: 更新模块 github.com/aws/aws-sdk-go-v2/service/s3 到 v1.72.2 ( #15685) ( 0e329e1)。

  • deps: 更新模块 github.com/axiomhq/hyperloglog 到 v0.2.3 ( #15641) ( b6df82e)。

  • deps: 更新模块 github.com/azure/azure-storage-blob-go 到 v0.15.0 ( #14746) ( ad9bdcd)。

  • deps: 更新模块 github.com/baidubce/bce-sdk-go 到 v0.9.213 ( #15686) ( 95dac7c)。

  • deps: 更新模块 github.com/bmatcuk/doublestar 到 v4 ( #14977) ( a2b66d3)。

  • deps: 更新模块 github.com/docker/docker 到 v27.3.1+incompatible ( #14753) ( b4a926c)。

  • deps: 更新模块 github.com/fatih/color 到 v1.18.0 ( #14754) ( 8fc9b28)。

  • deps: 更新模块 github.com/fsnotify/fsnotify 到 v1.8.0 ( #14755) ( 0704f5d)。

  • deps: 更新模块 github.com/go-redis/redis/v8 到 v9 ( #14978) ( 33a2148)。

  • deps: 更新模块 github.com/gocql/gocql 到 v1 ( #15016) ( 2a51081)。

  • deps: 更新模块 github.com/golang/snappy 到 v0.0.4 ( #15415) ( 035f871)。

  • deps: 更新模块 github.com/grafana/loki/v3 到 v3.2.1 ( #14826) ( b8509fc)。

  • deps: 更新模块 github.com/grpc-ecosystem/go-grpc-middleware/v2 到 v2.2.0 ( #15392) ( 6b7c3fc)。

  • deps: 更新模块 github.com/hashicorp/consul/api 到 v1.31.0 ( #15540) ( 8207a9b)。

  • deps: 更新模块 github.com/hashicorp/golang-lru 到 v2 ( #14979) ( 3abb3b1)。

  • deps: 更新模块 github.com/heroku/x 到 v0.4.1 ( #15370) ( 20f5414)。

  • deps: 更新模块 github.com/ibm/go-sdk-core/v5 到 v5.18.5 ( #15673) ( b7ec8e3)。

  • deps: 更新模块 github.com/ibm/ibm-cos-sdk-go 到 v1.12.0 ( #15228) ( 5689e2e)。

  • deps: 更新模块 github.com/ibm/sarama 到 v1.45.0 ( #15636) ( 9e13abd)。

  • deps: 更新模块 github.com/imdario/mergo 到 v1 ( #15035) ( be24862)。

  • deps: 更新模块 github.com/influxdata/telegraf 到 v1.33.1 ( #15688) ( d57492c)。

  • deps: 更新模块 github.com/klauspost/compress 到 v1.17.11 ( #15451) ( 6e8bd9d)。

  • deps: 更新模块 github.com/masterminds/sprig/v3 到 v3.3.0 ( #14899) ( 8874878)。

  • deps: 更新模块 github.com/minio/minio-go/v7 到 v7.0.82 ( #15417) ( 7b8d82e)。

  • deps: 更新模块 github.com/opentracing-contrib/go-stdlib 到 v1.1.0 ( #15221) ( 9f7892a)。

  • deps: 更新模块 github.com/pierrec/lz4 到 v2.6.1+incompatible ( #15502) ( 60f031a)。

  • deps: 更新模块 github.com/pierrec/lz4/v4 到 v4.1.22 ( #15400) ( 36bda72)。

  • deps: 更新模块 github.com/prometheus/common 到 v0.61.0 ( #15352) ( 860c25d)。

  • deps: 更新模块 github.com/schollz/progressbar/v3 到 v3.18.0 ( #15691) ( 5f902b4)。

  • deps: 更新模块 github.com/shirou/gopsutil/v4 到 v4.24.12 ( #15569) ( bc43878)。

  • deps: 更新模块 github.com/sony/gobreaker/v2 到 v2.1.0 ( #15556) ( d188d06)。

  • deps: 更新模块 github.com/spf13/afero 到 v1.12.0 ( #15696) ( 94cfb90)。

  • deps: 更新模块 github.com/stretchr/testify 到 v1.10.0 ( #15091) ( f65ab13)。

  • deps: 更新模块 github.com/twmb/franz-go/pkg/kadm 到 v1.14.0 ( #14911) ( 1b59525)。

  • 依赖项: 将模块 go.opentelemetry.io/collector/pdata 更新至 v1.22.0 ( #15452) ( 661ae79)。

  • 依赖项: 将模块 go.opentelemetry.io/otel/trace 更新至 v1.33.0 ( #15454) ( 82c2c56)。

  • 依赖项: 将模块 golang.org/x/crypto 更新至 v0.32.0 ( #15610) ( db1188f)。

  • 依赖项: 将模块 golang.org/x/net 更新至 v0.34.0 ( #15612) ( 0b25012)。

  • 依赖项: 将模块 golang.org/x/oauth2 更新至 v0.25.0 ( #15590) ( ccee7f9)。

  • 依赖项: 将模块 golang.org/x/sync 更新至 v0.10.0 ( #15253) ( 3150f07)。

  • 依赖项: 将模块 golang.org/x/sys 更新至 v0.29.0 ( #15591) ( efb9a81)。

  • 依赖项: 将模块 golang.org/x/text 更新至 v0.21.0 ( #15266) ( 818446c)。

  • 依赖项: 将模块 golang.org/x/time 更新至 v0.9.0 ( #15592) ( 5401e78)。

  • 依赖项: 将模块 google.golang.org/api 更新至 v0.214.0 ( #15519) ( e34944d)。

  • 依赖项: 将模块 google.golang.org/grpc 更新至 v1.68.1 ( #15269) ( b607fe0)。

  • 依赖项: 将模块 google.golang.org/protobuf 更新至 v1.36.2 ( #15635) ( 74885a2)。

  • 依赖项: 将模块 gopkg.in/alecthomas/kingpin.v2 更新至 v2.4.0 ( #14970) ( 37d0bb8)。

  • 依赖项: 将模块 k8s.io/apimachinery 更新至 v0.32.0 ( #15398) ( fada02c)。

  • 依赖项: 将模块 k8s.io/klog 更新至 v2 ( #15046) ( 734caf5)。

  • 分发器: 修复分发器测试中的数据竞争问题 ( #15423) ( b8168a8)。

  • 分发器: 在推送请求不包含任何流时返回错误 422 (无法处理的内容) ( #13706) ( 17bf32b)。

  • 文档: 纠正架构名称中的拼写错误 (amr64 -> arm64) ( #15707) ( 068f81d)。

  • 文档: 改进最小和最大表偏移量的文档 ( #14890) ( fd9d332)。

  • 文档: 将 NOTES.txt 中的 “did received” 改为 “did receive” ( #15584) ( 9191eaf)。

  • helm/loki: 为 ruler 和 index-gateway 添加命名空间到 Loki 模板 ( #14838) ( 733d99f)。

  • helm/loki: 允许为 rollout-group 值和 ingester 名称添加前缀 ( #15063) ( f4accc1)。

  • helm: 为无头后端 grpc 端口添加 appProtocol: tcp ( #14507) ( 400f5af)。

  • helm: 添加条件,仅在启用时包含 ruler 配置 ( #15385) ( 3badbb3)。

  • helm: 为 ruler 配置添加默认 wal 目录 ( #14920) ( 1a6751f)。

  • helm: 修复 statefulset 模板以避免在 ArgoCD 中显示差异 ( #15192) ( 3c71c83)。

  • helm: 在 zoneAwareReplication 启用时拆分 ingester HPA ( #14565) ( 80e46f7)。

  • helm: 修复 Yaml 模板标注不正确的问题 ( #15207) ( acd4d11)。

  • helm: 当 test.enabled=false 时禁用 Helm 测试 pod ( #15346) ( 1fb4e2b)。

  • 摄取器: ingester 测试中的数据竞争问题 ( #15465) ( 04f621e)。

  • 摄取器: 添加流创建错误日志记录 ( #15640) ( f63c16f)。

  • kafka: 确保分区读取器正常启动 ( #14845) ( b2f3d2e)。

  • kafka: 修复 autoCommitLoop 中错误的错误检查 ( #15149) ( 4b5925a)。

  • kafka: 如果没有已提交的偏移量,则从头开始读取 ( #14865) ( 1b6da11)。

  • kafka: 使用 KafkaEndOffset 而不是 -1 ( #15099) ( 2113526)。

  • kafka: 使用单独的变量来跟踪消费偏移量 ( #15095) ( 161a192)。

  • 在 push.ParseLokiRequest 中发现后保留 service_name 标签,然后在计算保留并传递给使用跟踪器之前 ( #14960) ( 71d4d6a)

  • lambda-promtail: 修正 S3 桶所有者标签键以防止检索错误 ( #14913) ( 85aaf63)。

  • lambda-promtail: 移除 s3 桶所有权验证 ( #15383) ( bf73014)。

  • logcli: 在获取数据时检查 exists 之前先检查错误 ( #14780) ( 9e7d2f2)。

  • logql: 允许与零字节进行比较 ( #15217) ( 17f1972)。

  • 成员列表: 尊重接口名称配置以获取广播地址 ( #13940) ( 751324c)。

  • 指标聚合: 修复重复指标注册问题 ( #15142) ( 215f994)。

  • 指标: 正确地将索引统计信息传播到 metrics.go 日志行 ( #14941) ( ff111dc)。

  • 指标:loki-local-config.yaml 中启用指标聚合 ( #15302) ( c96b750)。

  • 操作员: 为结构化元数据添加 level 的日志属性 ( #14776) ( 036c131)。

  • 操作员: 修复 OpenShift 最大版本问题 ( #14764) ( cc496c6)。

  • 操作员: 修复操作员发布管道警告 ( #14817) ( e707a3d)。

  • 操作员: 修复 poddisruptionbudgets 的 RBAC 权限问题 ( #15107) ( f00d07a)。

  • 操作员: 发布时将镜像发布到 docker hub ( #14786) ( 126ebed)。

  • 操作员: 将 kube-rbac-proxy 更新到上游注册表 ( #14809) ( 568d22f)。

  • otlp: 在错误时写入 protobuf 状态 ( #15097) ( 63a2442)。

  • 模式摄取器: 移除 loki-local-config.yaml 中的 enabled 字段 ( #15059) ( 7410f10)。

  • promtail: 修复 Kubernetes SD 的 API 级别节点过滤,仅获取当前节点 pod 的元数据 ( #14267) ( d2b6fd8)。

  • promtail: 修复 Windows forward event 崩溃问题。 #16155 ( 1c0d558)。

  • 查询器: 修复 queryrange downstreamer 中的 goroutine 泄漏问题 ( #15665) ( 5f476a3)。

  • 查询器: 旧版标签端点路由 ( #14933) ( 8ce321e)。

  • 查询器: 缓解 Query & GetChunkIDs 之间的摄取器竞争问题 ( #15178) ( bd46e4c)。

  • 查询器: 在错误消息中显示正确的设置 ( #14842) ( f5ae015)。

  • 查询: 检测字段中的字节单位检测 ( #15525) ( 8e260fe)。

  • 移除 util.mempool 中 unsafe 包的使用 ( #15428) ( e6d82b9)。

  • 规则器: 修复 loki ruler 生成器 URL 左参数 URL 编码问题 ( #15601) ( e347eb7)。

  • 关闭本地规则评估器上的删除客户端 ( #15345) ( 42469cc)。

  • 存储: Chunk 客户端对冲测试中的数据竞争问题 ( #15466) ( fad06ee)。

  • 存储: 在处理删除请求时,在 tsdb 中索引新块时不要保留块的副本 ( #15541) ( ff19955)。

  • 结构化元数据: 结构化元数据并非总是向下传递以处理删除请求 ( #15526) ( a3808b6)。

  • wal: 确保连续的 WAL 重放不会相互覆盖 ( #14848) ( ec95ed1)。