Radical Designs is a full service web development worker owned and managed cooperative focused on the needs of non-profit and grassroots social change organizations. I started contracting with the group via a sub-contract to their hosting provider Electric Embers for a few SYMPA features and to extend a sympa unit test suite to provide coverage for their new features. Since then I have provided them directly with custom Drupal, Wordpress, and Systems Development. I've been responsible for the provisioning, monitoring [1, 2, 3], Database Administration, and security of their cloud infrastructure.

Real-time Vhost monitoring with Nagios and Proc::Daemon

The task of monitoring all vhosts on a web-server in addition to the host and service statuses is necessary because vhosts can fail at the application level where the web-server is operational. In a web development shop like Radical Designs vhosts come up and are taken down all of the time, SLAs mandate that operations staff need to make sure certain HTTP response codes are returned and pages appropriately redirected when new redirects are added. Operations staff need to make sure specific vhosts and urls on those vhosts return specific content and assure all of these do not overwhelm the target web servers or Nagios. At Radical Designs we wanted the update status of web applications associated with vhosts integrated into Nagios. is capable of polling web servers for their current list of vhosts, vhost alias, comments that act as monitoring directives, and web application type and update status.

Wordpress trigger for Nagios on-call

Radical Designs needed a tool to update their rotating on-call list each month. The were already making use of WordPress for their internal documentation. To tie the two together A script was written to log into the WordPress site, parse a contact list, and then rotate and update the on-call list from the WordPress blog page managed by staff to the Nagios contact config. The on-call rotation was triggered throughout the day (in case a schedule was swapped by updating the WordPress page) via Cron.