Хранение Логов И Logrotate
Различия
Здесь показаны различия между двумя версиями данной страницы.
Следующая версия | Предыдущая версия | ||
правила_разработки:стандарты:хранение_логов_и_logrotate [26.04.2019 10:44] nikolay_carbonsoft1 создано |
правила_разработки:стандарты:хранение_логов_и_logrotate [20.05.2019 15:18] (текущий) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ==== Стандарт хранения логов: ==== | ||
+ | |||
+ | 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. Логировать их вывод должна вызывающая сторона | ||
+ | |||
+ | Например: | ||
+ | <code bash> | ||
+ | 50 2 * * * root /app/base/usr/local/bin/cron_backup.sh &>>/app/base/var/log/cron_backup.sh.log | ||
+ | </code> | ||
+ | |||
+ | Исключение: если скрипт генерирует излишне объемный вывод, который необходим только при детальном дебаге, то его можно логировать в соответствии с обычными стандартами /var/log/<имя демона>.log и обязательно должен писать о том, что он скрывает вывод (и куда скрывает) в stdout! Например, скрипт /app/asr_billing//usr/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 | ||
+ | |||
+ | <font inherit/inherit;;rgb(255, 0, 0);;inherit>**Другие особые случаи этого пункта и другие исключения нужно согласовывать и отражать в текущей странице документации.**</font> | ||
+ | |||
+ | ==== Стандарт по logrotate до 2018 года (потом добавим чистку которую настраивает Админ 3-6-12 мес): ==== | ||
+ | |||
+ | 1. Сдвигаем компрессию на 2 месяца, используя опции compress и delaycompress*. При ротейте по дням компрессию не используем*! | ||
+ | |||
+ | 2. Старые логи нельзя удалять автоматически средствами logrotate! Выставляем опцию rotate 99999. | ||
+ | |||
+ | 3. где по дням - не гзипуем | ||
+ | |||
+ | 4. для ежемесячных, формат суффикса без дня: dateformat -%Y%m | ||
+ | |||
+ | 5. можно пользоваться только ежедневным и ежемесячным ротированием | ||
+ | |||
+ | === Пример1. Ежемесячный logrotate: === | ||
+ | |||
+ | <code> | ||
+ | /var/log/firebird/firebird.log { | ||
+ | monthly | ||
+ | dateext | ||
+ | dateformat -%Y%m | ||
+ | missingok | ||
+ | compress | ||
+ | delaycompress | ||
+ | copytruncate | ||
+ | rotate 99999 | ||
+ | } | ||
+ | |||
+ | </code> | ||
+ | |||
+ | === Пример2. Ежедневный logrotate: === | ||
+ | |||
+ | <code> | ||
+ | /var/log/msgd/msgd.log { | ||
+ | daily | ||
+ | dateext | ||
+ | dateformat -%Y%m%d | ||
+ | missingok | ||
+ | copytruncate | ||
+ | ### ОБЯЗАТЕЛЬНО ИСПОЛЬЗОВАТЬ nocompress ДЛЯ ЕЖЕДНЕВНОГО logrotate | ||
+ | nocompress | ||
+ | rotate 99999 | ||
+ | } | ||
+ | |||
+ | </code> | ||
+ | |||
+ | ==== Примечания: ==== | ||
+ | |||
+ | 1. Если демон работает не под рутом, то не забудьте выставить правильные права для папки с логами | ||
+ | |||
+ | ====== rsyslog ====== | ||
+ | |||
+ | Работает в base и в чрутах через /dev/log. (не devfs) | ||
+ | |||
+ | Прием по tcp/udp не настроен. | ||
+ | |||
+ | Возможно, из чрутовых rsyslog'ов стоит убрать загрузку модуля imklog, чтобы из ядра все сообщения попадали только в рутовый rsyslog. | ||
+ | |||
+ | Sync для файлов выключен по умолчанию, минусы перед файлами в конфиге указывать не нужно | ||
+ | |||
+ | <code> | ||
+ | # File syncing capability is disabled by default. This feature is usually not required, | ||
+ | # not useful and an extreme performance hit | ||
+ | #$ActionFileEnableSync on | ||
+ | |||
+ | </code> | ||
+ | |||
+ | ~~OWNERAPPROVE~~ /*Не удаляйте эту строку и ниже!*/ | ||
+ | |||
+ | {(rater>id=1|name=Прочитал_правила_разработки:стандарты:хранение_логов_и_logrotate|type=vote|trace=user|tracedetails=1)} | ||
+ | |||