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


12

问候,

我想问一下集体对分布式监视系统的看法和看法,您使用什么,知道哪些可能会打扰我?

要求非常复杂;

  • 没有单点故障。真。我很认真!需要能够容忍“主”和“工作者”的单/多节点故障,并且您可能会假设没有监视位置(“站点”)中有多个节点,或者它们在同一网络上。因此,这可能排除了传统的HA技术,例如DRBD或Keepalive。

  • 分布式逻辑,我想在多个数据中心和多个洲的多个网络中部署5个以上的节点。我希望从客户的角度看待我的网络和应用程序的“鸟瞰图”,当拥有50多个节点甚至500多个节点时,监控逻辑的加分点不会陷入困境。

  • 需要能够处理相当合理数量的主机/服务检查(如La Nagios),据估算,假设有1500-2500台主机,每台主机30项服务。如果增加更多的监视节点使您能够相对线性地扩展,那将是非常不错的,也许在5年的时间里,我可能希望监视5000个主机和每个主机40个服务!加上我上面关于“分布式逻辑”的注释,很高兴地说:

    • 在正常情况下,这些检查必须在$ n或n%的监视节点上运行。
    • 如果检测到故障,请在另外$ n或n%的节点上运行检查,将结果关联起来,然后使用它们来确定是否已满足发出警报的条件。
  • 图形和管理友好的功能。我们需要跟踪我们的SLA,并且了解我们的“高可用性”应用程序是否全天候24x7运行是很有用的。理想情况下,您建议的解决方案应该以最少的工作量“开箱即用”地报告。

  • 必须具有可靠的API或插件系统才能开发定制检查。

  • 需要对警报保持明智。我不想一定知道(通过SMS,凌晨3点!)一个监视节点认为我的核心路由器已关闭。我想知道,如果一个定义了它们的百分比同意的东西时髦是要去;)本质上就是我这里所说的“法定”的逻辑,或理智的分布式疯狂的应用程序!

我愿意考虑商业和开源两种选择,尽管我更愿意避免花费数百万英镑的软件:-)我也愿意接受可能没有任何东西可以解决所有这些问题,但是想问一下集体。

在考虑监视节点及其位置时,请记住,其中大多数将是随机ISP网络上的专用服务器,因此很大程度上超出了我的控制范围。依赖BGP提要和其他复杂网络滑稽动作的解决方案可能不适合。

我还应该指出,我过去曾经评估,部署或大量使用/定制了包括Nagios,Zabbix和朋友在内的大多数开放源代码版本-它们虽然不是很差的工具,但总体上却落伍了。分布式”方面,尤其是在我的问题和“智能”警报中讨论的逻辑方面。

很高兴阐明任何要求。欢呼的家伙和女友:-)


2
真的很奇怪,我正要问一个类似的问题。本周,我们收到了一些有关站点中断的客户投诉,但仅限于某些位置。我们的警报系统未检测到这些问题。我们联系了我们的提供商,他们确认其中一些存在骨干问题。所以我也对解决方案感兴趣。谢谢!
splattne

最终的解决方案是什么?
ewwhite 2012年

Answers:


4

并不是真正的答案,而是一些提示:

  • 一定要看一下有关nagios @ goldman sachs的演讲。他们面临您提到的问题-冗余,可伸缩性:成千上万台主机,以及自动配置生成。

  • 我有冗余的nagios设置,但规模更小-80台服务器,总共约1000个服务。一台专用的主服务器,一台从属服务器,每天有几次定期从主服务器提取配置。两台服务器都覆盖了对同一台计算机的监视,并且彼此之间进行了健康检查。我主要将nagios用作调用自定义产品特定检查的框架[一堆执行脚本的cron作业执行“人为流程控制”,结果固件记录到sql,nrpe插件固件检查最近x分钟内执行的那些操作的成功/失败。一切都很好。

  • 您的定额逻辑听起来不错-有点类似于我的“人为流程”-基本上继续进行,增强您的自我;-]。并让nrpe只是检查某种标志[或带有timestamp-status的sql db]情况如何。

  • 您可能需要构建一些层次结构以进行扩展-您将拥有一些节点,这些节点收集了其他节点的概述,并从第一点开始着眼于呈现。每次检查的默认nagios分叉在被监视的服务数量更多时就显得过大了。

回答一些问题:

  • 在我的情况下,受监视的环境是典型的主从设置[主sql或应用服务器+热备用],没有主-主设置。
  • 我的设置涉及“人工过滤因素”-解析器组,后者是短信通知的“备份”。已经有一批技术人员因为其他原因进行了24/5轮班,他们得到了“检查nagios邮件”作为附加任务,不会给他们带来太多负担。并且他们负责确保db-admins / it-ops / app-admins实际起床并修复问题;-]
  • 我听说过有关zabbix的很多好处-用于警告和绘制趋势,但从未使用过。对我而言,munin可以解决问题,我已经破解了简单的nagios插件,以检查munin服务器列表上是否有“红色”(关键)颜色-只是另外一项检查。您还可以从munin rrd文件中读取值,以减少发送到受监视机器的查询数量。

1
@astinus-对于明智的警报,我使用了自定义通知脚本。我不是依靠邮件/寻呼机通知的nagios,而是将消息存储到fifo并让消费者根据自定义逻辑调度消息(基于非常灵活的呼叫调度等),此外每小时还限制了一定数量的msg,因此,短时间内不会收到50个短信。我在更大范围内看到了类似的方法-nagios只是骨架,人们围绕着它编写脚本,并且实际上越来越少地使用它的功能。
pQd

1
关于层次结构,我目前所用的是一个完全“模块化”的Nagios设置,其中您的etc /目录包含一个“核心”配置,该配置在所有主机上共享(并且相同),然后在etc / modules / $ NAME(即:邮件,Web,网络,DNS),可以在服务器之间100%移植。包含在cfg_dir =中)您将所有特定于模块的命令,插件以及所有内容都放入该目录。使> 1台服务器运行这些检查非常容易,因为您只是将模块复制到所需的
任意数量的

1
@ astinus#2。在我的情况下,配置复制master-> slave每6小时发生一次。如果主服务器刚刚死[停电等]-从服务器将向所有人发出有关主服务器已死亡的警报[服务器之间的交叉检查]。可以想象另一种情况-主节点由于配置错误而死亡。如果在配置同步到从站之前最多5分钟发生-将会有通知。如果只是在配置同步之前-不幸的是,我们最终没有监视系统。“谁来看守人”?好吧,也许还有另一种非常简单的方法。
pQd

1
@pQd-有趣的是,我同意在自定义通知脚本中实现逻辑可能是可行的方法。但是,要避免来自2台以上主机的重复通知,当您说有50台监视主机,并且我还没有看到任何人(在公共场所)将其共享逻辑放入适当的“消息”传递系统(如Rabbit或Amazon)时,这非常棘手。 SQS。
nixgeek

1
在我的案例中,@ astinus#3是“ iso osi模型”的“第8级”解决方案:主要nagios向正在通话的人发送短信,并向24/5“解析器组”发送邮件,而第二个nagios仅发送“解析程序组”。由该组负责在升级之前过滤重复项;
pQd

1

您所要求的听起来很像Shinken为Nagios做的。

Shinken是Nagios的改写。

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

这应该值得深思。

干杯

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.