Es cierto que monit puede hacer algunas pruebas básicas sobre una conexión TCP, aunque se le puede dar una vuelta de rosca. Todo esto tiene su propio capítulo en el manual, aunque podemos dar algunos ejemplos.

Además de TCP, monit También puede utilizar UDP y enviar solicitudes de ping. Aquí, por ejemplo,  cómo se puede probar un servidor de Quake Arena a través de UDP usando Monit:

check host quake3 with address 192.168.10.20
     if failed icmp  type echo
        for 3,5 cycles
     then alert
     if failed port 27970 type udp
        send "\0xFF\0xFF\0xFF\0xFFgetstatus"
        expect "sv_floodProtect|sv_maxPing"
     then alert

En este ejemplo monit primero hace ping al servidor para ver si es esta arriba. Si no, monit es lo suficientemente inteligente como para no molestarse en hacer otras pruebas, ya que asume que el servidor está caído. Esto nos ahorrará alertas innecesarias. Las características “send” y expect” son muy cómodas y como se puede ver, permiten enviar hasta paquetes personalizados. El parámetro “expect” soporta expresiones regulares cuando se esta comprobando la respuesta desde el servidor.

Otro punto a destacar es que monit puede probar páginas específicas de un servidor web, e incluso puede comprobar el MD5 de un archivo / página. En este ejemplo, monit es usado para bajar un archivo de la web del kernel de Linux y comprobar su suma MD5

check host kernel with address www.kernel.org
   if failed port 80 protocol http
      and request "/pub/linux/kernel/v2.6/linux-2.6.39.tar.bz2"
          with checksum f9d26b8393736b5dfad837bb13780786
   then alert

Un uso útil del anterior test, puede ser si permitimos descargas de paquetes de software u otro tipo de archivos, ya que en el peor caso de ataque, podemos comprobar el estado de la integridad de los mismos.

También es posible utilizar expresiones regulares para revisar el contenido de una página descargada de un servidor web, mas o menos como hacer un “grep” del resultado:

check host noticias_guerra with address clarin.com
   if failed url http://www.clarin.com/
      and content != "guerra"
   then alert

Un ejemplo medio exagerado, pero creo que se entiende bastante bien. El uso de la herramiente depende de las necesidades de cada uno, o como dicen por ahí: “la necesidad tiene cara de hereje” 🙂