如何设置默认日志保留时间

平台默认保留时间控制每个日志类别在 ClickHouse 中保留多长时间后删除。值在 PlatformLogForward 资源上设置,并应用于未声明自身覆盖值的每个项目。

有关每个项目的覆盖值,请参阅如何设置项目冷数据的保留时间。

开始之前

确认目标存储集群:

  1. 使用 Alauda Container Platform Log Storage Management 和 PlatformLogForward.spec.externalStorage.type: clickhouse(本页末尾介绍 OpenSearch)。
  2. 已预配名为 platform-default 的 PlatformLogForward。
  3. 使用的账户有权编辑 platformlogforwards.log.alauda.io。

关于字段

保留时间位于 PlatformLogForward 资源的 spec.clickhouse.ttl.* 中。每个日志类别对应一个字段,单位为天,0 = keep forever。

字段类别默认值(天)
audit审计日志0
eventKubernetes 事件0
logPlatform平台组件日志0
logWorkload用户工作负载日志0
logKuberneteskubelet / kube-system 日志0
logSystem节点系统日志(journald / 主机)0
meter计量日志0

0 表示永不删除,因此全新安装会保留所有内容,直到显式设置保留时间。请选择符合磁盘预算和合规期限的值。

编辑 PlatformLogForward 资源

  1. 登录存储集群(承载 ClickHouse 的集群)。

  2. 打开 PlatformLogForward 资源:

    kubectl edit platformlogforward platform-default
  3. 设置或更新 spec.clickhouse.ttl:

    apiVersion: log.alauda.io/v1alpha1
    kind: PlatformLogForward
    metadata:
      name: platform-default
    spec:
      clickhouse:
        ttl:
          audit:         30
          event:         30
          logPlatform:   30
          logWorkload:    7
          logKubernetes:  7
          logSystem:      7
          meter:         90

保存并退出。无需重启 pod。

更改如何生效

  1. 日志存储 operator 协调 platform-default,并重新生成 aiops-logging-ttl-config ConfigMap。
  2. razor 部署会在下一次同步周期(不超过一分钟)读取新的 ConfigMap。
  3. razor 会针对 ClickHouse 上的每个日志表运行 ALTER TABLE <table> MODIFY TTL toDateTime(time) + INTERVAL <N> DAY DELETE。
  4. ClickHouse 会在下一次合并时将 TTL 应用于现有数据;早于新保留时间的行会被自动删除。

在集群运行正常的情况下,整个周期会在五分钟内完成。

项目级覆盖

平台默认保留时间是每个项目的回退值。需要使用不同值的项目可通过项目标签覆盖平台默认值;请参阅如何设置项目冷数据的保留时间。项目标签仅会覆盖该项目的 audit、event、与工作负载相关以及与系统相关的数据 — 项目标签中未列出的类别会回退到平台默认值。

热 + 冷分层(可选)

如果已启用热/冷分层,spec.clickhouse.ttl.* 控制热数据的保留时间;将 spec.clickhouse.coldTTL.* 设置为将过期数据移至冷卷,而不是删除数据。有关分层策略的设置,请参阅如何将 S3 存储用于 ClickHouse。未启用分层时,ttl 会执行永久删除。

从旧版 chart 迁移

从 v4.3 时代的 chart-alauda-log-clickhouse 安装的集群,其保留配置位于 values.logging.ttl.* 下。v4.4 Log Storage Management 会将此字段原样迁移到 PlatformLogForward(字段名称、单位和语义均相同)。升级后的集群会由 operator 在其 derive-plf 步骤中自动传递这些值;请使用以下命令进行验证:

kubectl get platformlogforward platform-default -o jsonpath='{.spec.clickhouse.ttl}' | jq

如果升级后输出为空,请从之前的 chart values.yaml 重新应用这些值。

OpenSearch 后端使用 ISM 策略,而不是 PLF TTL

在 OpenSearch 后端上,保留时间由 Index State Management (ISM) 策略控制,而不是由 spec.clickhouse.ttl 控制。razor-api 组件附带默认 ISM 策略,operator 会在安装时将这些策略应用到 OpenSearch 集群。要更改 OpenSearch 的保留时间,请直接在 OpenSearch 集群上修改 ISM 策略。spec.clickhouse.ttl 在 OpenSearch 部署中会被忽略;clickhouse 子对象仅在 spec.externalStorage.type: clickhouse 时适用。

相关主题