Bash-скрипт для мониторинга логов на основе времени последнего обновления - PullRequest
0 голосов
/ 05 октября 2019

У меня есть каталог на сервере RHEL 6, в который записываются журналы, как показано ниже. Как видите, за 1 минуту уже записано 4 журнала. Я просто хочу написать скрипт, который может проверять каждые 15 минут (Cron), и если файлы журнала не обновляются, отправьте уведомление по электронной почте, типа «Адаптер в состоянии зависания, требуется перезагрузка». Я знаю основные команды Linux и знание crons. Вот как я пытаюсь


-rw-r--r-- 1 root    root   11M Oct  6 00:32  Adapter.log.3
-rw-r--r-- 1 root    root   11M Oct  6 00:32  Adapter.log.2
-rw-r--r-- 1 root    root   10M Oct  6 00:32  Adapter.log.1
-rw-r--r-- 1 root    root  6.3M Oct  6 00:32  Adapter.log

$ ll Adapter.log >/tmp/test.txt
$ cat test.txt | awk '{print $6,$7,$8}'
Oct 6 03:10

Теперь, как я могу получить время одного и того же файла журнала через 15 минут, чтобы я мог сравнить разницу во времени и написать скрипт для отправки оповещения.

1 Ответ

1 голос
/ 05 октября 2019

Приведенное описание выглядит так, как будто отметку времени можно проверять каждые 15 минут.

  1. Если файл обновлялся за последние 15 минут, ничего не делать
  2. Если файл обновлялся с 15 до 30несколько минут назад, отправьте уведомление по электронной почте
  3. Если файл был обновлен 30 минут назад, ничего не делайте, так как об ошибке уже сообщалось в предыдущем цикле

Рассмотрите возможность размещения следующего в cron на 15 минутеинтервал:

find /path/to/log/Adapter.log* -mmin +15 -mmin -30 | xargs -L1 send-alert  

Это решение будет работать в большинстве ситуаций. Однако стоит отметить, что если загрузка системы очень высока, выполнение cron может быть отложено, что повлияет на возрастной тест. В этих случаях требуется дополнительный файл для хранения времени последнего теста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...