1

サーバーに送信された電子メールを取得してデータベースに記録する Ruby アプリケーションを構築しています。現時点では、(電子メール -> Ruby -> データベース) スタックのダウンタイムを完全にテストする方法はありません。Ruby が実行されているサーバーのダウンタイムをテストするサービスを使用しており、monit を使用して Ruby デーモンが長時間ダウンしないようにしています。定期的に手動で確認する以外に、確認に使用できるサービスはありますか。

1) 私のポストフィックスはまだ稼働しており、メールを送受信していますか?

2)メッセージはまだデーモンからデータベースに送信されていますか

そうでない場合、これら 2 つのシナリオのいずれかを監視してアラートを送信するためのベスト プラクティス、または確実に機能する自家製の方法はありますか?

4

3 に答える 3

1

cron ジョブで「カナリア」メッセージを送信してから、別の cron ジョブ テストを実行して、予想されるカナリア メッセージがデータベースに書き込まれたかどうかを確認できます。(オプションで削除など)

于 2009-08-19T16:11:40.933 に答える
0

商用ツールをお探しの場合は、www.logicmonitor.comでそれを行うことができます。Postfixモニタリング(ステータスのモニタリング、キュー、配信、バウンス、拒否などのメッセージのグラフ化)があります。また、データベースの監視(Mysql、oracle、postgres、sqlサーバー)-データベースのアラートと傾向分析を行い、必要に応じてチューニングに関するアドバイスを提供します。また、データベースへの電子メールの最後の挿入時刻などを簡単に追跡し、予想よりも長い時間があればアラートを出すこともできます。さらに、ログファイルを監視して、アプリケーションの応答時間を追跡します。

このシステムの重要度、および時間とお金のトレードオフによって異なります。

于 2009-08-20T00:36:31.357 に答える
0

私はMonitの経験がありませんが、これらのテストを設定することはできるかもしれません。そうでない場合は、 Nagiosを確認することをお勧めします。独自のテストを作成するための API は非常にシンプルです。

次のことをテストします。

  • SMTP サーバーはネットワーク上で応答しています。
  • postfix プロセスが実行されています。
  • 後置キューが空です。

ラウンドトリップのテストは、DGM の「カナリア」提案で行うことができます。そのようなルーチンを設定できれば、おそらく最高の精度が得られ、エラーに対する最速の反応が得られます。

トラフィックが比較的頻繁に発生する場合に役立つ別の方法は、postfix のログと、場合によってはデータベース サーバーを監視することです。たとえば、最後に成功したメッセージが 30 分を超えていないことを確認します (適切な値は "30" です...そして「分」...)。このアプローチは反応が遅くなりますが、より多くの可能性のあるエラー状態をカバーします。

于 2009-09-18T21:06:27.503 に答える