記錄檔輪替是指輪流使用多個記錄檔,可簡化產生大量記錄檔的系統管理作業。記錄檔輪替功能可自動輪替、壓縮、移除及郵寄記錄檔。
在 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。
事前準備
- 如果您不熟悉
logrotate設定,請參閱 logrotate 手冊。 - 如果您不熟悉
crontab設定,請參閱 crontab 手冊。
啟用記錄輪替
從 Edge for Private Cloud 4.52 版開始,當您安裝 edge-* 元件時,系統會自動在 apigee 使用者的 crontab 中建立輪替這個記錄檔的 crontab 項目。這項 Cron 工作預設每小時執行一次,並使用 logrotate 公用程式輪替記錄。如果多個 edge-* 元件安裝在同一個節點上 (例如在多合一安裝中,或路由器和訊息處理器安裝在一個節點上),每個元件都會有自己的 cron 項目,用於輪替各自的記錄。
注意:
- 如果在安裝
edge-*元件時,不想自動設定logrotatecronjob,請在安裝時使用的靜默設定檔中,將旗標設為「ENABLE_LOGROTATE=n」。如果安裝期間未設定 Cron 工作,可以稍後再按照步驟啟用元件的logrotateCron。 - 根據預設,系統也會為
edge-router元件設定額外的logrotatecron 工作。這項 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 * * * *
如要設定覆寫設定,請按照下列步驟操作:
- 確認
apigee使用者可以讀取檔案。 - 將較新的 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/ 檔案。舉例來說,如果是 edge-message-processor,這個檔案會稱為 $APIGEE_ROOT/edge-message-processor/logrotate/logrotate.cron。這個檔案包含 cron 項目,以及 Apigee 執行的記錄輪替指令。如果您想使用 logrotate,但不想使用 Apigee 的設定,可以自行建立 logrotate 設定檔,並使用類似的 logrotate 指令執行記錄檔輪替。