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

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

问候,

我想询问大家对分布式监控系统的意见和看法,你们使用什么,以及你们知道哪些可能符合我的要求?

要求相当复杂;

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

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

  • 需要能够处理相当合理数量的主机/服务检查,就像 Nagios 一样,大概假设有 1500-2500 台主机和每台主机 30 个服务。如果添加更多监控节点可以让你相对线性地扩展,那就太好了,也许 5 年后我可能会希望监控 5000 台主机和每台主机 40 个服务!从我上面关于“分布式逻辑”的注释中补充一点,我会说:

    • 正常情况下,这些检查必须在$n或者n%的监控节点上运行。
    • 如果检测到故障,则对另外 $n 或 n% 的节点运行检查,关联结果,然后使用它们来决定是否满足发出警报的标准。
  • 图表和管理友好功能。我们需要跟踪我们的 SLA,了解我们的“高可用性”应用程序是否全天候运行是相当有用的。理想情况下,您提出的解决方案应该以最少的麻烦实现“开箱即用”的报告。

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

  • 需要对警报保持理智。我并不想(凌晨 3 点通过短信)知道监控节点认为我的核心路由器已关闭。我想知道其中有多少比例同意一些有趣的事情正在发生 ;) 本质上我在这里谈论的是“法定人数”逻辑,或者将理智应用于分布式疯狂!

我愿意考虑商业和开源选项,尽管我更愿意避开价值数百万英镑的软件:-) 我还愿意接受可能没有任何东西可以满足所有这些要求,但想问一下集体。

在考虑监控节点及其放置时,请记住,其中大多数将是随机 ISP 网络上的专用服务器,因此基本上不在我的控制范围内。依赖 BGP 馈送和其他复杂网络操作的解决方案可能不适合。

我还应该指出,我过去曾评估、部署或大量使用/定制过大多数开源版本,包括 Nagios、Zabbix 和相关产品——它们确实不是糟糕的工具,但它们在整个“分布式”方面表现不佳,特别是关于我的问题中讨论的逻辑和“智能”警报。

很高兴澄清任何需要澄清的问题。干杯,伙计们 :-)

答案1

实际上不是一个答案,但是有一些指示:

  • 一定要看一下关于nagios@高盛. 他们面临您提到的问题 - 冗余、可扩展性:数千台主机,还有自动配置生成。

  • 我有冗余的 nagios 设置,但规模要小得多 - 总共 80 台服务器、~1k 个服务。一个专用的主服务器,一个从属服务器,每天几次定期从主服务器提取配置。两台服务器都涵盖对相同机器的监控,它们彼此之间进行健康状况交叉检查。我主要将 nagios 用作调用自定义产品特定检查的框架[一堆 cron 作业执行脚本进行“人工流控制”,结果记录到 sql,nrpe 插件检查过去 x 分钟内执行成功/失败的情况]。一切都运行良好。

  • 你的仲裁逻辑听起来不错 - 有点类似于我的‘人工流’ - 基本上继续,实现你自己;-]。并让 nrpe 检查某种标志[或带有时间戳状态的 sql db]事情进展如何。

  • 您可能需要构建一些层次结构来进行扩展 - 您将有一些节点来收集其他节点的概览,请从第一点查看演示。在监控服务数量较多的情况下,默认的 nagios 对每个单独检查进行分叉是过度的。

回答一些问题:

  • 在我的案例中,监控的环境是典型的主从设置[主 SQL 或应用服务器 + 热备用],没有主-主。
  • 我的设置涉及“人工过滤因素” - 解析器组是短信通知的“备份”。已经有一组付费技术人员,由于其他原因,他们每周 5 天、每天 24 小时轮班,他们得到“检查 nagios 邮件”作为额外任务,不会给他们带来太大负担。他们负责确保数据库管理员 / IT 操作 / 应用程序管理员能够真正起床并解决问题 ;-]
  • 我听到了很多关于扎比克斯- 用于警报和绘制趋势,但从未使用过。对我来说穆宁成功的秘诀是,我已经破解了简单的 nagios 插件,检查 munin 服务器列表中是否有“任何红色” [严重] 颜色 - 只是一个额外的检查。您也可以从 munin rrd 文件中读取值,以减少发送到受监控机器的查询数量。

答案2

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

Shinken 是 Nagios 的重写版。

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

这值得我们深思。

干杯

相关内容