我正在 EC2 上设置我的第一个生产实例,并希望确保我已设置好所有必要的监控。我想要监控三种不同类型的事物:
实例正在运行吗?如果底层硬件发生故障,EC2 实例可能会在无警告的情况下终止,而且据我所知,它们不会自动重新启动。因此,如果没有,请重新启动它。
UNIX 运行正常吗?这通常是关于 CPU 负载、磁盘空间等的问题。
网站有响应吗?如果没有,请重新启动。
我最初在云之外的物理服务器上设置了 Nagios,但它实际上只对第 2 项有帮助。它可以告诉我实例是否消失或网站是否没有响应,但据我所知,它无法执行任何命令来修复这种情况。
我在 Google 上搜索了这个问题,得到了很多选择 - Cacti、Monit、God、Ganglia,可能还有更多我现在忘记的。我没有时间研究它们。我知道亚马逊的 Cloudwatch,但它似乎没有做我的 Nagios 安装没有做的任何事情。
如果您已经实施了类似的做法,能否分享一下您的有效做法?
答案1
答案2
我已经使用 Puppet 解决了这个问题...我构建了自己的 AMI,上面安装了 Puppet 客户端,还有一个用户数据 SysV-init 脚本,该脚本在启动和启用 Puppet 进程之前设置主机名。
当 EC2 实例连接到 puppetmaster 时,它会传递其当前 IP 地址,然后我可以使用它来模板化 EC2 节点 Nagios 配置。当 IP 地址更改时,Nagios 配置文件会更新,并且 Puppet 会启动 Nagios 重启。
重新启动 EC2 实例需要在监控箱上安装 EC2 API 工具并设置一些功能来自动执行实例启动过程。我创建了一个 ruby 脚本来执行此操作并根据请求启动的主机设置用户数据内容。
答案3
免责声明,我是 Zenoss 社区经理。
Zenoss 将完全按照您的要求执行。
1)有一个专门用于监控EC2实例的Zenoss ZenPack:http://community.zenoss.org/docs/DOC-4423
2) 您还可以通过打开 SSH 并在操作系统级别监控实例。我已经通过这种方式在 EC2 上完成了 Debian、Ubuntu、CentOS 和 OpenSolaris。
3) 您可以通过进程、检查页面或合成点击来监控网站。为了响应 Zenoss 中的事件,您可以调用事件命令(如“/etc/init.d/apache restart”)来重新启动已关闭的 Web 服务器(或您可以编写脚本的任何其他命令)。
答案4
我只想补充一点:在监控网站正常运行时间方面,我的公司使用 Pingdom,老实说,我对他们感到非常满意。
他们甚至有 Android 和 iPhone 应用程序(运行非常好),可以在您的网站关闭时通知您。
坦白说,我并不是他们的员工。我只是一个热情的顾客 :)