如何在 Sensu 中使用 check-tail 插件检查重复的字符串?

How can I check for repeated strings with check-tail plugin in Sensu?

我正在使用 sensu 和 check-tail.rb 插件来提醒我的应用程序日志中是否出现任何错误。问题是,如果发现 3 条或更多错误消息,我希望检查成功。

我想出的解决方案是使用如下正则表达式:

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

但由于匹配函数,它似乎不起作用:不是将变量作为 ruby 正则表达式传递,而是将其作为字符串传递(可见 here)。

您需要将模式作为字符串文字传递,而不是作为 Regexp 对象传递。

因此,您需要删除正则表达式定界符并将修饰符更改为其内联选项变体,即在模式前添加 (?im).

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

请注意,要匹配 Ruby 中字符串的开头,您需要使用 \A 并匹配字符串的结尾,您需要使用 \z 锚点。