佔用磁碟100%?Apache DolphinScheduler 日誌如何定時清理!

海豚调度發表於2024-11-26

當 Apache DolphinScheduler 執行幾個月後,大部分朋友會發現 Logs 下的執行日誌越來越多,這時可以考慮清理下 Logs/ 目錄下的日誌檔案,比如設定只保留最近 3 天的日誌,怎麼操作呢?

可以透過執行以下三個命令來實現:

find ./logs -type f -mtime +3 -name "dolphinscheduler-worker.*.log" -delete
find ./logs -type f -mtime +3 -name "dolphinscheduler-master.*.log" -delete
find ./logs -type f -mtime +3 -name "dolphinscheduler-api.*.log" -delete

Apache DolphinScheduler 是一個分散式易擴充套件的視覺化 DAG 工作流任務排程系統,它適用於企業級場景,提供了一個視覺化操作任務、工作流和全生命週期資料處理過程的解決方案。

在使用過程中,隨著任務的不斷執行,會產生大量的日誌檔案,這些檔案可能會佔用大量的磁碟空間。

因此,定期清理日誌檔案是非常必要的。

我們可以設定定時清理 Apache DolphinScheduler 的日誌,以減少磁碟空間的佔用:

找到 安裝目錄下 conf/ 目錄下.

conf 目錄下,有幾個Logback 檔案,編輯開啟.

預設內容是如下:預設 日誌保留168天,每個檔案大小64M ,太大了,修改這兩個引數,改成 1 ,10MB.

<!-- api server logback config start -->
    <appender name="APILOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.base}/dolphinscheduler-api.log</file>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${log.base}/dolphinscheduler-api.%d{yyyy-MM-dd_HH}.%i.log</fileNamePattern>
            <maxHistory>168</maxHistory>
            <maxFileSize>64MB</maxFileSize>
        </rollingPolicy>
        <encoder>
            <pattern>
                [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
            </pattern>
            <charset>UTF-8</charset>
        </encoder>

這段配置是 Apache DolphinScheduler 的 API 伺服器日誌的 Logback 配置。

Logback 是一個流行的 Java 日誌框架,用於配置日誌記錄器。

這段配置定義了一個名為 APILOGFILERollingFileAppender,它將日誌資訊追加到一個滾動的檔案中。

以下是配置的詳細解釋:

  • <file>:指定日誌檔案的存放路徑和檔名。${log.base} 是一個變數,表示日誌檔案的基礎目錄,它的值通常在配置檔案的其他部分定義。

  • <filter class="ch.qos.logback.classic.filter.ThresholdFilter">:設定一個過濾器,只記錄 INFO 級別及以上的日誌。

  • <rollingPolicy>:定義了滾動策略,即何時建立新的日誌檔案。這裡使用的是 SizeAndTimeBasedRollingPolicy,它基於檔案大小和時間來滾動日誌。

    • <fileNamePattern>:定義了滾動日誌檔案的命名模式,%d{yyyy-MM-dd_HH} 表示檔名中包含日期和小時,%i 表示檔案的索引號(根據檔案大小)。

    • <maxHistory>:定義了要保留的日誌檔案的最大天數。這裡設定為 168 天,超過這個時間的日誌檔案將被刪除。

    • <maxFileSize>:定義了單個日誌檔案的最大大小,這裡設定為 64MB。

  • <encoder>:定義了日誌的格式和字符集。

    • <pattern>:定義了日誌的格式,包括日誌級別、日期、日誌記錄器的名稱、行號和日誌訊息。

    • <charset>:設定日誌檔案的字元編碼為 UTF-8。

要修改配置以調整日誌檔案的滾動策略或清理日誌,你可以調整以下引數:

  1. 修改日誌保留時間:如果你想要保留更長時間的日誌,可以增加 <maxHistory> 的值。例如,要保留 30 天的日誌,可以將其設定為 30。

  2. 修改日誌檔案大小:如果你想要日誌檔案在達到特定大小時滾動,可以修改 <maxFileSize> 的值。例如,要將每個日誌檔案的大小限制為 128MB,可以將其設定為 128MB

  3. 修改日誌格式:如果你想要改變日誌的格式,可以修改 <pattern> 中的內容。

  4. 定時清理日誌:Logback 配置本身不負責日誌的定時清理。你需要使用作業系統的定時任務(如 Linux 的 cron 作業)來定期刪除舊的日誌檔案。例如,你可以編寫一個指令碼,使用 find 命令查詢並刪除超出保留期限的日誌檔案,並將其設定為定時執行。

請注意,修改配置檔案後,需要重啟 Apache DolphinScheduler 的對應服務以使更改生效,本文完!

本文由 白鯨開源 提供釋出支援!

相關文章