2

I am using sensu and the check-tail.rb plugin to alert if any errors appear in my app logs. The problem is that I want the check to be successful if it finds 3 or more error messages.

The solution that I came up with is using a regex like:

\^.*"status":503,.*$.*^.*"status":503,.*$.*^.*"status":503,.*$\im

But it seems to not work because of the match function: instead of passing the variable as a ruby regex it passes it as a string (this can be seen here).

Alex Efimov
  • 3,335
  • 1
  • 24
  • 29

1 Answers1

2

You need to pass the pattern as a string literal, not as a Regexp object.

Thus, you need to remove the regex delimiters and change the modifiers to their inline option variants, that is, prepend the pattern with (?im).

(?im)\A.*"status":503,.*$.*^.*"status":503,.*$.*^.*"status":5‌​03,.*\z

Note that to match the start of string in Ruby, you need to use \A and to match the end of string, you need to use \z anchors.

Wiktor Stribiżew
  • 607,720
  • 39
  • 448
  • 563