A solução mais simples que encontrei durante todos esses anos para o mapeamento do uso de recursos e monitoramento foi munin e mon . Enquanto o primeiro se destaca no uso de gráficos ao longo de dias, semanas e anos, este último se destaca em monitoramento muito flexível, rastreamento de falhas (e recuperações) e envio de notificação. Ambos podem ser facilmente estendidos usando scripts de shell ou outros programas para mapear e monitorar virtualmente qualquer aspecto de seus sistemas.
Eles são ferramentas antigas que não fornecem interfaces point-and-click-y. Em outras palavras, você deve estar confortável em configurar editando arquivos de texto com o vi (1) (ou seu editor favorito). Por outro lado, são muito leves e consomem muito menos recursos do que ferramentas
Uma coisa importante a notar é que munin pode ser usado para monitorar os recursos que ele registra, e enviar notificações se os valores ficarem fora dos intervalos configurados. A notificação é feita através da execução de um script externo, para que você possa conectar seu próprio sistema de notificação (por padrão, basta enviar e-mails). É muito menos flexível que mon porque (IIRC) você pode configurar apenas um canal de notificação para todos seus recursos monitorados. Isso contrasta com mon que permite criar tuplas ilimitadas (recurso, hora do dia, canal) . Mas se as suas necessidades de notificação não forem muito sofisticadas, usar munin pode ser tudo o que você precisa.
Por fim, mas não menos importante, essas ferramentas estão disponíveis em sistemas Debian, portanto, basta instalar o apt-get e você está quase pronto:
$ apt-get install mon
$ apt-get install munin # On your munin server
$ ssh monitored1.example.com apt-get install munin-node
$ ssh monitored2.example.com apt-get install munin-node