Thursday, September 17, 2015

Python Script To Monitor Site Uptime


                      Python Script To Monitor Site Uptime

I wrote the following script in an attempt to monitor my clients-sites uptime, essentially if a sites goes down for whatever reason, I will be notified via email, this doesn't include sites hosted by ourselves  as they are monitored already, this is for sites where we only do consulting and they are hosted by others.The reason I decided to make this was because I happened to be on a reviewing a clients site while it went down (I wasn't doing anything but viewing the source from the browser!), anyway I notified the client and their development team and both were not aware that the site went down so I potentially saved some losses as it was quickly put back online.The script itself, although it looks simple enough, was admittedly a little tricky; it uses multithreading in order to keep both loops running simultaneously.The first function email_sender() is what it sounds like, it sends emails, this is powered by gmail, you need to add the email address and password of the account you wish to send the notifications from. You will likely want to authorise the server you are running the script from, start by trying to send an email from it, if it fails go to this link and authorise it, you then need to sent it again within 10 minutes and Google will whitelist it - You'll need to be signed in.The next function site_up(), runs through the sites you list and checks each one looking for a 200 status response code, if it receives anything else, it passes it on to a temporary dictionary that the second function is watching and deletes it from the main dictionary, after 15 minutes of being sat in the temporary dictionary it checks it again, if it is still returning anything other that a 200 response then it fires an email to the corresponding email address alerting you there is an issue (it's set up like this so you can include colleagues with different email addresses) - Every 15 minutes it checks whether it is back up or not, each time sending an email, once it is back up it fires another email saying the site is once again live - it deletes it from the temporary dictionary and adds the site back into the main pool.The site_up() function will continue monitoring all the other sites even when a site goes down and into the site_down() monitoring state.code :

No comments:

Post a Comment