Monitoring your server with Monit
System Administration / June 12, 2016 • 2 min read
I run a couple of services on my server, some of them are web, teamspeak, irc and an openvpn server. I need to be notified if any of these services becomes unresponsive for some reason. This is where Monit comes in.
What is Monit?
Monit is a small Open Source utility for managing and monitoring Unix systems. Monit conducts automatic maintenance and repair and can execute meaningful causal actions in error situations.
I use monit to monitor all my services and alert me via email if any service does not respond. For example, this is my monit configuration file for monitoring my web server:
check host dubell.io with address dubell.io every 20 cycles if failed host dubell.io port 443 protocol https status = 200 then alert
This config file informs monit to check my website every 10 minutes and raise an alert if the HTTP status is not 200. An alert message looks like this:
Connection failed Service dubell.io Date: Sun, 12 Jun 2016 21:03:16 Action: alert Host: dubellio Description: failed protocol test [HTTP] at [dubell.io]:443 [TCPSSL/IP] -- HTTP error: Server returned status 502 Your faithful employee, Monit
Monit will also inform you when a service starts responding again:
Connection succeeded Service dubell.io Date: Sun, 12 Jun 2016 21:04:19 Action: alert Host: dubellio Description: connection succeeded to [dubell.io]:443 [TCPSSL/IP] Your faithful employee, Monit
If you would like to monitor your own teamspeak server, you could do something like this:
check host youteamspeak.com with address 192.168.0.1 if failed port 9987 type udp then alert
If the teamspeak server does not respond using UDP packets on port 9987, raise an alert.
What’s great about Monit is that you can also specify what to do in the event of a crashed service. You can program monit to restart services or execute a specific program.
In the following example we use udp for connection testing to check if the name-server is running, if false then restart the service:
check process named with pidfile /var/run/named.pid start program = "/etc/init.d/named start" stop program = "/etc/init.d/named stop" if failed port 53 use type udp protocol dns then restart
Monitoring your services are a must for any serious applications or networks. Monit is a great and easy tool for making sure that servers and services are up and running.
Check out the monit documentation to find out what more you can do with Monit!