前面学习了Loki中日志的保留策略,本文整理一下对于使用Loki官方helm chart部署Loki时如何在values.yaml中配置日志保留策略。

所有的配置参考都可以在这个helm chart的默认的values.yaml中获得,地址是https://github.com/grafana/loki/blob/main/production/helm/loki/values.yaml

基于默认的values.yaml结合前面已经学习的保留策略配置,对我们使用的values.yaml定制如下(下面只保留了"保留策略相关的配置"):

 1# ...
 2loki:
 3  storage:
 4    bucketNames:
 5      # ...
 6    s3:
 7      # ...
 8  compactor:
 9    # 运行压缩操作的间隔时间
10    compaction_interval: 10m
11    # 启用保留策略
12    retention_enabled: true
13    # 在保留期限过后,完全删除块(chunks)的延迟时间。
14    retention_delete_delay: 2h
15    # 用于删除块的goroutine的最大数量
16    retention_delete_worker_count: 150
17  limits_config:
18    # 是否强制确保每个样本都有一个指标名称。
19    enforce_metric_name: false
20    # 每个租户允许缓存的最新结果,以防止缓存可能仍处于变动状态的最新结果。
21    max_cache_freshness_per_query: 10m
22    # 是否拒绝旧样本。
23    reject_old_samples: true
24    # 在拒绝之前接受的最大样本时间
25    reject_old_samples_max_age: 1w
26    # 按时间间隔分割查询并并行执行。值为0将禁用按时间分割。
27    # 这也决定了在启用结果缓存时如何选择缓存键。
28    split_queries_by_interval: 15m
29    # 存储数据的保留期限,仅在压缩器配置中的retention_enabled为true时才适用。
30    # 从版本2.8.0开始,零值0或0s表示禁用保留。
31    # 在之前的版本中,Loki未正确处理零值以禁用保留,因此应使用一个非常大的值代替。
32    retention_period: 30d
33  tenants:
34    - name: org1
35      password: org1pass
36
37# ...
38
39schema_config:
40  configs:
41    - from: 2022-01-11
42      store: boltdb-shipper
43      object_store: s3
44      schema: v12
45      index:
46        prefix: loki_index_
47        period: 24h
48storage_config:
49  hedging:
50    at: 250ms
51    max_per_second: 20
52    up_to: 3
53
54# ...

注意,只有当索引周期(index period)为24小时时,才可使用保留功能。