当您的服务器群不会随时间发生很大变化时,例如当您使用裸机托管时,经典的监控和指标收集解决方案(Nagios,Munin)效果很好。
但是,如果系统数量随时间变化很大,而且实际上变化很快,那么传统软件的设置和使用就会更加困难。例如,试图让 Nagios(监控)跟上快速发展的云基础设施可能会很麻烦。Munin(指标收集)也是如此。不仅仅是配置,而且信息传达给用户或显示的方式也不适合云。
有哪些可行的替代方案可以与云很好地配合使用?目标是收集和显示指标(类似于 Munin),并在某些指标超出范围或某些服务不可用时生成警报(类似于 Nagios),并以云友好的方式完成所有工作。
一些云提供商提供监控/指标收集服务,但并非总是如此,如果您使用多个提供商,您不希望过于依赖单个供应商。因此需要独立于提供商的解决方案。
编辑:我以一般的方式提出这个问题 - 不限于任何给定的云基础设施(如OpenStack),而是在使用任意云提供商的一般情况下。
答案1
对于寿命较短或基础设施经常变化的系统,我使用两种不同的工具来处理监控。我添加了一条评论,询问哪些指标对您最重要,看起来您正在寻找基本的“什么时候发生了什么?“监控统计数据并发出一些警报……
随着系统和硬件通过云服务和虚拟化越来越抽象,一些传统的监控工具变得不那么有用,因为您可能不关心物理硬件资源和健康状况。应用程序和虚拟资源(从虚拟机/实例/容器的角度来看)才是最重要的。
下面给出的两个示例都是完全不干预的,也是我环境中的默认设置。借助 Puppet,我可以确保所有系统都在捕获和报告其性能。
选择 #1 -新遗物
New Relic 监控是基于代理的,很容易融入配置管理系统。就我而言,我部署的每台服务器都会有一个Puppetized New Relic 配置,在我的 New Relic 帐户中注册,安装后大约 30-60 秒即可在监控仪表板上使用。主机通过标准端口推送数据,因此这在各个环境中都能很好地运行。系统可以在拆卸时自行取消注册。
主要优点是 60 秒粒度、实时仪表板/信息亭视图,自由的用于服务器监控,并且以最终用户和客户可以接受的方式保持干净和美观。
Monit 对于应用程序和基本系统监控来说非常方便。Monit 是一个代理,可以通过本机操作系统包管理轻松安装在目标系统上。它可以定制以监控自定义应用程序及其相关参数,并根据这些指标采取行动。M/Monit 为 Monit 检查增加了一定程度的集中化,并允许您聚合数据以进行分析和轻量级绘图。
由于是基于代理的,因此也可以轻松地以自动化方式将配置推送到主机。我还为此使用了 Puppet,并尝试了一些创造性的方法来构建配置文件。初始化后,新服务器将通过 http/https 端口向中央 M/Monit 守护程序注册,因此防火墙和多个位置的监控不是问题。
答案2
我实际上并不确定这是否可以回答,因为云系统是如此多样化(我实际上将其标记为太广泛),但我的想法如下。
就系统指标而言,您需要在服务器上安装一个代理,将指标推送到中央收集端点,以确保自动添加新服务器并修剪旧服务器或在终止时停止传输指标。
你可以自己开发(但这也会带来一个潜在的困境,即使用云基础设施监控云基础设施 - 如果亚马逊决定淘汰你的 collectd 服务器,会发生什么情况?),或者你可以使用多家第三方托管提供商(StackDriver,新Relic,边界,托管石墨仅举几例 – SaaS 解决方案通常与 IaaS 平台齐头并进)。
当然,你也可以在自己的云基础设施中管理自己的 Nagios 服务器,例如Puppet 使用导出的资源可以使这变得非常容易——如果您使用云技术,您至少应该已经使用某种自动化工具。
如果您需要自上而下的基础设施监控/警报平台,NewRelic 和 StackDriver 都具有此功能,至少对于亚马逊云而言,并且可以插入 PagerDuty 等通知机制 - 到目前为止,我还不知道全球是否存在“一揽子解决方案”。
答案3
如果您谈论的是云标准软件(又名 Openstack),那么其组件是众所周知的。
要在云规模上收集历史数据:https://wiki.openstack.org/wiki/Ceilometer
监控 - sensu
编辑:
Ceilometer 是 openstack 专用的,而 sensu 是一个通用的监控框架。此外,collectd 是一个相当标准的指标收集系统,您可以将其输入到 cacti 或 graphite 中,以生成趋势图。如果想要更强大的功能,您可以加入一个报告服务器,比如 Jasper Reports,但您必须自己做 CTL。简而言之,有很多选择,这个问题确实太宽泛了,无法简明扼要地回答。