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

記錄輪替:輪替多個記錄檔的登入與停用程序,簡化產生大量記錄檔的系統管理作業。記錄檔輪替功能可啟用記錄檔的自動輪替、壓縮、移除和郵寄功能。

在 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-serveredge-routeredge-postgres-serveredge-qpid-server

這些 edge-* 元件也都會產生額外的記錄檔,系統會將該檔案重新導向個別元件的控制台輸出內容。以訊息處理器元件來說,這個檔案稱為 /opt/apigee/var/log/edge-message-processor/edge-message-processor.log。其他 edge-* 元件會產生類似的檔案。這些檔案不會由 Logback 程式庫完成輪替,而是使用 logrotatecrontab

事前準備

啟用記錄輪替

從 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-訊息處理器的 logrotate Cron,請執行以下指令:

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

查看元件的 logrotate 設定

您可以在 $APIGEE_ROOT/<component>/logrotate/logrotate.conf 檔案中找到元件的 logrotate 設定。舉例來說,如果是邊緣訊息處理器,則可在 $APIGEE_ROOT/edge-message-processor/logrotate/logrotate.conf 中找到節點的 logrotate 設定。

啟用元件的 logrotate Cron

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

舉例來說,如要啟用 Edge-訊息處理器的 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

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

conf_logrotate_cron_duration=0 * * * *

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

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

舉例來說,如要將新的 Cron 排程套用至邊緣訊息處理器的 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 輪替的記錄大小上限。預設值:「1,000 萬」

使用自己的記錄輪替機制和 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 指令執行記錄檔輪替作業。