我们有一个 EC2 实例 (Ubuntu),其中有一些基于 Java 的应用程序,最近我们遇到了高 CPU 利用率峰值,触发了我们的一个 Cloudwatch 警报。当我们进入服务器查看 CPU 利用率时,情况已经平静下来。
我们希望在警报电子邮件中看到正在运行的进程列表及其在警报发生时的 CPU 利用率(%)。这可能吗?
答案1
回答你的问题,答案是否定的。你无法配置 CloudWatch 以在达到阈值时列出服务器上的进程。你必须使用其他软件来实现这一点。CloudWatch 仅记录指标,例如,如果你想知道有多少进程正在运行,那么你可以配置 CloudWatch 来监控它。
答案2
我建议您尝试使用进程记帐并运行 atop 以每 10 分钟(默认)收集一次系统数据快照,或者如果您需要更好的分辨率则减少 5 分钟。
apt-get install atop acct
然后,您可以使用以下语法轻松检查某个时刻发生了什么
atop -r atop.log.file -b 00:00 -e 00:05
上面的例子将向你展示 00:00 到 00:05 之间系统使用情况快照
答案3
我没有做过类似的事情的经验,但理论上,可以使用现有的构建块来实现:
CloudWatch -> SNS -> HTTP/HTTPS -> homebrew webapp -> collect data and email it
- 设置您的 CloudWatch 警报,以便它在警报响起时将 SNS 消息发布到主题。
- 在您的 EC2 实例上运行一个 web 应用程序,当访问特定地址时,它会收集正在运行的进程列表并通过电子邮件发送。
- 使用 Web 应用的终端节点添加对 SNS 主题的订阅。您可以选择 HTTP 或 HTTPS 作为协议。
您可以将此与建议结合起来使用atop
并配置您的 web 应用程序来发送最近的 N 分钟输出。