Sensu替代(?)在服务器上定义警报阈值(不受监控的客户端)

问题/ TLDR;

是否有Sensu-alternative(即基于RabbitMQ的操作系统监控代理/服务器),在中央监控服务器上定义其警报阈值,而不是在受监视的客户机服务器上(如Sensu和Nagios)?

RabbitMQ是必需的,所以没有Zabbix等人,恐怕。

背景:

我有一个很大的环境(Windows和RHEL),我无法安装编排工具(Puppet等),因此安装的服务应该保持在最低限度。

我正在研究是否可以开发一个收集系统信息的单一代理,将日志传递到Logstash并报告资源消耗情况。 它将所有这些值推送到RabbitMQ,然后Logstash可以订阅日志,监视服务可以订阅资源度量(并从中创build警报),CMDB系统可以订阅系统信息等。

但是,我只想接收关于资源消耗的信息并在监视服务器上创build警报,而不必更改每个服务器上的阈值以更改警报阈值。

我不能是唯一的人find这样的代理人有用…

澄清:

如果Sensu监控下的服务器磁盘空间不足,则Sensu代理会检查磁盘空间,并将其与服务器上定义的CRITICAL阈值进行比较,如果超过阈值,则通过RabbitMQ发送CRITICAL报警至中央监控服务器。 要更改没有Puppet或其他门槛,login到服务器是必需的(对吧?)

我想这样做的方式是,当监视代理程序检查其磁盘空间时,它只是通过RabbitMQ发送可用磁盘(或使用的磁盘和总等)的数量到中央服务器,然后将该值与阈值进行比较在中央服务器上定义,并在必要时发送警报。

如果需要更改阈值,则在中央服务器上更改该阈值,或者可以比较多个服务器中的多个值来创build警报。

虽然我理解与Nagios兼容的决定,但这是Sensu的主要问题。

如果不需要中央服务器 – >受监视的服务器通信,那也是可取的。 我认为可以在中央服务器向代理发送阈值的情况下做出一个混合,然后将代理运行为“本地”。 环境networking使得这个特别棘手。

感谢任何人可能有的想法!

使用开源组件,我会使用下面的组件(如果你确实需要通过RabbitMQ发送指标):

  1. 在客户端使用collectd将度量值通过AMQP插件发送到RabbitMQ
  2. 使用graphite-amqp-tools从RabbitMQ中获取消息并将其发送到Graphite

现在,您在Graphite中拥有指标,您可以查询它以获取资源消耗。 在我的$ WORK环境中,我们检查哪些查询了Graphite,并在Nagios服务器上设置了警报阈值。 但是现在你已经有了Graphite(有一个用于查询哪个可以返回graphics,json,csv和纯文本结果的http接口),只要可以查询Graphite就可以构build/使用任何东西。

可以在sensu监控服务器端定义阈值,请参阅http://samples.leanpub.com/sensumonitoringandmetrics-sample.pdf的第9页(但要确保safe_mode = false,如果客户端在服务器上的定义不完全匹配客户端,请参阅第12页)

如果我理解正确,你只需要将数据推送到RabbitMQ。 那么关于如何将报告的数据推送到RabbitMQ不是话题?

也许你可以使用几个选项:

  • 无代理监控 – 您可以使用旧的(好的)snmp并服务器parsing其数据。 有很多工具可以做到,然后你可以将它转发到任何你想要的地方。

  • 基于代理的监控 – 您可以使用cfengine(可以检查承诺(从中央服务器提取)或只能报告文件系统的状态,然后parsing其数据)。

是的,这正是dataloop.io正在做的。 像Sensu一样,它使用基于队列的体系结构来实现实时指标和简单的configuration,但是警报可以在服务器端进行configuration,而不仅仅是像Nagios / Sensu这样的脚本。

Sensu也需要你安装Graphite等其他东西来获取graphics,所以安装起来不是很容易。