Declarative configuration library for Uptime Robot
urconf is a Python library for Uptime Robot <https://uptimerobot.com/>
API. It expects definition of all your contacts and monitors, and then issues
API calls required to configure your Uptime Robot accordingly.
Install urconf using pip:
pip install urconf
Write your monitoring configuration as a Python script:
import logging import urconf # urconf logs all operations that change configuration at the INFO level. # Use DEBUG to see API call contents. logging.basicConfig(level=logging.INFO) config = urconf.UptimeRobot("api-key") # dry_run=True enables dry mode # Define contacts email = config.email_contact("firstname.lastname@example.org") boxcar = config.boxcar_contact("boxcar-api-key", "my boxcar") # Define monitors ssh = config.port_monitor("ssh on server1", "server1.example.com", 22) web = config.keyword_monitor( "my site", "https://example.com/", "welcome to example.com!") # More complex example with HTTP auth and non-standard monitoring interval backend = config.keyword_monitor( "my backend", "https://admin.example.com", "Cannot connect to database", should_exist=False, http_username="admin", http_password="password", interval=20) # Associate contacts with monitors for monitor in (ssh, web, backend): monitor.add_contacts(email, boxcar) # Sync configuration to Uptime Robot config.sync()
Run the script to sync configuration.
- email and boxcar contacts;
- keyword and port monitors.
Pull requests extending supported types of contacts or monitors are very welcome.
If you need to use contact types which are not supported by the
newAlertContact method of Uptime Robot API (for example, HipChat or Slack),
you can create the contact manually in the web UI, define it in your
configuration file by calling the
UptimeRobot.contact() method directly and
then use that contact in
config = urconf.UptimeRobot("api-key") hipchat = config.contact(type=10, value="123", friendlyname="Hipchat") config.port_monitor("ssh1", "ssh1.example.com", 22).add_contacts(hipchat)
Since uptimerobot API does not support modifying contacts, when contact
modification is detected,
urconf has to remove the old contact and re-add
it. This means that e-mail contacts have to be re-verified manually again.
- refer to API documentation <https://uptimerobot.com/api> while implementing additional functionality;
toxto run the tests in Python 2.7 and 3.4 environments;
docs/to build documentation in HTML. It can be viewed in
urconf is licensed under the MIT license.