Hi,

You can code a python script and add an event listener to your sueprvisord
config.
Here is a little and basic mail notification. You can implement another type
of notification. Recently I coded an sms notification script to get my
crashes on my cell phone :-)
The code below is just a draft but it works.

Good Job


#!/usr/bin/env python -u

import smtplib, sys, os
from datetime import datetime
from supervisor import childutils

# Change your smpt_server and email

SMTP_SERVER = 'relay.skynet.be'
ADMIN_MAIL = "[email protected]"
FROM_MAIL = "[email protected]"

PROCESS_STATE_LIST = [
            'PROCESS_STATE_STOPPING',
            'PROCESS_STATE_EXITED',
            'PROCESS_STATE_UNKNOWN',
]

def write_stdout(s):
    sys.stdout.write(s)
    sys.stdout.flush()

def write_stderr(s):
    sys.stderr.write(s)
    sys.stderr.flush()

def send_mail(subject, message):
    datas = {
        'mail_from' : FROM_MAIL,
        'mail_to': ADMIN_MAIL,
        'subject': subject,
        'message': message,
    }

message = """From: %(mail_from)s
To: %(mail_to)s
Subject: %(subject)s

%(message)s
    """ % datas

    try:
        session = smtplib.SMTP(SMTP_SERVER)
        result = session.sendmail(FROM_MAIL, ADMIN_MAIL, message)
    except:
        print "An error occured when sending mail"


def main(argv=sys.argv):
    while True:
        h, p = childutils.listener.wait(sys.
stdin, sys.stdout)
        if not h['eventname'] in PROCESS_STATE_LIST:
            childutils.listener.ok(sys.stdout)
            continue
        ph, pd = childutils.eventdata(p+'\n')

        message = "Process %s (pid %s) fired event %s from state %s at %s" %
(
            ph.get('processname'),
            ph.get('pid'),
            h.get('eventname'),
            ph.get('from_state'),
            datetime.now()
        )

        subject = "Process %s failed at %s"  % (ph.get('processname'),
datetime.now())
        send_mail(subject, message)
        childutils.listener.ok(sys.stdout)

if __name__ == '__main__':
    main()




Supervisor configuration :

[eventlistener:mail_notification]
command=/usr/bin/python /home/ubuntu/utils/mail_notification.py
events=PROCESS_STATE, TICK_60
user = ubuntu
autostart = true
redirect_stderr=true
priority = 20


2009/10/28 Phillip Oldham <[email protected]>

> Grzegorz Nosek wrote:
> > You'll need an event listener:
> > http://supervisord.org/manual/current/events.html
> >
> > Maybe superlance will help you here, though I haven't used it. Adapting
> > "crashmail" from this package should do the trick.
> > http://pypi.python.org/pypi/superlance/
> >
> Thanks Grzegorz, that looks like what I'm looking for.
>
> Does anyone have a config example to use this? The docs are a little light.
> _______________________________________________
> Supervisor-users mailing list
> [email protected]
> http://lists.supervisord.org/mailman/listinfo/supervisor-users
>
_______________________________________________
Supervisor-users mailing list
[email protected]
http://lists.supervisord.org/mailman/listinfo/supervisor-users

Reply via email to