我目前正在使用 AWS Cloudwatch 来监控我的 EC2 服务器的基本指标。
但它缺乏诸如分区空间使用情况、内存可用情况等详细监控。
我应该安装并使用 Nagios 还是其他更好的替代方案?
(我想尽可能地实现自动化,但我不喜欢 Nagios...)
答案1
我有一个自己编写的简单脚本,用于检查 CPU 或内存是否达到我认为的高负载阈值。如果达到,该脚本将调用另一个脚本,该脚本将收集信息,以便我分析导致高负载的原因,并将其作为附件发送到我的电子邮件地址。下面是我的脚本示例,您可能需要考虑对其进行增强并将其应用于您的需求。
#!/bin/bash
GATHER_INFO=<SCRIPT_NAME_HERE>
CPU_LOAD=$(uptime | cut -d"," -f4 | cut -d":" -f2 | cut -d" " -f2 | sed -e "s/\.//g")
CPU_THRESHOLD=<VALUE_HERE>
MEMORY_USAGE=$(free -m | grep -i "buffers/cache" | awk '{ print $3 }')
MEMORY_THRESHOLD=<VALUE_HERE>
if [ $CPU_LOAD -gt $CPU_THRESHOLD ] ; then
$GATHER_INFO # I call another script here.
<SEND_INFORMATION_GATHERED_BY_EMAIL_HERE> # I use nail/mailx here.
exit 0
elif [ $MEMORY_USAGE -gt $MEMORY_THRESHOLD ] ; then
$GATHER_INFO # I call another script here.
<SEND_INFORMATION_GATHERED_BY_EMAIL_HERE> # I use nail/mailx here.
exit 0
fi
exit 0
请注意,外部脚本 $GATHER_INFO 依赖于系统中已安装的工具(例如 sysstat)。
我已经回答过类似的问题,位于这里供你参考。
我也用过穆宁它使用起来非常简单,但它的问题是 Munin 服务器上的磁盘 I/O 太高,如果你将它托管在其中一个 EC2 实例中,这是不切实际的,除非你只监控少数实例。
答案2
答案3
Cloudwatch 并非旨在高度灵活并满足您的所有监控需求。它涵盖了从基础到中级的监控,并且缺少企业监控系统中存在的许多功能(因为它不打算成为其中之一,它的重点不同)。
我个人建议您使用 ZenOSS(易于使用)或 Nagios(复杂的手动设置)
答案4
CopperEgg 可让您更详细地了解服务器的性能和运行情况。更详细的方面包括:- 更高分辨率的数据……这意味着每分钟最多可收集、分析和显示 10 次服务器指标,以及 - 更丰富的指标集……例如,实时和历史地查看每个实例上运行的顶级进程
在自动化方面,CopperEgg 提供 web-hook 以及与 Puppet 和 Chef 的集成。
完全披露:我的名字是 Scott Johnson,我在 CopperEgg 工作。CopperEgg 的服务托管在 Amazon EC2 上,我们使用所有工具来监控我们自己的服务。
最好的,斯科特