Kyle Brandt Asked: 2012-06-01 07:30:54 +0800 CST2012-06-01 07:30:54 +0800 CST 2012-06-01 07:30:54 +0800 CST 我在监控解决方案中寻找什么? 772 这是关于监控软件的规范问题。 还相关:您使用什么工具来监视您的服务器? 我需要监控我的服务器;在决定监控解决方案时我需要考虑什么? monitoring 5 个回答 Voted Best Answer Kyle Brandt 2012-06-01T07:30:54+08:002012-06-01T07:30:54+08:00 那里有很多监控解决方案。每个人都有自己的喜好,每个企业都有自己的需求,所以没有正确答案。但是,我可以帮助您弄清楚在选择监控解决方案时您可能想要寻找什么。 监控系统有什么用? 一般来说,监控系统有两个主要目的。首先是随着时间的推移收集和存储数据。例如,您可能想要收集 CPU 利用率并将其绘制成图表。第二个目的是在事物没有响应或不在特定阈值内时发出警报。例如,如果无法通过 ping 访问某个服务器或者 CPU 使用率超过某个百分比,您可能需要发出警报。还有一些日志监控系统,例如 Splunk,但我将它们视为独立的。 这两个主要角色有时出现在一个产品中,其他时候更常见的是有一个产品专用于每个目的。 监控系统的主要组件和功能是什么? 轮询器: 所有监控系统都需要某种轮询器来收集数据。并非所有数据都以相同的方式收集。您应该查看您的环境并决定您需要哪些数据以及如何收集这些数据。然后确保您选择的监控系统支持您的需求。一些常见的方法包括: SNMP(简单网络管理协议) WMI(Windows 管理规范) 运行脚本(例如,在被监视的机器上运行脚本或从使用自己的轮询方法的监视框本身运行脚本)。这些可以包括诸如 Bash 脚本、Perl 脚本、可执行文件和 Powershell 脚本之类的东西 基于代理的监控。有了这些,一个进程在每个客户端上运行并收集该数据。此数据要么被推送到监控服务器,要么监控服务器轮询代理。一些管理员对代理没有意见,其他人不喜欢它们,因为它会在被监控的服务器上留下更大的空间。 有针对性的 API(即 VMWare API 或运行 SQL 查询的能力) 如果您的环境中主要有一个操作系统或一个主要操作系统,则某些系统可能比其他系统有更多选项。 配置: 在监控系统中,往往会有很多对象重用。例如,您想在一堆服务器上监视某个应用程序,例如 Apache 或 IIS。或者您希望将某些阈值应用于服务器组。您可能还需要“随叫随到”的特定人群。因此,一个好的模板系统对于监控系统来说是至关重要的。 配置通常通过用户界面或文本文件完成。用户界面选项通常会更容易,但文本文件往往更适合重用和变量。因此,根据您的 IT 员工,您可能更喜欢简单而不是强大。 用户界面: 如今监控系统最常见的界面是网络界面。关于网络界面需要评估的一些事情是: 好的概述 好的详情页 速度(当您需要在危机模式下查找信息时,缓慢的界面可能会非常令人沮丧 感觉一般。您将在界面上花费大量时间,如果感觉笨拙,您的 IT 员工将不愿使用它 定制。每个组织都有某些重要的事情,以及其他不重要的事情。能够根据您的需要定制它很重要 警报引擎: 警报引擎必须灵活可靠。有许多不同的通知方式,包括: 短信 电子邮件 电话 其他类似 IM/Jabber 的东西 其他要寻找的功能是: 升级(如果其他人未确认或修复警报,则通知某人) 轮换 群组(某些群组需要通知某些事情) 重要的是要相信当出现问题时您会收到警报。这归结为两件事: 可靠的系统 无警告配置。在监控系统中,认为您应该收到警报的情况并不少见,但由于配置中的某些细节,警报从未被触发。 数据存储: 如果系统收集和存储数据(即包含图形的系统)而不是系统存储数据。例如,存储和图形的一个非常常见的实现是 RRD。 要从数据存储中寻找的一些功能是: 对数据的原始访问。这对于使用 Excel 之类的工具进行开发或创建自定义图形可能很有价值。 可扩展性。根据您收集的数据量,它可以快速加起来,如果您要收集很多数据,您需要确保它可以扩展。 图形库: 图形可用于快速识别趋势并根据历史为事物的当前状态提供上下文。一些包括趋势,这有助于在事情发生之前预测事情(即磁盘空间不足)。确保图表能够以清晰的方式为您提供您认为需要的信息。 访问控制: 如果您有一个大型组织,您可能需要访问控制,因为某些管理员应该只能调整某些事情。您可能还需要面向公众的仪表板。如果这很重要,您应该确保监控系统具有您需要的控件。 其它功能 报告: 提供良好报告的系统可以帮助您确定长期需要改进的地方。例如,它可以很好地回答诸如“什么系统宕机最多?”之类的问题。当你试图说服管理层在某些事情上花钱时,这可能很重要——商业就像确凿的证据。 特殊功能: 一些监控系统针对特定产品或比其他系统提供更多支持。例如,如果您需要监控的主要内容是 SQL 服务器,或者如果您大量使用 VMWare 产品,您应该了解这些产品的支持情况。 预定义的监控模板: 带有大量预定义模板(或拥有创建了许多模板的用户群)的系统可以节省大量时间。 发现: 如果你有一个大的或不断变化的环境。一些系统提供了通过 API 添加新系统或运行扫描以查找新服务器或组件的能力。 分布式监控: 如果您有多个位置要监控,在每个位置都有监控轮询器而不是许多独立系统通过 WAN 监控会很有帮助。 一些流行的监控系统 那里有很多监控系统。我们有一个关于这个老问题的总结列表。为了快速参考,我听到最多的是: Nagios 仙人掌 开放网络管理系统 太阳风 扎比克斯 各种基于云的监控系统 微软系统中心 这个还不流行,但是 Stack Exchange 已经开源了它的监控系统http://bosun.org 如何根据以上决定 我不能告诉你使用什么的原因是因为每个组织都有自己的需求。如果您想做出正确的选择,您应该仔细考虑上述所有组件并找出哪些功能对您的组织很重要。然后找到一个或多个声称可以提供您需要的系统并试用它们。其中一些花费很少,很多,或者是免费的。考虑到所有这些,您就可以做出选择。从我用过的来看,它们都远非完美,但至少你可以尝试得到合适的东西。 J Adams 2012-06-01T12:38:35+08:002012-06-01T12:38:35+08:00 区分监视和警报很有帮助。监控意味着收集数据并制作图表。警报意味着当服务器在半夜出现故障时向我发送短信。 Nagios 用于警报。Cacti 和 Munin 用于监控。其他产品结合了这两种功能。Zenoss 和 Zabbix 就是例子。 我首先要回答一些问题: 您需要监控服务器、网络设备、应用程序还是三者? 您可以使用哪些方法进行监控有限制吗?您可以在服务器上安装 NRPE 之类的监控客户端,还是使用 SNMP,或者两者兼而有之? 谁将使用图表,谁将使用警报?您希望最终结果是什么样的?界面的外观和感觉是否重要(业务人员会使用它,还是仅技术人员使用?) 您在时间、技能和硬件方面的资源是什么?您至少具备适度的脚本编写能力吗?您需要开箱即用的解决方案吗? 在我看来,警报和监控的首要规则应该是保持简单!一个组织的生死存亡取决于它如何发出警报和收集数据,而且在大多数情况下,它自己无论如何都会变得复杂。从基础开始,然后从那里开始构建。 mogsie 2012-08-15T05:00:21+08:002012-08-15T05:00:21+08:00 tl;博士 考虑一下您的软件提供的服务,在这些服务失败或这些服务失败的风险增加时发送警报。 服务等级协定 监控策略背后的理论是将监控和警报与某种服务级别协议联系起来。毕竟,您希望收到关于您正在赔钱的事实的警报,而不一定是到 nji0019.myserver.com 的 TCP 连接数量激增。有多种工具可以为您提供大量警报,定义警报之间的依赖关系,但其中许多检查与您提供给某人的服务并不直接相关。 违反服务 确定您提供的重要服务,例如为网站提供服务的能力,以及修改该网站的能力(例如某种 CMS)。应该检查那些(例如,通过监视您可以获取网页,并且可以)。这两项服务(此处使用大写 S)的失败应触发警报以通知您。 如果网站在合理的时间内做出响应很重要,那么这也应该触发警报。如果您愿意,可以说是“违反 SLA”。 风险增加 通常存在服务失败的固有风险,并且通常通过引入冗余来减轻风险,例如第二台服务器,或从属数据库,或额外的网卡...... 当冗余丢失时,服务仍然很好,但服务失败的风险就上升了。 这是触发警报的第二个主要原因;冗余消失(例如,第二台服务器死机),或者存在风险增加的迫在眉睫的危险(例如,磁盘只剩下 500Mb,或者磁盘趋势表明磁盘将在大约 5 小时内变满)。 所有这些指标呢? 但是 check_mk 给我每个主机 50-60 个支票,这些都是没有价值的吗? 不。所有这一切并不意味着您想放弃使用 check_mk 等获得的大量自动检查,而是意味着您应该尝试将每项检查归类为如果出现故障可能会影响的服务。 如果 /var/ 分区满了,什么服务会受到影响?如果 eth0 接口关闭,什么服务会受到影响?... 如果出站 TCP 连接被某些防火墙阻止?... 如果线程数超过 800?...如果数据库出现故障? 例子 您有 2 个 Web 服务器和一个数据库服务器,该服务器在您不拥有的负载平衡器(例如 ISP)后面为站点提供服务。您提供的服务是两台服务器上的 80 端口,它们具有巨大的缓存,可以在数据库停机(第三台服务器上的数据库)等情况下幸存下来。 在这种情况下,Web 服务器的完全故障不会导致站点关闭。发生的事情是冗余消失了,所以失败的风险就上升了。 那应该触发警报。 数据库的完全故障可能根本不会影响为站点提供服务的能力,因为缓存已调整到位;这不会影响为网站提供服务的服务,但它可能会影响不同的服务,即更新网站或接受订单...... 每个服务都有自己的服务级别,指定恢复服务或避免中断的重要性 敏捷 每次收到警报时,您应该执行以下操作之一: - 更改被监控的系统以解决导致警报的问题(例如更换驱动器或重新配置 logrotate 或其他) - 更改监控系统以避免警报被下次出现这种情况时发出。(例如,更改“disk free”的级别,使磁盘可以填满 90% 而不是仅仅 80%) 我自己的经历 我最熟悉 Nagios 及其冗长的配置,并且从此迷上了 Check-mk 的多站点。我最近了解到 check_mk 具有商业智能(自 1.11 起)的概念,这似乎与这种想法很吻合。您可以定义 nagios 中的检查是更大服务的一部分,并且具有将“服务”的状态定义为许多检查状态的函数的规则,聚合到最差或最佳状态。 Axel 2016-05-13T08:37:36+08:002016-05-13T08:37:36+08:00 公司在选择监控解决方案时忘记的最关键点之一是,它不仅仅解决眼前的运营问题,还涉及明天不可预见的问题!我的意思是,解决眼前的问题当然很重要,但相信我,在很多情况下,这种短视的策略并不能保证公司的生存。 市场上有许多出色的监控解决方案。列出一小组满足您要求的解决方案是一项艰巨而漫长的任务,而且,找到一个符合您预算的解决方案更加困难。有趣的部分是找到一个与您的现在和未来相一致的。并且没有评估过程可以检测到,这是经验+直觉+一个非常重要的因素:信任,这不是一件容易破解的事情。 根据经验,搜索并挖掘您入围的监控解决方案集的成功案例,特别是如果它影响到您所在行业的公司。向供应商询问他们的成功案例,甚至请求他们允许与他们的一位客户交谈。不惧怕这种情况的公司表明他们与客户有着真正的关系,而且他们不会隐瞒这一点,这在当今是极为罕见的。 Zabbix、Icinga、Pandora FMS、op5、Datadog、New Relic……它们都有起伏,但真正的问题是找到哪个更适合你的未来。 Svetoslav Stefanov 2012-06-02T09:43:14+08:002012-06-02T09:43:14+08:00 如果您正在考虑远程系统监控,那么寻找执行测试的实际位置可能是个好主意。连接问题已成为过去,如果您的硬件正在为特定区域的一个组提供服务,您可能希望确保您的资源在该特定位置可用。
那里有很多监控解决方案。每个人都有自己的喜好,每个企业都有自己的需求,所以没有正确答案。但是,我可以帮助您弄清楚在选择监控解决方案时您可能想要寻找什么。
监控系统有什么用?
一般来说,监控系统有两个主要目的。首先是随着时间的推移收集和存储数据。例如,您可能想要收集 CPU 利用率并将其绘制成图表。第二个目的是在事物没有响应或不在特定阈值内时发出警报。例如,如果无法通过 ping 访问某个服务器或者 CPU 使用率超过某个百分比,您可能需要发出警报。还有一些日志监控系统,例如 Splunk,但我将它们视为独立的。
这两个主要角色有时出现在一个产品中,其他时候更常见的是有一个产品专用于每个目的。
监控系统的主要组件和功能是什么?
轮询器:
所有监控系统都需要某种轮询器来收集数据。并非所有数据都以相同的方式收集。您应该查看您的环境并决定您需要哪些数据以及如何收集这些数据。然后确保您选择的监控系统支持您的需求。一些常见的方法包括:
如果您的环境中主要有一个操作系统或一个主要操作系统,则某些系统可能比其他系统有更多选项。
配置:
在监控系统中,往往会有很多对象重用。例如,您想在一堆服务器上监视某个应用程序,例如 Apache 或 IIS。或者您希望将某些阈值应用于服务器组。您可能还需要“随叫随到”的特定人群。因此,一个好的模板系统对于监控系统来说是至关重要的。
配置通常通过用户界面或文本文件完成。用户界面选项通常会更容易,但文本文件往往更适合重用和变量。因此,根据您的 IT 员工,您可能更喜欢简单而不是强大。
用户界面:
如今监控系统最常见的界面是网络界面。关于网络界面需要评估的一些事情是:
警报引擎:
警报引擎必须灵活可靠。有许多不同的通知方式,包括:
其他要寻找的功能是:
重要的是要相信当出现问题时您会收到警报。这归结为两件事:
数据存储:
如果系统收集和存储数据(即包含图形的系统)而不是系统存储数据。例如,存储和图形的一个非常常见的实现是 RRD。
要从数据存储中寻找的一些功能是:
图形库:
图形可用于快速识别趋势并根据历史为事物的当前状态提供上下文。一些包括趋势,这有助于在事情发生之前预测事情(即磁盘空间不足)。确保图表能够以清晰的方式为您提供您认为需要的信息。
访问控制:
如果您有一个大型组织,您可能需要访问控制,因为某些管理员应该只能调整某些事情。您可能还需要面向公众的仪表板。如果这很重要,您应该确保监控系统具有您需要的控件。
其它功能
报告:
提供良好报告的系统可以帮助您确定长期需要改进的地方。例如,它可以很好地回答诸如“什么系统宕机最多?”之类的问题。当你试图说服管理层在某些事情上花钱时,这可能很重要——商业就像确凿的证据。
特殊功能:
一些监控系统针对特定产品或比其他系统提供更多支持。例如,如果您需要监控的主要内容是 SQL 服务器,或者如果您大量使用 VMWare 产品,您应该了解这些产品的支持情况。
预定义的监控模板:
带有大量预定义模板(或拥有创建了许多模板的用户群)的系统可以节省大量时间。
发现:
如果你有一个大的或不断变化的环境。一些系统提供了通过 API 添加新系统或运行扫描以查找新服务器或组件的能力。
分布式监控:
如果您有多个位置要监控,在每个位置都有监控轮询器而不是许多独立系统通过 WAN 监控会很有帮助。
一些流行的监控系统
那里有很多监控系统。我们有一个关于这个老问题的总结列表。为了快速参考,我听到最多的是:
如何根据以上决定
我不能告诉你使用什么的原因是因为每个组织都有自己的需求。如果您想做出正确的选择,您应该仔细考虑上述所有组件并找出哪些功能对您的组织很重要。然后找到一个或多个声称可以提供您需要的系统并试用它们。其中一些花费很少,很多,或者是免费的。考虑到所有这些,您就可以做出选择。从我用过的来看,它们都远非完美,但至少你可以尝试得到合适的东西。
区分监视和警报很有帮助。监控意味着收集数据并制作图表。警报意味着当服务器在半夜出现故障时向我发送短信。
Nagios 用于警报。Cacti 和 Munin 用于监控。其他产品结合了这两种功能。Zenoss 和 Zabbix 就是例子。
我首先要回答一些问题:
您需要监控服务器、网络设备、应用程序还是三者?
您可以使用哪些方法进行监控有限制吗?您可以在服务器上安装 NRPE 之类的监控客户端,还是使用 SNMP,或者两者兼而有之?
谁将使用图表,谁将使用警报?您希望最终结果是什么样的?界面的外观和感觉是否重要(业务人员会使用它,还是仅技术人员使用?)
您在时间、技能和硬件方面的资源是什么?您至少具备适度的脚本编写能力吗?您需要开箱即用的解决方案吗?
在我看来,警报和监控的首要规则应该是保持简单!一个组织的生死存亡取决于它如何发出警报和收集数据,而且在大多数情况下,它自己无论如何都会变得复杂。从基础开始,然后从那里开始构建。
tl;博士
考虑一下您的软件提供的服务,在这些服务失败或这些服务失败的风险增加时发送警报。
服务等级协定
监控策略背后的理论是将监控和警报与某种服务级别协议联系起来。毕竟,您希望收到关于您正在赔钱的事实的警报,而不一定是到 nji0019.myserver.com 的 TCP 连接数量激增。有多种工具可以为您提供大量警报,定义警报之间的依赖关系,但其中许多检查与您提供给某人的服务并不直接相关。
违反服务
确定您提供的重要服务,例如为网站提供服务的能力,以及修改该网站的能力(例如某种 CMS)。应该检查那些(例如,通过监视您可以获取网页,并且可以)。这两项服务(此处使用大写 S)的失败应触发警报以通知您。
如果网站在合理的时间内做出响应很重要,那么这也应该触发警报。如果您愿意,可以说是“违反 SLA”。
风险增加
通常存在服务失败的固有风险,并且通常通过引入冗余来减轻风险,例如第二台服务器,或从属数据库,或额外的网卡......
当冗余丢失时,服务仍然很好,但服务失败的风险就上升了。
这是触发警报的第二个主要原因;冗余消失(例如,第二台服务器死机),或者存在风险增加的迫在眉睫的危险(例如,磁盘只剩下 500Mb,或者磁盘趋势表明磁盘将在大约 5 小时内变满)。
所有这些指标呢?
但是 check_mk 给我每个主机 50-60 个支票,这些都是没有价值的吗?
不。所有这一切并不意味着您想放弃使用 check_mk 等获得的大量自动检查,而是意味着您应该尝试将每项检查归类为如果出现故障可能会影响的服务。
如果 /var/ 分区满了,什么服务会受到影响?如果 eth0 接口关闭,什么服务会受到影响?... 如果出站 TCP 连接被某些防火墙阻止?... 如果线程数超过 800?...如果数据库出现故障?
例子
您有 2 个 Web 服务器和一个数据库服务器,该服务器在您不拥有的负载平衡器(例如 ISP)后面为站点提供服务。您提供的服务是两台服务器上的 80 端口,它们具有巨大的缓存,可以在数据库停机(第三台服务器上的数据库)等情况下幸存下来。
在这种情况下,Web 服务器的完全故障不会导致站点关闭。发生的事情是冗余消失了,所以失败的风险就上升了。 那应该触发警报。
数据库的完全故障可能根本不会影响为站点提供服务的能力,因为缓存已调整到位;这不会影响为网站提供服务的服务,但它可能会影响不同的服务,即更新网站或接受订单......
每个服务都有自己的服务级别,指定恢复服务或避免中断的重要性
敏捷
每次收到警报时,您应该执行以下操作之一: - 更改被监控的系统以解决导致警报的问题(例如更换驱动器或重新配置 logrotate 或其他) - 更改监控系统以避免警报被下次出现这种情况时发出。(例如,更改“disk free”的级别,使磁盘可以填满 90% 而不是仅仅 80%)
我自己的经历
我最熟悉 Nagios 及其冗长的配置,并且从此迷上了 Check-mk 的多站点。我最近了解到 check_mk 具有商业智能(自 1.11 起)的概念,这似乎与这种想法很吻合。您可以定义 nagios 中的检查是更大服务的一部分,并且具有将“服务”的状态定义为许多检查状态的函数的规则,聚合到最差或最佳状态。
公司在选择监控解决方案时忘记的最关键点之一是,它不仅仅解决眼前的运营问题,还涉及明天不可预见的问题!我的意思是,解决眼前的问题当然很重要,但相信我,在很多情况下,这种短视的策略并不能保证公司的生存。
市场上有许多出色的监控解决方案。列出一小组满足您要求的解决方案是一项艰巨而漫长的任务,而且,找到一个符合您预算的解决方案更加困难。有趣的部分是找到一个与您的现在和未来相一致的。并且没有评估过程可以检测到,这是经验+直觉+一个非常重要的因素:信任,这不是一件容易破解的事情。
根据经验,搜索并挖掘您入围的监控解决方案集的成功案例,特别是如果它影响到您所在行业的公司。向供应商询问他们的成功案例,甚至请求他们允许与他们的一位客户交谈。不惧怕这种情况的公司表明他们与客户有着真正的关系,而且他们不会隐瞒这一点,这在当今是极为罕见的。
Zabbix、Icinga、Pandora FMS、op5、Datadog、New Relic……它们都有起伏,但真正的问题是找到哪个更适合你的未来。
如果您正在考虑远程系统监控,那么寻找执行测试的实际位置可能是个好主意。连接问题已成为过去,如果您的硬件正在为特定区域的一个组提供服务,您可能希望确保您的资源在该特定位置可用。