Есть веб сервер с несколькими сайтами. С помощью logrotate настроена ротация логов, но иногда ротация отваливается.
Конфиг из logrotate:
Код: Выделить всё
/var/log/httpd/logs/*log {
daily
missingok
rotate 90
compress
delaycompress
dateext
dateformat .%Y-%m-%d
copytruncate
olddir completed/
}
т.е. логи типа:
[burger@web01 ~]$ ls -l /var/log/httpd/logs/*log
-rw-r--r-- 1 root root 0 May 21 00:01 /var/log/httpd/logs/access.log
-rw-r--r-- 1 root root 483652 May 21 12:54 /var/log/httpd/logs/othersite.ru_80-access.log
-rw-r--r-- 1 root root 305 May 21 11:51 /var/log/httpd/logs/othersite.ru_80-error.log
-rw-r--r-- 1 root root 0 May 21 00:01 /var/log/httpd/logs/error.log
-rw-r--r-- 1 root root 46222 May 21 12:45 /var/log/httpd/logs/www.site.com_8880-access.log
-rw-r--r-- 1 root root 0 May 21 00:01 /var/log/httpd/logs/www.site.com_8880-error.log
соответственно после ротации и архивации каждый лог должен быть перемещен в:
[burger@web01 ~]$ ls -l /var/log/httpd/logs/completed/|grep 2014-05-18
...
-rw-r--r-- 1 root root 20 May 18 00:01 access.log.2014-05-18.gz
-rw-r--r-- 1 root root 107244 May 18 00:01 othersite.ru_80-access.log.2014-05-18.gz
-rw-r--r-- 1 root root 20 May 18 00:01 othersite.ru_80-error.log.2014-05-18.gz
-rw-r--r-- 1 root root 20 May 18 00:01 error.log.2014-05-18.gz
-rw-r--r-- 1 root root 9991 May 18 00:01 www.site.com_8880-access.log.2014-05-18.gz
-rw-r--r-- 1 root root 20 May 18 00:01 www.site.com_8880-error.log.2014-05-18.gz
...
Задача: запилить скрипт на перле,который будет:
раз стуки запускаться по крону и проверять наличие ротированых лог файлов за прошедшие сутки.
И если какой-то лог не был ротирован,то слать оповещение локальному руту с именем отсутствующего лога в теме письма.
К сожалению, с перлом особо не работал, так что даже не знаю с какой стороны к вопросу подойти. Выручайте!