For simple "server up/down" checks use fping. If you want to check the services themselves, you might want to check the various Net::* modules on CPAN. But actually, you probably want to use one of mon (written in Perl I think), Big Brother or NetSaint - no need to reinvent a well working wheel.
Since you've mentioned NetSaint. This is a quote from its website:
For those who have not heard, NetSaint is being renamed to Nagios. You can find the Nagios homepage at http://www.nagios.org. NetSaint is no longer actively being developed - all development is now being put into Nagios.