downtime/Documentation

Table of Contents

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)