跳到主要内容

清理机器日志

简介

CloudCanal 采用 Logback 框架实现日志的生成与管理。

在 CloudCanal 的架构中,每个任务对应一个独立的进程实例。受限于 Logback 的日志管理机制,日志的归档与清理仅在进程启动(即任务运行)时执行。 因此,当任务停止或被删除后,其相关日志仍会残留在机器上。 随着时间推移,未清理的日志会不断累积,往往会占用大量宿主机的存储空间。

为了解决这一问题,CloudCanal 提供了机器日志清理功能,用于清理遗留的日志文件。默认情况下,该功能会清理以下路径中的日志文件:

  • ${user.home}/logs/cloudcanal/tasks/${任务名}(未归档的任务日志)
  • ${user.home}/logs/cloudcanal/tasks/${归档日期}/${任务名}(已归档的任务日志)
提示

日志清理操作会消耗一定的系统 I/O 资源,建议在任务负载较低的时段执行,以减少对业务的影响。

操作步骤

  1. 点击 同步设置 > 同步机器 > 机器列表,打开 机器列表详情 界面。

  2. 选择需要清理日志的机器,点击 更多,选择 清理机器日志

  3. 选择从何时的日志开始清理(默认为机器创建的时刻),点击 确认 开始异步任务执行。

    clear_panel.png

  4. 查看异步任务结果,详情界面中包含日志清理的统计结果。

    clear_result.png

    信息

    参数释义:

    • Total delete log file: 已清理的日志文件数量
    • Total release space: 日志清理所释放的文件空间
    • File failed to delete: 删除失败的文件(需要手动删除)

FAQ

  1. 有哪些日志不会被删除?

    • 机器中已分配任务的日志
    • 60 天(对应配置文件中 MaxHistory 的值)之内的归档日志
    • 被其他进程占用的日志
  2. 我想调整日志的保留时间或者日志的删除路径,如何自定义删除器的行为?

    需要关注如下两个日志的配置文件,文件名均为 logback.xml

    • /home/clougence/cloudcanal/cloudcanal/conf (任务日志配置文件)
    • /home/clougence/cloudcanal/sidecar/conf (Sidecar 日志配置文件)

    可以在 Sidecar 日志配置文件 中找到伪装成 Appender 的删除器 TaskLogRemover,默认配置及释义如下:

     <appender name="TaskLogRemover" class="ch.qos.logback.classic.sift.SiftingAppender">
    <discriminator>
    <Key>destination</Key>
    <DefaultValue>%instance</DefaultValue>
    </discriminator>
    <sift>
    <appender name="FILE-${module}" class="com.clougence.cloudcanal.base.service.logback.TaskRemoverPretendAppender">
    <!-- 描述了用于匹配任务名的正则,通常不需要去修改它 -->
    <instancePattern>(canal.*?)_(FULL|CHECK|INCREMENT|REVISE)</instancePattern>
    <!-- 描述了任务未归档日志的存储位置 -->
    <instanceDirNamePattern>
    ${user.home}/logs/cloudcanal/tasks/${destination}
    </instanceDirNamePattern>
    <!-- 描述了任务归档日志的存储路径 -->
    <rollingDirNamePattern>
    ${user.home}/logs/cloudcanal/tasks/%d{yyyy-MM-dd}/${destination}
    </rollingDirNamePattern>
    <!-- 描述了任务日志最大保留日期,即删除器最多只会删除${maxHistory}天之前的日志 -->
    <maxHistory>60</maxHistory>
    </appender>
    </sift>
    </appender>
    信息

    instanceDirNamePatternrollingDirNamePattern 均与 任务日志配置文件 中 PROJECT Appender 描述的存储文件位置保持一致。

  1. 异步任务详情报错:

    RuntimeException: last date to clean should before than maxHistory(60) which is set in sidecar logback.xml.

    报错原因:指定日志开始删除的时间小于日志最少保留时间。

    解决方法:重新选择从 60 天前的日期开始删除或调小问题 2 所展示配置中 <maxHistory> 的值。