スーパーランスでスーパーバイザーの実行ステータスを監視する
Monitor Supervisor Running Status With Superlance
この記事は、著者ZhangJiayuが承認したNeteaseクラウドコミュニティによって公開されました。
訪問へようこそ 網易クラウドコミュニティ Neteaseテクノロジー製品の操作経験について詳しく知る。
最近、開発者は監督者の管理下にあるプロセスを再開するように求めました。アクティブな通知を行う方法はありますか?家主が最初に考えたのは、スーパーバイザーに同行するイベントリスナーだったので、次のような解決策を見つけました。
スーパーバイザーは、コマンドで簡単に開いたり、閉じたり、再起動したりできる非常に実用的なプロセス管理ツールであり、管理するプロセスはクラッシュすると自動的に再起動します。スーパーバイザーの利点とスキルを紹介するKMに関する記事がたくさんあります。スーパーバイザー自体の紹介はここでは繰り返されません。
この記事では主に、スーパーバイザーのイベントメカニズムに基づくコマンドラインツールのセットであるスーパーランススーパーランスを紹介します。これは、メモリモニタリングを含む、スーパーバイザ自体によって実装されていない多くの有用なプロセスモニタリングおよび管理機能を実装します。 Httpインターフェイスの監視、メール、およびSMS通知メカニズム。同様に、スーパーランス自体はPythonで記述されています。
インストール
superlanceはpythonパッケージであるため、インストールは非常に簡単で、easy_installまたはpipを介して簡単にインストールできます。
easy_install superlance pip install superlance
もちろん、最新のソースコード(https://github.com/Supervisor/superlance)をgithubで入手してインストールすることもできます。
python setup.py install
インストール後、次のhttpokコマンドを実行します。コマンドが存在する場合は、スーパーランスが正常にインストールされていることを示しています。
スーパーランスコンポーネント
Superlanceは、次のコマンドを含むコマンドラインツールのコレクションです。
httpok
HTTPインターフェースで定期的にGETリクエストを実行することにより、リクエストが成功したかどうかに応じてプロセスが正常な状態にあるかどうかが判断され、成功しなかった場合はプロセスが再開されます。
クラッシュメール
プロセスが予期せず終了したときに電子メールアラートを送信します。
メムノーン
プロセスのメモリ使用量が設定されたしきい値を超えたときに電子メールアラートを送信します。
クラッシュメールバッチ
クラッシュメールアラートに似ていますが、電子メールの爆撃を避けるために、電子メールは一定期間結合されます。
fatalmailbatch
プロセスが複数回開始に失敗すると、プロセスはFATAL状態になり、電子メールアラートが送信されます。合成アラームは、crashmailbatchと同じように実行されます。
クラッシュム
プロセスが予期せず終了したときにテキストメッセージアラートを送信します。このメッセージは、電子メールゲートウェイ経由でも送信されます。
実用例:
注:スーパーランスを使用するようにスーパーバイザーを実際に構成する前に、まずsendmailをインストールしてください。 Superlanceは、このコマンドラインツールを使用して電子メールを送信します。さまざまなパッケージ管理ツールを使用して簡単にインストールできます。
apt-get install sendmail
クラッシュメール使用の紹介
スーパーバイザーの構成は次のとおりです。
cat /etc/supervisor/conf.d/redis.conf [program:redis] command=/usr/local/redis/bin/redis-server /home/redis/etc/redis.conf directory=/usr/local/redis/bin/ user=mysql autostart = trueautorestart = true#startsecs = 30stopwaitsecs = 1stopsignal = TERM redirect_stderr = true [eventlistener:redis_monitor] command=crashmail -p redis -m root@xxxxx events=PROCESS_STATE_EXITED redirect_stderr=false
最初に、redisプロセス起動プロジェクトが構成され、次にredis_monitorという名前のイベントリスナーが構成されます。これは、スーパーバイザーからのPROCESS_STATE_EXITEDイベントを受け入れ、crashmailのコマンドライン呼び出しをトリガーします。
PROCESS_STATE_EXITEDは、スーパーバイザーの監視項目に対応するプロセスが予期せず終了したときにトリガーされるイベントです。これにより、予期しない終了が発生したときにプロセスがクラッシュメールに通知します。
コマンドパラメーターの-pパラメーターは、redisという名前の監視項目にのみ応答するようにcrashmailを構成し、-mパラメーターは、クラッシュメッセージの送信先のアドレスを構成します。
アピール構成を構成した後、supervisorctlを介して構成の2つの内容を確認できます。1つはredis監視項目で、もう1つはイベントリスナーredis_monitorです。
killを使用してredisプロセスを強制終了します
プロセス26039が終了したという電子メール通知を受信しました
この構成は、プロセスの再開時に電子メールでユーザーに通知できます。
メムノーン使用紹介
ここでは、memmonを使用してプロセスのメモリ使用量を監視します。テストスクリプトは次のとおりです。
このスクリプトの実行中にメモリリークが発生し、システムがメモリを割り当てることができなくなるまでメモリ使用量が増加し、プログラムが異常終了します。このスクリプトを使用して、メモリを発行するようにmemmonイベントリスナーを構成できます。漏れたアラーム。
スーパーバイザーの構成は次のとおりです。
[program:leak] command=python /home/zhangjy/memoryleak.py user=zhangjy directory=/home/zhangjy priority=999process_name=%(program_name)s numprocs=1autostart = trueautorestart = truestopwaitsecs = 1stopsignal = TERM exitcodes=0,2redirect_stderr = falsestdout_logfile_maxbytes = 1024MB stdout_logfile_backups = 5stdout_logfile = /home/zhangjy/stdout.log stderr_logfile_maxbytes = 1024MB stderr_logfile_backups = 5stderr_logfile = /home/zhangjy/stderr.log [eventlistener:leak_monitor] command=memmon -p leak=1MB -m root@xxxxx events=TICK_60 redirect_stderr=false
ここで、memmonイベントリスナーは、60秒ごとにトリガーされるイベントであるTICK_60イベントをリッスンします。これにより、memmonは60秒ごとに対応する監視項目のメモリ使用量を検出します。ここでは、監視リーク監視項目を設定します。メモリ使用量が1MBを超えると、プロセスが再開され、アラートの電子メールが送信されます。プロセスを再生した後のステータスを表示する
60秒間実行した後、リークプロセスのメモリ使用量がアラーム値の1MBを超え、リークの稼働時間もリセットされ、プロセスが再開されたことを示します。これにより、プロセスは通常の動作を維持し、目的を達成できます。メモリリークアラームの。
メールボックスでメールが受信されたことがわかります。
スーパーランスツールを使用して、さまざまなアラーム要件を完了し、スーパーバイザーの機能を拡張できます。これらのツールの具体的な使用法は、公式ドキュメントを参照できます。
https://superlance.readthedocs.org/en/latest/index.html
クラウドセキュリティ(Easy Shield)コンテンツセキュリティ、検証コード、その他のサービスの無料体験
より多くのNetEaseテクノロジー、製品、操作経験の共有をお願いします クリック 。
関連記事:
[推奨] ヤーンモードの起動プロセス分析で点滅
[推奨] MySQLMGRクラスターのセットアップ
[推奨] データに隠されたストーリーへの洞察-NetEaseには多くの「正しい」使用法があります