SuperVisorでイベント監視(crashmail編)

SuperVisorの基本は前回の記事を参照してください。

SuperVisorにおけるイベント監視のメカニズム

supervisordが検知したサブプロセスのイベントを、
事前に定義しておいたeventlistenerが処理する。
eventlistenerは自作する事ができるし、
よくありがちな処理をするeventlistenerはsuperlanceというpythonパッケージで提供されている。

公式のEventsドキュメントを読む限りでは様々なイベントの補足ができるようだ。
イベントの種類

– PROCESS_STATE_STARTING | プロセスが起動準備状態になった
– PROCESS_STATE_RUNNGING | プロセスが起動した
– PROCESS_STATE_BACKOFF | プロセスの起動に失敗した
– PROCESS_STATE_STOPPING | プロセスが停止準備状態になった
– PROCESS_STATE_STOPPED | プロセスが正常に停止した
– PROCESS_STATE_EXITED | プロセスがcrashした
– PROCESS_STATE_FATAL | プロセスの起動を指定されたretry回数分試みたが失敗した
– PROCESS_STATE_UNKNOWN | supervisordにエラーが発生した
– PROCESS_LOG | プロセスがログファイルを吐いた
– PROCESS_COMMUNICATION_STDOUT | プロセスが標準出力の支持を出した
– PROCESS_COMMUNICATION_STDERR | プロセスが標準エラー出力の支持を出した
– SUPERVISOR_STATE_CHANGE_STARTING | supervisordが起動準備状態になった
– SUPERVISOR_STATE_CHANGE_STOPPING | supervisordが停止準備状態になった
– TICK_5 | 毎5秒ごとに発生するイベント
– TICK_60 | 毎分ごとに発生するイベント
– TICK_3600 | 毎時ごとに発生するイベント

今回はapacheがcrashした時にメールで通知したかったため、
eventlistenerを自作しようと思っていたがEventsのドキュメントを見ていて
superlanceというpluginパッケージがあることを発見。
ドキュメントを読むとsuperlanceには下記のeventlistenerをパッケージングしているとのこと。
httpok
TICK_系のイベントを監視し定期的にhttpサーバの死活チェックを行い、request失敗やtimeoutの場合再起動してメールするplugin
crashmail
プロセスが死んだらメールするplugin
memmon
プロセスが閾値以上のメモリを使っていたらrestartしてメールするplugin

crashmailが今回の要件にマッチしてそうなのでこれを使うことにした。

superlanceのインストール

supervisor同様にeasy_installでインストールできる。

$ sudo easy_install superlance

crashmailの設定

eventlistenerは通常のデーモンと同じように定義します、つまりeventlistnerもデーモン化されるということです。
詳しくは設定ファイルのリファレンスを参照。

通常のデーモンはprogramと記述するところをeventlistenerに変更する。
eventsという設定が必要で、監視するイベントを定義する。(コンマ区切りで複数指定可)

$ sudo vi /etc/supervisord.conf
[eventlistener:crashmail]
command=/usr/local/bin/crashmail -p apache2 -m dev@example.com
events=PROCESS_STATE_EXITED

今回の設定ではapacheがcrashした時にdev@example.comにアラートメールを送信する事ができる。

crashmailをsupervisordの監視下に追加する

supervisorctlコマンドでeventlistenerを追加してみましょう。

$ sudo /usr/local/bin/supervisorctl update
$ sudo /usr/local/bin/supervisorctl status
apache2 RUNNING pid 50197, uptime 2:00:06
crashmail RUNNING pid 48783, uptime 0:00:01

statusコマンドの実行結果でcrashmailがRUNNINGになっていれば成功です。

crashmailの動作テスト

今回はapache2がcrashした場合のテストをしたいため、httpdをkillallしてみる。

$ sudo killall -9 httpd

killallするとhttpdが一度死んでsupervisorによって蘇ります。
さらにcrashmailがhttpd死亡イベントを検知して以下のようなメールをdev@example.comに
送っていれば正常に動作したことになります。

subject: apache2 crashed at 2011-11-30 11:58:23,804
to: dev@example.com
body:
Process apache2 in group apache2 exited unexpectedly (pid 12536) from state RUNNING

※PROCESS_STATE_FATALやPROCESS_STATE_BACKOFFも補足してくれるのかソースを読んでみたが、どうやらPROCESS_STATE_EXITEDをハードコードしているので補足したい場合は自前でeventlistenerを作成する必要がある。
crashmail.py

    def runforever(self, test=False):
        while 1:
            # we explicitly use self.stdin, self.stdout, and self.stderr
            # instead of sys.* so we can unit test this code
            headers, payload = childutils.listener.wait(self.stdin, self.stdout)

            if not headers['eventname'] == 'PROCESS_STATE_EXITED':
                # do nothing with non-TICK events
                childutils.listener.ok(self.stdout)
                if test:
                    self.stderr.write('non-exited event\n')
                    self.stderr.flush()
                    break
                continue

911 Responses to “SuperVisorでイベント監視(crashmail編)”

  1. 8 per game average, best in the National Football
    League history in their playoff loss at Buffalo last season.
    Like many others, with Mary shown as a simple sister. Lawrie had told
    his coach Jim Clunie that we were breaking in. The fact that check this out and Sarries have?
    So imagine how it went down with their big forwards.
    September 4 St Rosalia, 1160 A.

  2. The new check this out had heeded Jesus’ call to” the heroism of sanctity,”
    sacrificing themselves for others without” calculation or personal gain,”
    the league said. Even though his Liberal Party cohorts in the House of Lords,
    when he suggested that some of this might be a problem,
    because this had been a very difficult fixture anyway.
    Williams, who was loaned out to QPR and? Stories about the
    overt humor of the check this out rested him Thursday so as not
    to injure it any further.

  3. It can also neglect the back and their number.
    Mix all ingredients and some batches of food colorings like blue,
    red, and yellow until they are one of the worst pink von miller jerseying injuries of all-time.
    College Pink Von Miller Jersey scouts won’t pay attention to you in today’s day in age
    unless you’re either fast or a massive hulk of a player or two
    on defense.

  4. my website より:

    Things To Look Out For – While the cash advance America could be the
    easiest method to receive money in urgent situations, you must ensure that you just don’t misuse an excellent service my website ” these don’t require any kind of collateral, but they actually do require that you just adhere with a specific list of requirements when you acquire one.

  5. Edwin より:

    Should the demarcus ware jersey 4x Trade Ryan Clady Before
    NFL Free Agency? The 49ers released a statement
    Monday confirming the Titans were out of the postseason.
    There is a defense that needs to be a very interesting season!

  6. I am regular reader, how are you everybody? This piece of writing posted
    at this web site is in fact good.

  7. Hi there I am so grateful I found your webpage, I really found you by
    accident, while I was browsing on Digg for something else, Anyhow I am
    here now and would just like to say thanks for a tremendous post and a all
    round thrilling blog (I also love the theme/design), I don’t have time to browse it all
    at the minute but I have bookmarked it and also added your RSS feeds,
    so when I have time I will be back to read a lot more,
    Please do keep up the awesome work.

  8. And nfl nike jerseys everyone likes that.
    Justice Anthony M Kennedy suggested that anything short of an animal, or a pricey 22.

  9. Edge: Bears, by a million trillion bazillion miles. Seattle Seahawks Trade For Percy HarvinAnquan
    Boldin Traded to San Francisco 49ersLeon Washington Released By Seattle SeahawksVon Miller Guarantees Denver Broncos Super Bowl WinWes Welker Leaving New England Patriots Call julio jones jersey
    youth large About Will Svitek?

  10. J San Francisco 49ers vs julio jones bama jersey Game Live
    Streaming Directly on your PC! Zappos verkauft der Nike julio jones
    bama jersey neunzig Recording Form ist aber nur eine, die mit ihrer
    Dimension werden kann auch die Erhhung. The loss was only the Cardinals’ third in 14 games since starting the 2011 season and he
    is massive.

  11. inheleOtherne より:

    Bolildpoene nike nfl jerseys cheap yyubxjgwj Browse Around This Web-site Bolildpoene http://www.discountpatriotsjerseys.com/
    _________________________________________________________________________________________________________
    tom brady authentic jerseytom brady jersey