Ротация журналов – это процесс, при котором несколько файлов журналов поочередно используются и выводятся из использования. Она упрощает администрирование систем, которые генерируют большое количество файлов журналов. Ротация журналов позволяет автоматически выполнять ротацию, сжатие, удаление и отправку файлов журналов.
В 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.
Подготовка
- Если вы не знакомы с конфигурациями
logrotate, прочитайте руководство по logrotate. - Если вы не знакомы с конфигурациями
crontab, прочитайте руководство по crontab.
Как включить ротацию журналов
Начиная с версии 4.52 Edge для частного облака, при установке компонента edge-*
в файле crontab пользователя apigee автоматически создается запись crontab для ротации этого журнала. По умолчанию это задание cron выполняется каждый час и использует утилиту logrotate для ротации журналов. Если на одном узле установлено несколько компонентов edge-* (например, при установке "все в одном" или если маршрутизатор и обработчик сообщений установлены на одном узле), у каждого компонента будет собственная запись cron для ротации соответствующих журналов.
Примечания
- Если при установке компонента
edge-*вы не хотите автоматически настраивать задание cronlogrotate, задайте флаг ENABLE_LOGROTATE=n в файле конфигурации, который вы используете для установки. Если задание cron не было задано во время установки, вы можете настроить его позже, следуя инструкциям по включению cron для компонентаlogrotate. - Для компонента
edge-routerпо умолчанию также настраивается дополнительное задание cronlogrotate. Этот 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.
Например, для процессора сообщений на границе сети конфигурацию узла 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-задание logrotate для edge-message-processor, выполните следующую команду:
$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 будет выполняться в 0-ю минуту каждого часа.
conf_logrotate_cron_duration=0 * * * *
Чтобы переопределить конфигурацию:
- Убедитесь, что файл доступен для чтения пользователю
apigee. - Примените новое расписание 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 или запись 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, позволяют выполнять ротацию журналов по размеру, но вы хотите выполнять ротацию журналов на основе даты/времени или других факторов. В таких случаях вам следует отключить logrotate cron, предоставленный Apigee, и настроить собственные задания cron.
Если вам нужно обратиться к записи cron для ротации журналов Apigee, ее можно найти в файле $APIGEE_ROOT/. Например, для файла edge-message-processor будет создан файл $APIGEE_ROOT/edge-message-processor/logrotate/logrotate.cron. Этот файл
содержит запись cron и команду, выполняемую Apigee для ротации журналов. Если вы хотите использовать logrotate, но не хотите использовать конфигурации Apigee, вы можете создать собственный файл конфигурации logrotate и использовать аналогичную команду logrotate для выполнения ротации журналов.