Хранение Логов И Logrotate
Стандарт хранения логов:
1. Лог демона в обычном случае должен храниться в /var/log/<имя демона>.log, например для vsftpd:
/var/log/vsftpd.log
2. В некоторых случаях (например, для демона worker) нужно ежедневное ротирование лога, тогда мы должны хранить его лог в директории /var/log/<имя демона>/<имя демона>.log, например:
/var/log/worker/worker.log
/var/log/worker/objectstatus.log
/var/log/worker/account_voip.log
3. В ручных скриптах или скриптах, вызываемых из других скриптов/демонов, вывод сделует делать в stdout или stderr. Логировать их вывод должна вызывающая сторона
Например:
50 2 * * * root /app/base/usr/local/bin/cron_backup.sh &>>/app/base/var/log/cron_backup.sh.log
Исключение: если скрипт генерирует излишне объемный вывод, который необходим только при детальном дебаге, то его можно логировать в соответствии с обычными стандартами /var/log/<имя демона>.log и обязательно должен писать о том, что он скрывает вывод (и куда скрывает) в stdout! Например, скрипт /app/asr_billingusr/local/bin/backup_db_v2.sh выводит все в стандартный вывод, но вывод gbak сохраняет в /var/log/backup_db_v2.sh.log
4. Особым случаем является каталог /app/asr_billing/var/log/abonents/<id_абонента>/.. куда дублируется вывод лога событий в воркера по каждому абоненту. Например, /app/asr_billing/var/log/abonents/13/event_1368.log
Другие особые случаи этого пункта и другие исключения нужно согласовывать и отражать в текущей странице документации.
Стандарт по logrotate до 2018 года (потом добавим чистку которую настраивает Админ 3-6-12 мес):
1. Сдвигаем компрессию на 2 месяца, используя опции compress и delaycompress*. При ротейте по дням компрессию не используем*!
2. Старые логи нельзя удалять автоматически средствами logrotate! Выставляем опцию rotate 99999.
3. где по дням - не гзипуем
4. для ежемесячных, формат суффикса без дня: dateformat -%Y%m
5. можно пользоваться только ежедневным и ежемесячным ротированием
Пример1. Ежемесячный logrotate:
/var/log/firebird/firebird.log { monthly dateext dateformat -%Y%m missingok compress delaycompress copytruncate rotate 99999 }
Пример2. Ежедневный logrotate:
/var/log/msgd/msgd.log { daily dateext dateformat -%Y%m%d missingok copytruncate ### ОБЯЗАТЕЛЬНО ИСПОЛЬЗОВАТЬ nocompress ДЛЯ ЕЖЕДНЕВНОГО logrotate nocompress rotate 99999 }
Примечания:
1. Если демон работает не под рутом, то не забудьте выставить правильные права для папки с логами
rsyslog
Работает в base и в чрутах через /dev/log. (не devfs)
Прием по tcp/udp не настроен.
Возможно, из чрутовых rsyslog'ов стоит убрать загрузку модуля imklog, чтобы из ядра все сообщения попадали только в рутовый rsyslog.
Sync для файлов выключен по умолчанию, минусы перед файлами в конфиге указывать не нужно
# File syncing capability is disabled by default. This feature is usually not required, # not useful and an extreme performance hit #$ActionFileEnableSync on
~~OWNERAPPROVE~~
Прочитал правила разработки стандарты хранение логов и logrotate |
Обсуждение
Так делают, когда демон не от рута работает. С правами на папку для нужного пользователя.
или для удобства когда много файлов
123