前提・実現したいこと
特定の文字列を除外した上でmonitのlog監視にてヒットした文字列をslack通知をしたいです。
発生している問題・エラーメッセージ
monitを再起動した際のエラー
Starting monit: +:5: Error: regex parsing error:Invalid preceding regular expression 'warning'
該当のソースコード
monit
1check file graphql_error_log with path /var/log/error.log 2 if match "^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}(?!.*UnauthorizedError).*$" 3 then exec "/home/user/slack_notification.rb -e production -i warning -c warning" 4
通知させたくないerror.logの文字列
2018-03-26 00:44:46 +09:00: UnauthorizedError
通知させたいerror.logの文字列
2018-03-26 00:44:46 +09:00: TestError: TestTestTest
※ 先頭行が[2018-03-26 00:44:46]などでUnauthorizedErrorが含まれていなければ通知させたい
試したこと
どうやら、monitの正規表現では完全にPOSIX準拠で否定先読み (?!PATTERN)等が使えないようです。
monit
1check file graphql_error_log with path /var/log/error.log 2 if match "UnauthorizedError" 3 else if match "^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}" 4 then exec "/home/user/slack_notification.rb -e production -i warning -c warning"
上記のようにelse if等ないか試してみたのですが、
Error: syntax error 'else'
シンタックスエラーが出てしまいました。
https://mmonit.com/monit/documentation/monit.html#GENERAL-SYNTAX
こちらを見てる位限り、else ifも使えそうなのですが。。
特定のエラー文言のみ除外した上でslack通知をおこないたいのですが、何か良い方法はないでしょうか?
あなたの回答
tips
プレビュー