Snippets

Misha Behersky Health checker client

Created by Misha Behersky
import smtplib

import requests

from requests.exceptions import Timeout, HTTPError

from threading import Timer


class Checker(object):
    URL_TO_CHECK = 'http://bmwlog.pp.ua/'
    CHECK_INTERVAL = 3
    MAIL_USERNAME = ''
    MAIL_PASSWORD = ''
    ALERT_MAIL = 'bmwant@gmail.com'

    def __init__(self):
        """
        Override all parameters here
        """
        pass

    def send_mail(self, mail_text):
        server = smtplib.SMTP_SSL('smtp.yandex.com', 465)
        server.login(self.MAIL_USERNAME, self.MAIL_PASSWORD)

        from_addr = 'monitoring@bmwlog.pp.ua'
        to_addr = self.ALERT_MAIL
        msg = 'From: %s\r\nTo: %s\r\n\r\n%s' % (from_addr, to_addr, mail_text)

        server.sendmail('misha.behersky@yandex.com', self.ALERT_MAIL, msg)

    def check(self):
        t = Timer(self.CHECK_INTERVAL, self.check)
        t.start()
        try:
            r = requests.get(self.URL_TO_CHECK, timeout=1)
        except (HTTPError, Timeout) as e:
            self.send_mail('Remote is down.\nReason:\n%s' % e)
        except Exception as e:
            self.send_mail('Checker got into trouble itself.\nReason:\n%s' % e)


if __name__ == '__main__':
    checker = Checker()
    checker.check()

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.