Там на самом деле гораздо проще сделать это.
Загрузить / Документация: autodrgrep.kl.sh
Команда:
./autodrgrep.kl.sh notchef /tmp/client.log '2016-05-08_08:00:00,2016-05-08_23:00:00' 'INFO' 'a2ensite' 5 10 -show
Объяснение:
autodrgrep.kl.sh - это имя инструмента.
notchef - это опция, которая передается инструменту, чтобы сообщить ему, что делать. В данном конкретном случае он сообщает инструменту, какой тип файла журнала /tmp/client.log.
/tmp/client.log - это, конечно, файл журнала.
2016-05-08_19:12:00,2016-05-08_21:13:00 - это диапазон дат из журнала, который вы хотите сканировать
"INFO" - это одна из строк, которая находится в строках журналов, которые вас интересуют.
"a2ensite" - это другая строка в той же строке, в которой вы ожидаете найти строку "INFO". Указание этих двух строк (INFO и a2ensite) изолирует и обрабатывает строки, которые вы хотите, намного быстрее, особенно если вы имеете дело с огромным файлом журнала.
5 указывает предупреждение. Указывая 5, вы сообщаете программе, что она должна предупреждать как ПРЕДУПРЕЖДЕНИЕ, если есть хотя бы 5 вхождений указанных вами строк поиска.
10 указывает Критическое. Указав 10, вы сообщаете программе, что она предупреждает как КРИТИЧЕСКАЯ, если есть как минимум 10 появлений указанных вами строк поиска.
-show указывает, какой тип ответа вы получите. Указывая -shown, вы говорите, что если что-то найдено, что соответствует указанным шаблонам, выводится на экран.
Образец прогона:
# ./autodrgrep.kl.sh notchef /tmp/client.log '2016-05-08_19:12:00,2016-05-08_21:13:00' 'INFO' 'a2ensite' 5 10 -show
[2016-05-08 19:12:58-07:00] INFO: Processing template[/usr/sbin/a2ensite] action create (apache2::default line 90)
[2016-05-08 19:12:58-07:00] INFO: Processing execute[a2ensite default] action run (apache2::default line 24)
[2016-05-08 19:12:58-07:00] INFO: execute[a2ensite default] ran successfully
[2016-05-08 19:13:09-07:00] INFO: Processing execute[a2ensite nagios3.conf] action run (logXrayServer::install line 24)
[2016-05-08 19:13:12-07:00] INFO: execute[a2ensite default] sending restart action to service[apache2] (delayed)
[2016-05-08 19:42:57-07:00] INFO: Processing template[/usr/sbin/a2ensite] action create (apache2::default line 90)
[2016-05-08 19:42:57-07:00] INFO: Processing execute[a2ensite default] action run (apache2::default line 24)
[2016-05-08 19:42:57-07:00] INFO: execute[a2ensite default] ran successfully
[2016-05-08 19:43:08-07:00] INFO: Processing execute[a2ensite nagios3.conf] action run (logXrayServer::install line 24)
[2016-05-08 19:43:11-07:00] INFO: execute[a2ensite default] sending restart action to service[apache2] (delayed)
[2016-05-08 20:12:58-07:00] INFO: Processing template[/usr/sbin/a2ensite] action create (apache2::default line 90)
[2016-05-08 20:12:58-07:00] INFO: Processing execute[a2ensite default] action run (apache2::default line 24)
[2016-05-08 20:12:58-07:00] INFO: execute[a2ensite default] ran successfully
[2016-05-08 20:13:10-07:00] INFO: Processing execute[a2ensite nagios3.conf] action run (logXrayServer::install line 24)
[2016-05-08 20:13:12-07:00] INFO: execute[a2ensite default] sending restart action to service[apache2] (delayed)
[2016-05-08 20:42:59-07:00] INFO: Processing template[/usr/sbin/a2ensite] action create (apache2::default line 90)
[2016-05-08 20:42:59-07:00] INFO: Processing execute[a2ensite default] action run (apache2::default line 24)
[2016-05-08 20:42:59-07:00] INFO: execute[a2ensite default] ran successfully
[2016-05-08 20:43:09-07:00] INFO: Processing execute[a2ensite nagios3.conf] action run (logXrayServer::install line 24)
[2016-05-08 20:43:12-07:00] INFO: execute[a2ensite default] sending restart action to service[apache2] (delayed)
[2016-05-08 21:12:59-07:00] INFO: Processing template[/usr/sbin/a2ensite] action create (apache2::default line 90)
[2016-05-08 21:12:59-07:00] INFO: Processing execute[a2ensite default] action run (apache2::default line 24)
[2016-05-08 21:12:59-07:00] INFO: execute[a2ensite default] ran successfully
23
2---78720---23---ATWFILF---(2016-05-08)-(19:12)---(2016-05-08)-(21:13) SEAGM
Что делать, если указанный пользователем диапазон дат или период времени отсутствуют в журнале?
Каждый запуск вышеуказанной команды всегда будет иметь строку (последнюю строку выходных данных), которая говорит "ATWFILF" или "ETWNFILF".
ATWFILF означает, что в журнале был найден фактический диапазон дат или период поиска, который вы запрашивали. Так что это очень хорошо.
ETWNFILF означает, что фактический диапазон дат или период времени, который вы запрашивали, НЕ был найден в журнале. В этом случае ближайшее время к указанному вами времени будет обнаружено и использовано вместо этого.