【问题标题】:Process count on remote machines on AWSAWS 上远程计算机上的进程计数
【发布时间】:2014-03-29 13:11:52
【问题描述】:

我正在为在 Amazon EC2 实例上运行的应用程序设计一个 Auto Scaling 系统。应用程序从 SQS 读取消息并处理它们。

Auto Scaling 系统将监控两件事:

  1. SQS 中的消息数,
  2. 所有 EC2 机器上运行的进程总数。

例如,如果 SQS 中的消息数量超过 3000,我希望系统自动扩展,创建一个新的 EC2 实例,在其上部署代码,并且每当消息数量低于 2000 时,我希望系统终止一个 EC2 实例.

我正在使用 Ruby 和 capistrano 进行此操作。 我的问题是:

我无法找到一种方法来确定在所有 EC2 机器上运行的进程数并将该数字保存在变量中。你能帮帮我吗?

【问题讨论】:

    标签: ruby amazon-web-services process amazon-ec2 count


    【解决方案1】:

    您可能希望利用 cron 和 CloudWatch API 将数字手动推送到 CloudWatch,作为自动扩展组策略的一部分。数字是指每个实例的进程数ps aux | grep your_process | wc -l

    CloudWatch 将允许您为该手动指标设置警报,该指标由所有正在运行的实例或自动扩展组中的 nr 个进程的 SUM 聚合。

    让你开始的东西:

    手动推送 RAM 内存指标: http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/mon-scripts-perl.html

    还有一个: http://aws.typepad.com/aws/2011/05/amazon-cloudwatch-user-defined-metrics.html

    对于内存来说,它看起来很简单,因为亚马逊已经为此提供了脚本。对于流程,您可能需要深入研究这些脚本或阅读官方 API 文档

    编辑:

    如果您现在担心监视系统中的单点故障,并且您有一个服务器列表,则最好从远程服务器并行检查它们:

    rm ~/count.log
    
    # SSH in parallel
    for ROW in `cat ~/ListofIP.txt`
    do
        IP=`echo ${ROW} | sed 's/\./ /g' | awk '{print $1}'`
        ssh -i /path/to/keyfile root@${IP} "ps -ef | grep process_name.rb | grep -v grep | wc -l" >> ~/count.log &
    done
    
    # Wait for totals
    while [ ! `wc -l ~/ListofIP.txt` -eq `wc -l ~/count.log` ]
    do
      wait 1
    done
    
    # Sum up numbers from ~/count.log
    # Push TO CloudWatch
    

    【讨论】:

    • +1。我只是补充一点,您可以从监控实例(通过 rsh)远程执行 ps,因此您不必更改环境中的现有实例。
    • 感谢您的回答。 iGilli,你在说这个吗:count = count+ `ssh #{@user}@#{server} ps -ef | grep .rb | grep -v grep | wc -l``。我有系统内运行的所有 ec2 实例的 IP 地址。您认为这种方法有什么问题吗?
    • 这取决于监控的重要性。如果远程服务器(你的 rsh 所在的那个)死了怎么办?这是单点故障。但是,如果您不想更新您的环境,那么请查看我的更新答案
    • @kyser 如果此答案解决了您的问题,请单击答案左侧的复选标记将其标记为“已接受”。这有助于网站用户快速看到您的问题已得到解决,并奖励您和回答者少量的声誉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多