Как включить ротацию журналов для компонентов 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-server, edge-router, edge-postgres-server и edge-qpid-server.

Каждый из этих компонентов edge-* также создает дополнительный файл журнала, который является перенаправленным выводом консоли соответствующего компонента. Для компонента Message Processor этот файл называется /opt/apigee/var/log/edge-message-processor/edge-message-processor.log. Другие компоненты edge-* генерируют похожий файл. Ротация этих файлов выполняется не библиотекой logback, а с помощью logrotate и crontab.

Подготовка

Включить ротацию журналов

Начиная с Edge для Private Cloud версии 4.52, при установке компонента edge-* в crontab пользователя apigee автоматически создается запись crontab для ротации этого журнала. По умолчанию это задание Cron выполняется каждый час и использует утилиту logrotate для ротации журналов. Если на одном узле установлено несколько компонентов edge-* (например, при установке "все в одном" или если маршрутизатор и обработчик сообщений установлены на одном узле), у каждого компонента будет своя запись cron для ротации соответствующих журналов.

Примечания

  • Если вы не хотите, чтобы при установке компонента edge-* автоматически настраивалось задание cron logrotate, задайте флаг ENABLE_LOGROTATE=n в файле конфигурации, который вы используете для установки. Если задание cron не было настроено во время установки, вы можете сделать это позже, следуя инструкциям по включению cron для компонента logrotate.
  • Для компонента edge-router по умолчанию также настроено дополнительное задание Cron logrotate. Эта задача cron ротирует журналы доступа и ошибок, созданные Nginx.

Ниже приведены примеры различных конфигураций и административных операций, которые вы можете выполнять.

Как посмотреть записи cron на узле

sudo crontab -u apigee -l

Посмотреть запись cron logrotate компонента

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

Например, чтобы посмотреть cron logrotate для edge-message-processor, выполните следующую команду:

$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.

Включить cron logrotate компонента

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

Например, чтобы включить cron logrotate для edge-message-processor, выполните следующую команду:

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

Отключить cron logrotate компонента

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

Например, чтобы отключить cron для edge-message-processor logrotate, выполните следующую команду:

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

Изменить расписание cron для определенной команды logrotate

На узле, где вы хотите изменить расписание cron для logrotate, откройте файл переопределения конфигурации соответствующего компонента. Файлы переопределения конфигурации компонента 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 переопределяется так, чтобы оно выполнялось в нулевую минуту каждого часа.

conf_logrotate_cron_duration=0 * * * *

Чтобы переопределить конфигурацию, выполните следующие действия:

  1. Убедитесь, что файл доступен для чтения пользователю apigee.
  2. Примените к компоненту новое расписание cron:
    $APIGEE_ROOT/apigee-service/bin/apigee-service <component-name> logrotate -e

Например, чтобы применить новое расписание cron к logrotate edge-message-processor, введите:

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

Чтобы убедиться, что изменения применены, проверьте записи cron или запись cron компонента logrotate.

Дополнительные конфигурации 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

Если ваши требования к ротации файла <component>.log не выполняются при использовании конфигураций, предоставляемых Apigee, вы можете использовать собственный механизм ротации журналов с помощью таких инструментов, как logrotate. Например, конфигурации, предоставляемые Apigee, позволяют ротировать журналы по размеру, но вы хотите ротировать журналы на основе даты/времени или других факторов. В таких случаях вам следует отключить задание cron logrotate, предоставляемое Apigee, и настроить собственные задания cron.

Если вам нужно сослаться на запись cron для ротации журналов Apigee, вы можете найти ее в файле $APIGEE_ROOT//logrotate/logrotate.cron. Например, для edge-message-processor этот файл называется $APIGEE_ROOT/edge-message-processor/logrotate/logrotate.cron. Этот файл содержит как запись cron, так и команду, выполняемую Apigee для ротации журналов. Если вы хотите использовать logrotate, но не хотите использовать конфигурации Apigee, вы можете создать собственный файл конфигурации logrotate и использовать аналогичную команду logrotate для выполнения ротации журналов.