日志轮替(即轮替使用多个日志文件的过程)可简化生成大量日志文件的系统的管理。日志轮替可实现日志文件的自动轮替、压缩、移除和邮寄。
在 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 命令执行日志轮替。