diff options
| author | Ultrabug <ultrabug@gentoo.org> | 2013-03-25 11:21:05 +0100 |
|---|---|---|
| committer | Ultrabug <ultrabug@gentoo.org> | 2013-03-25 11:21:05 +0100 |
| commit | 2bce5e6390a419c67f91f77db41dfc92528ba0c0 (patch) | |
| tree | 8a6971f48bd19a1cb3f01ceb360be02a388d6bf6 /examples | |
| parent | aad49fb6fbbd9f575f2f6aa69c9cc801722f1e8d (diff) | |
add Pingdom checks latency example module
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/pingdom.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/examples/pingdom.py b/examples/pingdom.py new file mode 100644 index 0000000..676e6d3 --- /dev/null +++ b/examples/pingdom.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- + +class Py3status: + """ + Dynamically display the latest response time of the configured checks using + the Pingdom API. + We also verify the status of the checks and colorize if needed. + Pingdom API doc : https://www.pingdom.com/services/api-documentation-rest/ + + #NOTE: This module needs the 'requests' python module from pypi + https://pypi.python.org/pypi/requests + """ + def pingdom_checks(self, json, i3status_config): + response = {'full_text' : '', 'name' : 'pingdom_checks'} + + #NOTE: configure me ! + APP_KEY = '' # create an APP KEY on pingdom first + CACHE_TIMEOUT = 600 # update every 10 mins + CHECKS = [] # list of the checks' names you want added to your bar + LATENCY_THRESHOLD = 500 # when to colorize the output + LOGIN = '' # pingdom login + PASSWORD = '' # pingdom password + TIMEOUT = 3 + + try: + import requests + from time import time + r = requests.get( + 'https://api.pingdom.com/api/2.0/checks', + auth=(LOGIN, PASSWORD), + headers={'App-Key': APP_KEY}, + timeout=TIMEOUT, + ) + result = r.json() + if 'checks' in result: + for check in [ck for ck in result['checks'] if ck['name'] in CHECKS]: + if check['status'] == 'up': + response['full_text'] += '%s: %sms, ' % (check['name'], check['lastresponsetime']) + if check['lastresponsetime'] > LATENCY_THRESHOLD: + response.update({'color': i3status_config['color_degraded']}) + else: + response['full_text'] += '%s: DOWN' % (check['name'], check['lastresponsetime']) + response.update({'color': i3status_config['color_bad']}) + response['full_text'] = response['full_text'].strip(', ') + response['cached_until'] = time() + CACHE_TIMEOUT + except Exception, e: + pass + finally: + return (0, response) |
