Слишком много возможных причин здесь для предоставления определенного ответа.
Наиболее распространенные проблемы:
http://labs.consol.de/nagios/check_logfiles - это плагин Nagios, который используется для мониторинга файлов журналов. Обычно вы проверяете, есть ли определенный шаблон (сообщение об ошибке). Но это также возможно изменить. Например, если вы запустите check_logfiles --logfile /var/log/mybackup.log --criticalpattern '! резервное копирование выполнено успешно' каждое утро вы будете получать предупреждение, если с момента последнего запуска check_logfiles не было записи сообщения «резервное копирование выполнено успешно».
Gerhard
Если это невозможно, я бы сохранил механизм, который гарантирует, что событие произошло как можно ближе к приложению. Возможно, сторожевой таймер может быть запущен в фоновом режиме из того же сценария запуска, который запускает приложение, ведущее журналы. Когда приложение остановлено, сценарий также останавливает сторожевой таймер.
Другой вариант, если вы по какой-то причине хотите сохранить сценарий запуска в исходном состоянии, - это создать задание cron, которое выполняет просмотр журнала. .
В любом случае. Убедитесь, что уровень записи в журнале достаточно серьезный, чтобы вас предупредили о необходимости взглянуть на нее с помощью любого инструмента, который вы используете для мониторинга журналов. Лучше, более перспективно и инклюзивно для вещей, о которых вы не задумывались, но должны отслеживать, тогда прослушивать уровень журнала, чем конкретную запись в журнале. Это означает как минимум уровень ПРЕДУПРЕЖДЕНИЕ.
Для выполнения этой задачи можно использовать сценарии Shell / Perl. Вы можете запускать сценарии Shell / Perl через Cron.
Nagios был бы лучшим решением. Это инструмент с открытым исходным кодом, поэтому не нужно ничего платить, но нужно бороться с за его настройку. ;)
Если вам нужен коммерческий продукт, Splunk известен для анализа файлов журнала.
Zabbix - еще одно решение для мониторинга, подобное Nagios. Zabbix имеет возможность отслеживать файлы для различных строк и инициировать срабатывающее оповещение на основе заданных вами критериев (найдено или не найдено). Zabbix также поддерживает "просмотр" назад или с другого момента времени в журнале, что помогает предотвратить ложные срабатывания старых событий. Оповещения можно настроить для отправки электронных писем или SMS.
Веб-сайт Zabbix: http://www.zabbix.com/
Некоторые документы мониторинга журналов Zabbix: http://www.zabbix.com/documentation/2.0/manual/config/ items / itemtypes / log_items
Раньше я подходил к этому, перенаправляя трафик системного журнала в базу данных, а затем просто запрашивая у базы данных последнее полученное сообщение журнала от определенного имени хоста с его отметкой времени.
Это лишь одно из положительных преимуществ регистрации в базе данных.
Я считаю, что самый простой способ решить эту проблему - написать очень простой сценарий на любом языке по вашему выбору. Вам просто нужно grep
через системный журнал для определенных сообщений и отправить электронное письмо, если ничего не найдено. Включая некоторые проверки работоспособности, я не могу представить более 20 строк. Вставьте это cron, и все готово. Недостатком является то, что при использовании этого метода задание cron должно запускаться от имени пользователя root, чтобы читать журналы.
Что вы также можете сделать, это взглянуть на LogAnalyzer . К сожалению, я не помню, может ли он отправлять электронные письма. Тем не менее, он использует MySQL и хранит там информацию журнала. При установке LogAnalyzer у вас будет две копии ваших журналов, поскольку они идут параллельно: одна в системном журнале, другая в БД. Если у вас есть пользователь этой БД, способный читать ее содержимое, вы можете избежать выполнения вышеупомянутого задания cron. Это может быть не намного лучше, но может добавить еще один уровень защиты.
Мы сделали нечто подобное, где мы получаем уведомление, если мы не получаем новый заказ на веб-сайте в течение последних N часов. Мы создали URL PushMon с расписанием «каждые 3 часа». Затем мы назвали URL-адрес PushMon на нашей странице благодарности (JavaScript). Если мы не получим заказ, PushMon заметит отсутствие вызова и отправит предупреждение.
PushMon хорошо работает для предупреждения вас о событиях, которые не происходят.
Nagios может сделать это за вас с легкостью. Лично мне нравится все, что я могу легко запустить из командной строки и / или легко настроить через Nagios или Crontab.
LOGROBOT может делать именно то, что просит OP ... с помощью одной простой записи в командной строке. :
./ logrobot autonda / prod / apps / mylogfile 60m 'заказы отправлены' '.' 1 2 subscription_orders -ndnotfoundn
Просто измените выделенные жирным шрифтом строки и, конечно же, путь к файлу журнала в соответствии с вашими потребностями.
Как правило, эта команда выдает предупреждение, если хотя бы одна запись «заказы отправлены» НЕ находится в файле журнала / prod / apps / mylogfile. Он будет предупреждать о критическом состоянии, если в журнале не будет найдено как минимум 2 записей о «отправленных заказах».