downtime/Documentation
A lightweight and fully modular network monitoring package written in 100% pure Python.
This project is still in its early phase of development and should be considered alpha. But it might eventually evolve into some useble piece of software.
The main motivation for starting this project was that I just haven't found any lightweight and usable alternative. There obviously already exist a lot packages, but they are either bloated, ugly Perl hacks, or I just haven't found them.
Plugins
DNS
Query the SOA record of the specified domain from a nameserver and check that the server is authoritative for the domain.
Please note that this plugin requires PyDNS to be installed.
The DNS plugin can be used as a substitution for a ping plugin which is currently missing from the downtime distribution (mostly because sending icmp pings would require root privileges). Because DNS queries are very lightweight they can be used (with frequent intervals) to monitor host uptimes (if a DNS server is installed on the target host).
Parameters
- server: DNS server to query
- domain: DNS domain name
Example
service DNS, interval 10 min server cmeerw.net, domain cmeerw.net
HTTP
Request a page from an HTTP server and check the HTTP return code (must be >= 200 and < 300).
Parameters
- server: the server to connect to
- domain: host name written into HTTP "Host" header
- arg: path on the server
Example
service HTTP, interval 1 hour server cmeerw.org, domain cmeerw.org, arg "/"
LDAP
Connect to the LDAP server and issue an anonymous bind command.
Parameters
- server: LDAP server to connect to
Example
service LDAP, interval 30 min server ldap
Notes
Connects to the Notes server via Notes RPC and checks if the server name matches. Parameters
- server: hostname to connect to
- domain: Notes server name
Example
service Notes, interval 6 hours server notes.net, domain CN=web4/O=Web
OpenVPN
Checks the availability of an OpenVPN server
Parameters
- server: OpenVPN server
- domain: protocol: "TCP" or "UDP"
- arg: OpenVPN server port
Example
service OpenVPN, interval 1 hour server vpn.cmeerw.net, domain UDP, arg 1194
RBL
Checks if a server is listed in a RBL (realtime blackhole list).
Parameters:
- server: IP-address of mail server
- domain: DNS domain of RBL
Example:
service RBL, interval 1 hour domain multihop.dsbl.org server mail.cmeerw.org server edge.cmeerw.net
RDNS
Send a recursive DNS request to the specified DNS server and checks that a reasonable answer with the "recursion available" flag is returned.
Parameters
- server: recursive DNS server
- domain: hostname to resolve (default: .)
- arg: port (default: 53)
Example:
service RDNS, interval 5 min server localhost
RIP
Requests the routing table from the server/router via RIPv2.
Parameters
- server: router to request routing table from
Example
server router service RIP, interval 1 hour
SMB
Connect and establish a NetBIOS session and send an SMB negotiation message.
Parameters
- server: server to connect to
- domain: SMB server name
Example
service SMB, interval 30 min server file, domain FILESRV
SMTP
Connect to the SMTP server and check that it is willing to accept for the specified domain (postmaster@domain.dom).
Parameters
- server: hostname to connect to</li>
- domain: domain to try to send mail to</li>
Example
service SMTP, interval 4 hours server edge.cmeerw.net, domain cmeerw.net
SNTP
Send a request to the NTP server (on port 123) and wait for a response.
Parameters
- server: SNTP server
Example
service SNTP, interval 5 min server time
Socks5
Connect to the Socks5 server on port 1080
Parameters
- server: server to connect to
Example
service Socks5, interval 5 min server proxy
SSH
Connect to the SSH server and wait for the SSH identification string.
TCP
Establish a TCP connection to the specified host/port.
Parameters
- server: server to connect to
- arg: port to connect to
Example
service TCP, interval 5 min server localhost, arg 80
uptimes
Report the system's uptime to the Uptimes Project.
Parameters
- server: server to send uptime information to
- arg: auth-key
Example
service uptimes, interval 4 min server uptimes.uptimes-project.org domain localhost, arg "51cbb9711de405x06a877z75404be027"
XMPP (Jabber)
Connect to the server's c2s port (5222) and open an XMPP stream. Also connect to the server's s2s port (5269) and open an XMPP stream.
Parameters
- server: server to connect to
- domain: Jabber/XMPP domain name
- args: XMPP client port (default: 5222), XMPP server port (default: 5269)
Example
service XMPP, interval 5 hours server cmeerw.net, domain cmeerw.net, args (5222, 5269)