啟用邊緣元件的記錄檔輪替功能

記錄檔輪替是指輪流使用多個記錄檔,可簡化產生大量記錄檔的系統管理作業。記錄檔輪替功能可自動輪替、壓縮、移除及郵寄記錄檔。

在 Edge for Private Cloud 中,每個 apigee 元件的部分主要記錄檔都設有預設輪替機制。舉例來說,在訊息處理器元件上,下列檔案會使用 logback 設定預設輪替機制:

  • /opt/apigee/var/log/edge-message-processor/logs/system.log
  • /opt/apigee/var/log/edge-message-processor/logs/events.log
  • /opt/apigee/var/log/edge-message-processor/logs/startupruntimeerrors.log
  • /opt/apigee/var/log/edge-message-processor/logs/configurations.log
  • /opt/apigee/var/log/edge-message-processor/logs/transactions.log

其他 edge-* 元件 (名稱開頭為 edge-) 也有類似的檔案,例如 edge-management-server、edge-router、edge-postgres-server 和 edge-qpid-server。

每個 edge-* 元件也會產生額外的記錄檔,也就是重新導向的各個元件控制台輸出內容。如果是訊息處理器元件,這個檔案會命名為 /opt/apigee/var/log/edge-message-processor/edge-message-processor.log。其他 edge-* 元件會產生類似的檔案。這些檔案的輪替作業並非由 logback 程式庫執行,而是使用 logrotate 和 crontab。

事前準備

啟用記錄輪替

從 Edge for Private Cloud 4.52 版開始,當您安裝 edge-* 元件時,系統會自動在 apigee 使用者的 crontab 中建立輪替這個記錄檔的 crontab 項目。這項 Cron 工作預設每小時執行一次,並使用 logrotate 公用程式輪替記錄。如果多個 edge-* 元件安裝在同一個節點上 (例如在多合一安裝中,或路由器和訊息處理器安裝在一個節點上),每個元件都會有自己的 cron 項目,用於輪替各自的記錄。

注意:

  • 如果在安裝 edge-* 元件時,不想自動設定 logrotate cronjob,請在安裝時使用的靜默設定檔中,將旗標設為「ENABLE_LOGROTATE=n」。如果安裝期間未設定 Cron 工作,可以稍後再按照步驟啟用元件的 logrotate Cron。
  • 根據預設,系統也會為 edge-router 元件設定額外的 logrotate cron 工作。這項 Cron 工作會輪替 Nginx 產生的存取和錯誤記錄。

以下範例說明您可以執行的各種設定和管理作業。

查看節點上的 cron 項目

sudo crontab -u apigee -l

查看元件的 logrotate cron 項目

$APIGEE_ROOT/apigee-service/bin/apigee-service <component-name> logrotate -s

舉例來說,如要查看 edge-message-processor 的 logrotate cron,請執行:

$APIGEE_ROOT/apigee-service/bin/apigee-service edge-message-processor logrotate -s

查看元件的 logrotate 設定

元件的 logrotate 設定位於 $APIGEE_ROOT/<component>/logrotate/logrotate.conf 檔案中。舉例來說,如果是 edge-message-processor,節點的 logrotate 設定位於 $APIGEE_ROOT/edge-message-processor/logrotate/logrotate.conf。

啟用元件的 logrotate cron

$APIGEE_ROOT/apigee-service/bin/apigee-service <component-name> logrotate -e

舉例來說,如要啟用 edge-message-processor 的 logrotate cron,請執行:

$APIGEE_ROOT/apigee-service/bin/apigee-service edge-message-processor logrotate -e

停用元件的 logrotate cron

$APIGEE_ROOT/apigee-service/bin/apigee-service <component-name> logrotate -d

舉例來說,如要停用 edge-message-processor 的 logrotate cron,請執行:

$APIGEE_ROOT/apigee-service/bin/apigee-service edge-message-processor logrotate -d

變更特定 logrotate 指令的 Cron 排程

在要變更 logrotate cron 排程的節點上,開啟對應元件的設定覆寫檔案。下表列出 edge-* 元件的設定覆寫檔案:

元件 設定覆寫檔案
edge-message-processor $APIGEE_ROOT/customer/application/message-processor.properties
edge-management-server $APIGEE_ROOT/customer/application/management-server.properties
edge-router $APIGEE_ROOT/customer/application/router.properties
edge-postgres-server $APIGEE_ROOT/customer/application/postgres-server.properties
edge-qpid-server $APIGEE_ROOT/customer/application/qpid-serverproperties

開啟適當的覆寫檔案,並設定下列設定覆寫。以下範例會覆寫 Cron 工作,在每小時的第 0 分鐘執行。

conf_logrotate_cron_duration=0 * * * *

如要設定覆寫設定,請按照下列步驟操作:

  1. 確認 apigee 使用者可以讀取檔案。
  2. 將較新的 cron 排程套用至元件:
    $APIGEE_ROOT/apigee-service/bin/apigee-service <component-name> logrotate -e

舉例來說,如要將較新的 Cron 排程套用至 edge-message-processor 的 logrotate,請輸入:

$APIGEE_ROOT/apigee-service/bin/apigee-service edge-message-processor logrotate -e

如要確認變更是否已套用,請檢查 cron 項目或查看元件的 logrotate cron 項目。

其他 logrotate 設定

與上一節所述修改 Cron 排程的步驟類似,您也可以修改其他設定。下表說明這些設定:

設定 說明
conf_logrotate_bin_location logrotate 二進位檔的位置。預設:/usr/sbin/logrotate
conf_logrotate_status_file 擷取 logrotate 執行階段狀態的狀態檔案 - 顯示 apigee 使用者的讀取/寫入權限。預設值:$APIGEE_ROOT/var/run/<component>/logrotate.status
conf_logrotate_logs 要輪替哪些記錄。可使用萬用字元。預設:$APIGEE_ROOT/var/log/<component>/<component>.log
conf_logrotate_rotate 旋轉次數。預設值:「5」
conf_logrotate_compress 是否要壓縮輪替的檔案。預設值:「compress」
conf_logrotate_compress_type 壓縮類型。預設值:「delaycompress」。將最新輪替檔案的壓縮作業延後至下一個 logrotate 週期。
conf_logrotate_size 輪替的記錄大小限制。預設值:「10M」

使用自己的記錄檔輪替機制和 cron

如果 Apigee 提供的設定不符合您對 <component>.log 輪替的需求,您可以使用 logrotate 等工具,自行設定記錄輪替機制。舉例來說,Apigee 提供的設定可讓您依大小輪替記錄,但您想依日期/時間或其他因素輪替記錄。在這種情況下,您應停用 Apigee 提供的 logrotate cron,並視需要設定自己的 cron 工作。

如需參考 Apigee 的記錄檔輪替 cron 項目,請前往 $APIGEE_ROOT//logrotate/logrotate.cron 檔案。舉例來說,如果是 edge-message-processor,這個檔案會稱為 $APIGEE_ROOT/edge-message-processor/logrotate/logrotate.cron。這個檔案包含 cron 項目,以及 Apigee 執行的記錄輪替指令。如果您想使用 logrotate,但不想使用 Apigee 的設定,可以自行建立 logrotate 設定檔,並使用類似的 logrotate 指令執行記錄檔輪替。