如何通过内存监控EC2实例?

Gol*_*den 5 amazon-ec2 amazon-web-services amazon-cloudwatch

使用Cloudwatch,您可以通过多种标准监控您的EC2实例,例如网络使用情况,CPU使用率等等......

不幸的是,没有内存消耗指标.首先,出于好奇,我想知道,为什么?任何人都可以解释为什么可以监控CPU使用率,而不是内存使用情况?至少在我看来,这并不明显.

然后,我的实际问题:好的,鉴于Cloudwatch不允许监控EC2实例的内存使用情况 - 还有什么选择?如果例如正在使用> 80%的实例内存,我该如何设置警报?

dpo*_*tro 19

好吧,现在新的 CloudWatch 代理可以收集内存和磁盘使用等指标,请参阅文档。

有了它,您可以监控此类指标,但您需要在实例中安装配置代理。


小智 10

默认情况下,AWS Ec2 不提供内存指标。所以我们要单独安装cloud watch代理然后获取metrics

脚步:

  1. 从 s3 下载云手表代理

    sudo wget https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm

  2. 安装云观察代理

    sudo rpm -U ./amazon-cloudwatch-agent.rpm

  3. 我们需要编写一个配置文件,在其中指定需要放置的指标。

    sudo vi /opt/aws/amazon-cloudwatch-agent/bin/config.json

你需要将其插入到配置文件中

{
    "metrics": {
        "metrics_collected": {
            "mem": {
                "measurement": [
                    "mem_used_percent"
                ],
                "metrics_collection_interval": 30
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 然后指定指标后我们只需要启动云观察代理

    sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s

  2. 您可以去云观察页面测试一下该指标是否到来

查看:

Cloudwatch 控制台 --> 所有指标 --> 自定义命名空间 --> CW Agent --> 主机 --> 实例服务器的 ip

现在您可以查看内存使用情况并监控uage

AWS 文档:https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/download-cloudwatch-agent-commandline.html

  • 自定义命名空间是 **CWAgent**。如果您没有看到它,请确保您已将 Cloudwatch 策略添加到正在运行的实例 ([docs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-iam-roles-for -cloudwatch-agent.html))。您还可以检查日志以了解可能遇到的任何问题:````/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log``` 或````/var/log/amazon/亚马逊-cloudwatch-agent/亚马逊-cloudwatch-agent.log``` (3认同)

DF_*_*DF_ 6

内存和磁盘特定统计信息要求AWS在操作系统级别而不是主机级别进行监视,因此这是默认情况下将其保留的原因.它可能会在某个时候添加,但由于它已经在愿望清单上大约7年,我们可以假设它是一个非常低优先级的项目.

监视内存使用情况的推荐方法是在实例上使用自己的监视脚本创建自定义Cloudwatch指标.AWS已发布有关如何使用一组(不支持的)脚本在Linux实例上实现此目的的文档.

在您的实例发布自定义指标后,您将能够在CloudWatch中将警报附加到它们.

  • 可以说,几乎所有其他第三方解决方案都是开箱即用的。哦,Azure 和 GCP 各自的监控代理也这样做。AWS 对这个问题根本不予理睬。 (26认同)