Ротация

Ротация логов: logrotate в CentOs

 

Сегодня мне написал один с моих клиентов

Здравствуйте, Роман. Можете ли взглянуть на пациента.
1.1.1.1
root
pass

Там валится mysql периодически и не поднимается.
Error SQL:
QUERY:
select id,text_name from kamni_ru_defines where check_end=0 and text_name=»GENERAL»
MYSQL Error:Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (111)

Ну что же делать полез на сервер читать логи.
Нашел интересную запись

1
echo: write error: No space left on device

Которая так и говорила о том что диск под завязку.
Немного поискав большие папки на сервере увидел что логи веб сервера были перенесены в иную папку.
что бы не чистить логи вручную с периодичностью я использовал ротацию логов но в донам случае демону нужно было указать дополнительное место для ротации
все настройки

1
logrotate

хранит в директории

1
/etc/logrotate.d/

в каталоге уже существовали несколько файлов с настройками для примера мною были взяты настройки ротации httpd/
Его содержание:

1
2
3
4
5
6
7
8
9
/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
        /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
    endscript
}

за что отвечают строки?

1
2
3
4
5
missingok – не писать сообщения в stdout, если файл отсутствует;
notifempty – не выполнять никаких действий, если файл пустой;
sharedscripts - Если параметр sharedscript указан, то скрипты будут выполнены только один раз;
delaycompress - Отложить сжатие предыдущего файла журнала до следующего циклического сдвига;
postrotate/endscript – действие, выполняемое после ротации логов;

Больше о директивах можете прочесть здесь OpenNet: MAN logrotate
В конфигурации мне нужно было сменить лишь первую строку
Что получилось?

1
2
3
4
5
6
7
8
9
/var/www/html/kamen-znak.ru/logs/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
        /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
    endscript
}

Ну совсем никакой разницы, Проверяю конфиг

1
logrotate -f /etc/logrotate.conf

Ну и проверяю

1
2
3
[[email protected] logrotate.d]# cat /var/lib/logrotate.status | grep kamen
"/var/www/html/kamen-znak.ru/logs/error.log" 2017-1-6-18:52:20
"/var/www/html/kamen-znak.ru/logs/access.log" 2017-1-6-18:52:20

В данном случае было освобождено 18 ГБ дискового пространства.