更详细的 EC2 实例监控?

更详细的 EC2 实例监控?

我目前正在使用 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

Cloudwatch 默认提供基本指标。您可以根据需要添加自定义和详细指标(但您最多只能添加 10 个免费指标)。

对于您提供的两个示例(磁盘空间和已用内存),设置 Cloudwatch 非常简单。本质上,您需要:一个通过 cron 运行的脚本,它将收集数据并将自定义指标记录到 cloudwatch(例如aws-缺少工具或者此论坛帖子)。

除此之外,这实际上取决于你想做什么。如果以上内容满足您的需求,则无需研究更复杂的解决方案。此外,根据您对“自动化”的定义,cloudwatch 可以更好地集成到 AWS 的其余部分,这将使您在许多情况下更轻松地进行控制(例如启动新实例)。

答案3

Cloudwatch 并非旨在高度灵活并满足您的所有监控需求。它涵盖了从基础到中级的监控,并且缺少企业监控系统中存在的许多功能(因为它不打算成为其中之一,它的重点不同)。

我个人建议您使用 ZenOSS(易于使用)或 Nagios(复杂的手动设置)

答案4

CopperEgg 可让您更详细地了解服务器的性能和运行情况。更详细的方面包括:- 更高分辨率的数据……这意味着每分钟最多可收集、分析和显示 10 次服务器指标,以及 - 更丰富的指标集……例如,实时和历史地查看每个实例上运行的顶级进程

在自动化方面,CopperEgg 提供 web-hook 以及与 Puppet 和 Chef 的集成。

完全披露:我的名字是 Scott Johnson,我在 CopperEgg 工作。CopperEgg 的服务托管在 Amazon EC2 上,我们使用所有工具来监控我们自己的服务。

最好的,斯科特

相关内容