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)。
结构化元数据: 引入了一项新功能,基于每个租户的配置,允许在摄取时将“字段”提取到结构化元数据中。字段可以是常规标签、结构化元数据键,或来自
logfmt
或json
格式日志行的键。( #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 移除了许多先前弃用的内容,并引入了一些新的弃用。主要更改领域包括:
Promtail 已弃用,其代码已合并到 Grafana Alloy 中。您可以在 Alloy 文档中找到迁移文档和将 Promtail 配置转换为 Alloy 配置的工具。请注意,此弃用不包括 lambda-promtail 客户端。
弃用的存储选项,包括弃用 BoltDB 存储。
要了解有关此版本中破坏性更改的更多信息,请参阅升级指南。
注意
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)
3.4.0 (2025-02-12)
aggregated_metrics: 修复导致重试的 IsError 方法 ( #15296) ( 7a7b3b1)。
blooms: 修复 strategy logger 并添加 task test ( #14857) ( ab2721d)。
blooms: 修复 loadTenantTables 中的 tenants slice ( #14900) ( a8f7851)。
ci: 恢复“修复了
Publish Rendered Helm Chart Diff
workflow” ( #15506) ( 6c49cc0)。deps: 将 hyperloglog 降级到 0.2.0 ( #15424) ( #15426) ( 3b0d815)。
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/oauth2 更新至 v0.25.0 ( #15590) ( ccee7f9)。
依赖项: 将模块 golang.org/x/sync 更新至 v0.10.0 ( #15253) ( 3150f07)。
依赖项: 将模块 golang.org/x/text 更新至 v0.21.0 ( #15266) ( 818446c)。
依赖项: 将模块 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)。
文档: 将 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: 修复 statefulset 模板以避免在 ArgoCD 中显示差异 ( #15192) ( 3c71c83)。
helm: 在 zoneAwareReplication 启用时拆分 ingester HPA ( #14565) ( 80e46f7)。
helm: 当 test.enabled=false 时禁用 Helm 测试 pod ( #15346) ( 1fb4e2b)。
在 push.ParseLokiRequest 中发现后保留 service_name 标签,然后在计算保留并传递给使用跟踪器之前 ( #14960) ( 71d4d6a)
操作员: 修复 poddisruptionbudgets 的 RBAC 权限问题 ( #15107) ( f00d07a)。
模式摄取器: 移除 loki-local-config.yaml 中的
enabled
字段 ( #15059) ( 7410f10)。promtail: 修复 Kubernetes SD 的 API 级别节点过滤,仅获取当前节点 pod 的元数据 ( #14267) ( d2b6fd8)。
查询器: 修复 queryrange downstreamer 中的 goroutine 泄漏问题 ( #15665) ( 5f476a3)。
查询器: 缓解 Query & GetChunkIDs 之间的摄取器竞争问题 ( #15178) ( bd46e4c)。
规则器: 修复 loki ruler 生成器 URL 左参数 URL 编码问题 ( #15601) ( e347eb7)。