V2.4
Loki 2.4 重点关注两项
- 让日志更容易进入 Loki。
- 让 Loki 更容易运行和操作。任何不使用 Kubernetes 或避免微服务的人都应该密切关注:此版本为您提供了许多功能。
特性和增强功能
- Loki 不再要求按完美的按时间顺序发送日志。 支持乱序日志是 Loki 最受高度请求的功能之一。严格的排序约束已被移除。
- 通过介于单体和微服务之间的混合部署模式,扩展 Loki 现在更加容易。简单可伸缩部署 通过新的
read
和write
targets 来扩展 Loki。以前您需要 Kubernetes 和微服务方法才能开始挖掘 Loki 的潜力,现在可以通过更简单的方式实现。 - 新的
common
部分 使 Loki 配置减少了 70%。再结合更新的默认值,Loki 开箱即用,具有更合适的默认值和限制。请查看示例本地配置 作为运行 Loki 的新参考。 - 记录规则不再是实验性功能。我们为其提供了更具弹性的实现,该实现利用了 Prometheus 中现有的预写日志代码。
- 新的Promtail Kafka Consumer 可以轻松地将您的日志从 Kafka 导入 Loki。
- 感谢出色的 Loki 社区,有不错的 LogQL 增强功能。LogQL 现在有group_left 和 group_right。并且
label_format
和line_format
函数现在支持处理日期和时间。 - 社区的另一项重要贡献允许 Promtail 通过 HTTP 接受 ndjson 和纯文本日志文件。
总而言之,Loki 2.4 包含了大约 260 个 PR,我们感谢所有帮助我们打造出迄今为止最好的 Loki 的人。
有关所有更改的完整列表,请参阅CHANGELOG。
升级注意事项
在更新 Loki 之前,请阅读升级指南。
作为此版本的一部分,我们对 Loki 的配置进行了许多更改。我们已尽力确保更改与现有配置兼容,但是某些默认限制的更改可能会影响其配置文件中未显式设置这些限制值的用户。
v2.4.0 默认值更改
以下是 v2.4.0 中已更改的限制默认值列表
配置项 | 新默认值 | 旧默认值 |
---|---|---|
ingestion_rate_strategy | “global” | “local” |
max_global_streams_per_user | 5000 | 0 (无限制) |
max_query_length | “721h” | “0h” (无限制) |
max_query_parallelism | 32 | 14 |
max_streams_per_user | 0 (无限制) | 10000 |
reject_old_samples | true | false |
reject_old_samples_max_age | “168h” | “336h” |
per_stream_rate_limit | 3MB | - |
per_stream_rate_limit_burst | 15MB | - |
在未配置现有外部缓存时,我们已默认启用内存 FIFO 缓存。这有助于提高 Loki 的性能,但同时也会导致 Loki 消耗更多内存。
v2.4.2 默认值更改
以下是 v2.4.2 中已更改的限制默认值列表,已在PR 5077 中添加
配置项 | 新默认值 | 旧默认值 |
---|---|---|
parallelise_shardable_queries | true | false |
split_queries_by_interval | 30m | 0s |
query_ingesters_within | 3h | 0s |
max_chunk_age | 2h | 1h |
max_concurrent | 10 | 20 |
Bug 修复
2.4.2 Bug 修复
2.4.2 修复了这些 Bug
- PR 4968 trevorwhitney:修复了一个 Bug,该 Bug 导致查询 ingesters 错误地返回 ruler,从而引发内部服务器错误
code = Unimplemented
。 - PR 4875 trevorwhitney:当
memberlist
作为一致性哈希环存储时,遵循 common 配置块中指定的复制因子。 - PR 4792 AndreZiviani:更正了文档中以下配置选项的默认值
scheduler_dns_lookup_period
min_ready_duration
final_sleep
max_transfer_retries
chunk_retain_period
chunk_target_size
batch_size
timeout
(用于 Redis 请求)
2.4.1 Bug 修复
2.4.1 修复了 2.4.0 版本中的两个 Bug
- PR 4687 owen-d:消除了在使用非租户覆盖文件时 compactor 崩溃的问题。
- PR 4681 slim-bean:纠正了
read
target 的初始化问题。初始化不正确导致 chunk flushed 后和 querier 下载新索引表之前出现查询间隔。
2.4.0 Bug 修复
以下是 2.4.0 版本中一些更重要的修复
- PR 4598 kavirajk:修复了 IP matcher lexer 以区分 filter 和 identifier。
- PR 4563 cyriltovena:修复了 Series 函数无法正确处理 sharding 的 Bug。
- PR 4518 slim-bean:修复了一个 Bug,该 Bug 导致项目不正确地返回到 sync.Pool。
- PR 4411 slim-bean:修复了一个导致 frontend 等待永远不会到达的结果的 Bug。
- PR 4238 liguozhong:修复了 distributor goroutine 泄漏问题。
安全修复
2.4.0 安全修复
2.4.0 版本包含一项安全相关修复
PR 4627 显式定义 HTTP endpoint 上允许的 HTTP 方法。
一位社区用户注意到所有 Loki endpoint 都会响应 HTTP OPTIONS 请求,并且放置在 Loki 前面负责 HTTP 身份验证的代理会未经身份验证地将 OPTIONS 请求传递给 Loki,从而允许用户对 Loki 进行未经身份验证/未经授权的查询。此修复限制了每个 endpoint 上允许的 HTTP 方法类型,并禁止 OPTIONS 请求。