Vamos resumir o que cada um desses programas faz -
-
Nagios reúne dados por alguma combinação de execução de programas localmente, executando programas em sistemas remotos (via ssh ou nrpe), e recebendo dados de programas independentes (via nsca). Os nagios de dados coletados normalmente são apenas os valores 0, 1, 2 ou 3 para os estados ok, warning, critical e unknown (embora alguns plug-ins suportem o envio de métricas de desempenho). O Nagios atua nos dados enviando alertas. Há uma quantidade decente de configurabilidade em torno de quem recebe alertas para determinados itens em determinados momentos, reconhecendo alertas, escalonando-os, etc.
-
O Collectd reúne as métricas do sistema e do aplicativo por meio de plug-ins que leem os dados em si (por exemplo, status do apache, uso da CPU) ou recebem dados de outros processos (por exemplo, clientes statsd e outras instâncias do collectd). O Collectd pode agregar ou filtrar os dados, se desejado. Ele pode então gravá-lo em disco (como arquivos csv ou rrd) ou enviá-lo pela rede através de vários protocolos (collectd, grafite, http, mongo, redis, riemann, amqp). Ele tem a capacidade de enviar alertas, mas é muito básico.
-
O servidor Sensu reúne dados por meio de uma combinação de dizer aos clientes sensu para executar comandos configurados no servidor (uma verificação) ou receber dados de comandos configurados no cliente (uma verificação independente). Os dados podem ser um estado como os usos do nagios ou uma métrica. Sensu pode alterar os dados que recebe via mutators. Em seguida, ele passa os dados para os manipuladores, o que pode fazer coisas como enviar alertas ou enviar os dados para algum lugar (por exemplo, grafite). O Sensu possui uma rica API para configuração on-the-fly.
Nagios e sensu são softwares comparáveis, mas o collectd não é. Você poderia imaginar usar o collectd para alimentar os dados do nagios via ncsa ou alimentar os dados do sensu via amqp, embora fazer um desses requereria escrever novos plugins para o collectd.