首先,感谢您在阅读和思考我在这里提到的这个问题时的耐心。
我在我的一个AWS EC2实例(Ubuntu 14.04)上遇到了一个独特的问题,实例只能通过http或ping无法访问。它也锁定了我的ssh访问。我每次都必须登录到aws控制台,然后手动重启实例。作为解决方案,我已经配置了cloudwatch监控以自动重启实例,并在系统检查失败的任何情况下向我发送通知电子邮件。
到目前为止,这么好。
现在,我真正想要的是实例无法访问的根本原因/原因。我认为这是一个内存问题。我已经完成了get-system-logs,这有点帮助。但是,无论如何,我可以配置cloudwatch在向我发送警报电子邮件时向我发送失败日志或类似内容。或者有什么办法,我可以用足够的日志信息提醒自己 - 例如:内存使用率为80%,网络无响应等 - 当我的实例无法访问时。我听说过交换工具,但我正在寻找更通用的东西,仅限于内存监控。
什么?任何人有任何想法?
答案 0 :(得分:0)
我会去旧skool并使用服务器上的脚本来登录文件
据推测(你在上面没有提到这个细节),系统上运行的某个特定程序会给你这个问题
通常系统程序将其PID存储在文件中。我们假设该文件是/var/run/nginx.pid。您可以针对特定系统进行此操作
编写脚本来读取PID并记录内存使用情况,例如将此文件添加为" / usr / local / bin / mymemory"
PID=`cat /var/run/crond.pid`
# the 3 fields are %mem, VSZ and RSS
DATA=`ps uhp $PID| awk '{print $4, $5, $6}'`
NOW=`date --rfc-3339=sec`
echo "$NOW $DATA" >> /var/log/memory.log
以root身份向crontab添加一行
* * * * * /usr/local/bin/mymemory.log
这将使每分钟内存的文件不断增长。我建议你每天登录一次并检查它,如果有趣的话下载它并删除它。 (在实际生产环境中可以使用日志轮换)
每次发生崩溃时,文件都应包含内存使用数据