地理分布,容错和“智能”应用程序/主机监视系统

问候,

我想问一下集体对分布式监控系统的看法和看法,你用什么,你知道哪些可能会打我的箱子?

要求相当复杂;

  • 没有单点故障。 真。 我死了严重! 需要能够容忍单个/多个节点故障,既“主”和“工人”,你可能会认为没有监控位置(“网站”)有多个节点,或在同一networking。 因此这可能排除了传统的HA技术,如DRBD或Keepalive。

  • 分布式逻辑,我想在多个networking,多个数据中心和多个大陆上部署5个以上的节点。 我想从我的客户的angular度来看待我的networking和应用程序的“鸟眼”视图,当您拥有50多个节点,甚至500多个节点时,监控逻辑的积分不会陷入停滞状态。

  • 需要能够处理相当合理数量的主机/服务检查,la Nagios,假设每个主机有1500-2500个主机和30个服务。 如果增加更多的监控节点,可以相对线性地进行扩展,这可能是非常好的,也许在5年的时间里,我可能希望每个主机监控5000个主机和40个服务! 从上面关于“分布式逻辑”的说明中join,可以很好地说:

    • 在正常情况下,这些检查必须在$ n或n%的监视节点上运行。
    • 如果检测到故障,则运行另一个$ n或n%节点的检查,将结果关联起来,然后使用它们来决定是否满足条件来发出警报。
  • 图表和pipe理友好的function。 我们需要跟踪我们的SLA,并知道我们的“高可用性”应用程序是否全天候运行是有用的。 理想情况下,您提出的解决scheme应该尽可能less地使用“开箱即用”的方式进行报告。

  • 必须有一个坚实的API或插件系统来开发定制支票。

  • 需要对警报有所了解。 我不想一定知道(通过短信,在凌晨3点) 一个监控节点认为我的核心路由器已经closures。 我确实想知道他们中有一定比例的人是否同意某些事情正在发生;)我在这里谈论的基本上是“法定人数”的逻辑,或者是对分散的疯狂的适用。

我愿意考虑商业和开源的select,虽然我宁愿避开费用数百万英镑的软件:-)我也愿意接受,可能没有什么东西在那里打勾所有这些盒子,但想问集体那个。

在考虑监视节点及其位置时,请记住,其中大部分将是随机ISPnetworking上的专用服务器,因此在很大程度上超出了我的控制范围。 依靠BGP提供和其他复杂networking滑稽的解决scheme可能不适合。

我还应该指出,过去我曾经评估,部署过或大量使用/定制过大多数开放源代码风格,包括Nagios,Zabbix和朋友 – 它们确实不是坏的工具,但总的来说,它们是平坦的“分布式“方面,特别是关于我的问题和”智能“警报中讨论的逻辑。

很高兴澄清任何要点。 欢呼伙计和加尔斯:-)

不是一个真正的答案,而是一些指针:

  • 决定看看有关纳吉奥斯@高盛的介绍 。 他们遇到了您提到的问题 – 冗余,可扩展性:成千上万的主机,也自动生成configuration。

  • 我有冗余的nagios设置,但规模小得多 – 共有80台服务器,总计约1k个服务。 一台专用的主服务器,一台从服务器每天定期几次从主服务器抽取configuration。 两台服务器都覆盖了对同一台机器的监控,他们之间的健康交叉检查。 我使用nagios主要作为框架调用自定义产品特定的检查[一堆cron作业执行脚本做'人工stream程控制',结果软件logging到SQL,nrpe插件检查成功/失败的执行最后x分钟]。 所有的工作非常好。

  • 你的法定人数逻辑听起来不错 – 有点类似于我的“人为stream动” – 基本上继续下去,执行你的自我; – ]。 并有nrpe只是检查某种标志[或带有时间戳状态的SQL数据库]是怎么回事。

  • 你可能想要构build一些层次结构来扩展 – 你将有一些节点来收集其他节点的概述,从第一点看看演示文稿。 每个单一支票的默认nagios分支在监控服务的数量越多越好。

回答一些问题:

  • 在我的情况下,监控环境是典型的主从设置[主SQL或应用服务器+热备份],没有主 – 主。
  • 我的设置涉及“人为过滤因素” – parsing器组,谁是短信通知的“备份”。 已经有了一批技术人员,由于其他原因有24/5的class次,他们把“查阅邮件”作为额外的任务,不会给他们太多的负担。 他们负责确保db-admins / it-ops / app-admins ware确实起来并解决问题; – ]
  • 我听说很多关于zabbix的好东西 – 用于提醒和策划趋势,但从未使用过。 对于我来说, munin会诀窍,我已经入侵了简单的nagios插件,检查在munin服务器列表中是否有“任何红色”[关键]颜色 – 只是一个额外的检查。 您还可以从munin rrd文件读取值以减less发送到受监视计算机的查询数量。

你所要求的听起来很像Shinken为Nagios做的事情。

Shinken是一个Nagios重写。

  • 现代语言(Python)
  • 现代分布式编程框架(Pyro)
  • 监控领域(多租户),HA,备件
  • Livestatus API
  • Nagios插件兼容
  • 本地NRPE执行
  • 对象的业务关键性
  • 业务规则可以应用于对象状态(pipe理群集或池可用性)
  • 绘图可以使用基于Graphite或RRDtool的PNP4nagios
  • 稳定并在大环境中部署
  • 大型部署可以考虑将其与Splunk进行配对来进行报告,或者查看其中RRDtool不太适合的Graphite。

这应该是值得思考的。

干杯