ある種のチェーンアクションをmonitで処理したいと思います。
私の試み(これまでのところ):
check process myprocess with pidfile /run/my.pid
start program = "/path/to/binary start" with timeout 60 seconds
stop program = "/path/to/binary stop" with timeout 60 seconds
if not exist for 3 cycles then restart
if not exist then alert
if 3 restarts within 3 cycles then timeout
PIDの失敗時にアラートを出さず、「実行中」の状態を維持しますが、3サイクル後に再起動します。
check process myprocess with pidfile /run/my.pid
start program = "/path/to/binary start" with timeout 60 seconds
stop program = "/path/to/binary stop" with timeout 60 seconds
if not exist for 3 cycles then restart
if children < 1 for 1 cycles then alert
if 3 restarts within 3 cycles then timeout
1未満の子のアラートはありませんが、5以降に再起動します。
monit.log
[CEST Aug 1 15:09:30] error : 'myprocess' process is not running
モニットサマリー
Process 'myprocess' Running
ここにmonit-vの部分があります:
Existence = if does not exist 3 times within 3 cycle(s) then restart else
if succeeded 1 times within 1 cycle(s) then alert
Pid = if changed 1 times within 1 cycle(s) then alert
Ppid = if changed 1 times within 1 cycle(s) then alert
Children = if less than 1 1 times within 1 cycle(s) then alert else if
succeeded 1 times within 1 cycle(s) then alert
Timeout = If restarted 3 times within 3 cycle(s) then unmonitor
したがって、質問:アラートを送信してステータスを「実行中」に1サイクル以内に変更し、3日後に再起動することは可能ですか?
編集(重要):この動作が改善されたMonitの新しい(2019年2月による)バージョンについては、以下のコメントを参照してください。
この行:
if does not exist for 3 cycles then restart
次のことを意味します。
サービスが存在しないことを3回確認してから再起動するまで、アクションを実行しないでください。この動作は、monitのドキュメントでフォールトトレランスとして説明されています。
フォールトトレランス
デフォルトでは、アクションが一致し、サービスがエラー状態に設定されている場合にアクションが実行されます。ただし、エラーイベントがトリガーされ、サービス状態が失敗に変わる前に、テストが複数回失敗するように要求することができます。これは、特にネットワークテストで発生する可能性のある、誤ったエラーに関するアラートを回避するのに役立ちます。
構文:
サイクルの場合...または:
[内の時間]サイクル.。
したがって、Monitは、次のXサイクル以内に失敗するまで、サービスのステータスを変更しません。このステートメントを確認するには、このサービスのフォールトトレランスを削除し、次のもののみを使用します。
if does not exist then alert
サービスを手動で停止し、コマンドが
monit status
停止するとすぐに「存在しません」というステータスが表示されます。
だから、あなたの質問に戻って:
SMTPサーバー構成
set mailserver smtp.gmail.com PORT 587 USERNAME "[email protected]" PASSWORD "xxxxx" using TLSV1 with timeout 30 seconds
(Gmailでは、monitがstmpサービスを使用できるようにするには、「安全でない」アプリへのアクセスをアクティブ化する必要があることに注意してください)
そして
メール受信者
set alert [email protected]
両方ともファイル/ etc/monit/monitrcにあります。これらの2行の詳細については、公式ドキュメントを参照してください。
参照:
Monitのドキュメント: https://mmonit.com/monit/documentation/monit.html
それが役に立てば幸い!
よろしく