为 Edge 组件启用日志轮替

日志轮替是轮换使用多个日志文件的过程,可简化对生成大量日志文件的系统的管理。日志轮替可实现日志文件的自动轮替、压缩、移除和邮寄。

在适用于私有云的 Edge 中,每个 apigee 组件上的一些主日志文件都配置了默认轮替机制。例如,在 Message Processor 组件中,以下文件使用 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 完成。

准备工作

启用日志轮替

从适用于 Private Cloud 的 Edge 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

打开相应的替换文件,并设置以下配置替换。以下示例替换了在每小时的第 0 分钟运行的 Cron 作业。

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 日志轮播二进制文件的位置。默认值:/usr/sbin/logrotate
conf_logrotate_status_file 捕获日志轮播运行时状态的状态文件 - 显示对 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”。将最新轮替文件压缩后推迟到下一个日志轮播周期。
conf_logrotate_size 轮替的日志大小限制。默认值:“10M”

使用您自己的日志轮播机制和 Cron

如果 Apigee 提供的配置无法满足您轮替 <component>.log 的要求,您可以使用日志轮播等工具利用自己的日志轮替机制。例如,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 命令执行日志轮替。