Хранение Логов И 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)}
 +