Регулярное выражение Sensu check-log ошибочно проходит

Я пытаюсь настроить проверку sensu check-log. Журналы выглядят примерно так:

2015-09-22 06:05:44,710 DEBUG log output here
2015-09-22 06:05:44,712 ERROR more log output here
2015-09-22 06:05:44,713 ERROR even more log output here
2015-09-22 06:05:44,714 WARN so much log output

Я запускаю проверку вручную, чтобы проверить следующее:

sudo -u sensu /path/to/ruby /path/to/sensu/plugins/check-log.rb -f /path/to/log.log -q '/.*ERROR.*/' -r

что, когда я запускаю регулярное выражение здесь:

http://rubular.com/r/j1NO8RFY2p

он захватывает две строки, которые я хочу. Однако ручная проверка возвращает это:

CheckLog OK: 0 warnings, 0 criticals for pattern /.*ERROR.*/.

Поэтому я продолжаю получать ложные проверки. Не могу понять, что я здесь делаю неправильно, и документации по этому конкретному плагину довольно мало. И да, в логе есть ошибки для захвата. Любая помощь будет принята с благодарностью. Заранее спасибо.

ИЗМЕНИТЬ Рабочий код:

rm -rf /var/cache/check-log
sudo -u sensu /path/to/ruby /path/to/sensu/plugins/check-log.rb -f /path/to/log.log -q '.*ERROR.*' -r

person beardedeagle    schedule 22.09.2015    source источник
comment
Может быть, попробуйте что-то вроде этого: [\s?[\w ]+\s]?ERROR \s?[\w ]+   -  person XOR-Manik    schedule 23.09.2015
comment
CheckLog OK: 0 предупреждений, 0 критических замечаний по шаблону /[\s?[\w ]+\s]?ERROR \s?[\w ]+/. Спасибо хоть.   -  person beardedeagle    schedule 23.09.2015


Ответы (1)


Скрипт создает кеш в /var/cache/log, хранит количество прочитанных байтов и ищет эту позицию, поэтому каждый раз, чтобы выполнить тест, вам нужно сначала очистить папку.

rm -rf /var/cache/check-log

затем запустите код исправления

sudo -u sensu /path/to/ruby /path/to/sensu/plugins/check-log.rb -f /path/to/log.log -q '.*ERROR.*' -r

CheckLog CRITICAL: 0 warnings, 2 criticals for pattern .*ERROR.*.
2015-09-22 06:05:44,712 ERROR more log output here

2015-09-22 06:05:44,713 ERROR even more log output here

См.: check-log.rb

person BMW    schedule 22.09.2015
comment
Я получил ошибку при выполнении этой конкретной проверки. Я даже пытался '/*ERROR.*/' и получил то же самое ложное прохождение. Вы можете увидеть ошибку здесь: gist.github.com/beardedeagle/8058203040acc921cf8e - person beardedeagle; 23.09.2015
comment
Я все еще вижу / в результате, пожалуйста, убедитесь, что вы не добавили еще что-то. - person BMW; 23.09.2015
comment
Полностью удалил и выполнил команду дословно. При чтении rubydocs кажется, что это исключение, которое возникает из-за недопустимого регулярного выражения: apidock.com/ruby/RegexpError - person beardedeagle; 23.09.2015
comment
так. ты был прав на 99%. Мне нужно было удалить папку кеша. Однако регулярное выражение должно быть '.*ERROR.*' - person beardedeagle; 23.09.2015
comment
Благодаря этому я сделал тест с -q 'ERROR' и -q '.*ERROR.*' , оба работают, но при копировании/вставке я исправил некоторую опечатку. - person BMW; 23.09.2015
comment
Спасибо, приятно исправить эту проблему. В настоящее время я использую аналогичные сценарии проверки sensu, такие как диск, процессор, память и т. д. Если у вас возникнут какие-либо проблемы, дайте мне знать. - person BMW; 23.09.2015