使用 CloudWatch 代理收集指标
您可以使用 CloudWatch 代理收集来自 Amazon EC2 实例和本地服务器的系统指标与日志文件。代理支持 Windows Server 和 Linux,并使您能够选择要收集的指标,包括子资源指标(如每 CPU 内核)。建议您使用代理(而不是监控脚本)收集指标和日志。有关更多信息,请参阅 Amazon CloudWatch 用户指南 中的使用 CloudWatch 代理从 Amazon EC2 实例和本地服务器中收集指标。
已弃用:使用 CloudWatch 监控脚本收集指标
监控脚本演示如何为 Amazon CloudWatch 生成和使用自定义指标。这些示例 Perl 脚本包含一个功能完备的示例,用于报告 Linux 实例的内存、交换文件和磁盘空间使用率指标。
在使用这些脚本时,将对自定义指标收取相应的标准 Amazon CloudWatch 使用费。有关更多信息,请参阅 Amazon CloudWatch 定价页。
目录
支持的系统
已使用以下系统在实例上测试监控脚本。不支持在任何其他操作系统上使用监控脚本。
- Amazon Linux 2
- Amazon Linux AMI 2014.09.2 和更高版本
- Red Hat Enterprise Linux 6.9 和 7.4
- SUSE Linux Enterprise Server 12
- Ubuntu Server 14.04 和 16.04
所需权限
确保脚本具有通过将 IAM 角色与您的实例关联来调用以下操作的权限:
- cloudwatch:PutMetricData
- cloudwatch:GetMetricStatistics
- cloudwatch:ListMetrics
- ec2:DescribeTags
有关更多信息,请参阅 使用 IAM 角色。
安装所需的程序包
对于 Linux 的某些版本,您必须先安装额外的 Perl 模块,然后才能使用监控脚本。
在 Amazon Linux 2 和 Amazon Linux AMI 上安装所需的程序包
- 登录您的实例。有关更多信息,请参阅 连接到您的 Linux 实例。
- 在命令提示符下,按如下方式安装程序包:
sudo yum install -y perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA.x86_64
在 Ubuntu 上安装所需的程序包
- 登录您的实例。有关更多信息,请参阅 连接到您的 Linux 实例。
- 在命令提示符下,按如下方式安装程序包:
sudo apt-get update sudo apt-get install unzip sudo apt-get install libwww-perl libdatetime-perl
在 Red Hat Enterprise Linux 7 上安装所需的程序包
- 登录您的实例。有关更多信息,请参阅 连接到您的 Linux 实例。
- 在命令提示符下,按如下方式安装程序包:
sudo yum install perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA --enablerepo="rhui-REGION-rhel-server-optional" -y sudo yum install zip unzip
在 Red Hat Enterprise Linux 6.9 上安装所需的程序包
- 登录您的实例。有关更多信息,请参阅 连接到您的 Linux 实例。
- 在命令提示符下,按如下方式安装程序包:
sudo yum install perl-DateTime perl-CPAN perl-Net-SSLeay perl-IO-Socket-SSL perl-Digest-SHA gcc -y sudo yum install zip unzip
- 以权限经过提升的用户身份运行 CPAN:
sudo cpan
出现提示时始终按 Enter,直到您看到以下提示:
cpan[1]>
- 在 CPAN 提示下,运行以下的每个命令:运行一个命令,该命令将进行安装,然后在您返回到 CPAN 提示时运行下一个命令。在系统提示继续完成该过程时像之前一样按 Enter:
cpan[1]> install YAML cpan[2]> install LWP::Protocol::https cpan[3]> install Sys::Syslog cpan[4]> install Switch
在 SUSE 上安装所需的程序包
- 登录您的实例。有关更多信息,请参阅 连接到您的 Linux 实例。
- 在运行 SUSE Linux Enterprise Server 12 的服务器上,您可能需要下载 perl-Switch 程序包。您可以使用以下命令来下载并安装此程序包:
wget http://download.opensuse.org/repositories/devel:/languages:/perl/SLE_12_SP3/noarch/perl-Switch-2.17-32.1.noarch.rpm sudo rpm -i perl-Switch-2.17-32.1.noarch.rpm
- 安装所需的程序包,如下所示:
sudo zypper install perl-Switch perl-DateTime sudo zypper install –y "perl(LWP::Protocol::https)"
安装监控脚本
下列步骤介绍如何在 EC2 Linux 实例上下载、解压缩和配置 CloudWatch 监控脚本。
要下载、安装和配置监控脚本
- 在命令提示符下,移至希望存储监控脚本的文件夹,并运行以下命令下载监控脚本:
curl https://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.2.zip -O
- 运行以下命令安装您下载的监控脚本:
unzip CloudWatchMonitoringScripts-1.2.2.zip && \ rm CloudWatchMonitoringScripts-1.2.2.zip && \ cd aws-scripts-mon
监控脚本的程序包中包含以下文件:
- CloudWatchClient.pm – 共享 Perl 模块,以简化从其他脚本调用 Amazon CloudWatch 的过程。
- mon-put-instance-data.pl – 收集 Amazon EC2 实例中的系统指标(内存、交换、磁盘空间利用率)并将其发送到 Amazon CloudWatch。
- mon-get-instance-stats.pl – 查询 Amazon CloudWatch 并显示在其上执行此脚本的 EC2 实例的最近利用率统计数据。
- awscreds.template – AWS 凭据的文件模板,储存您的访问密钥 ID 和私有访问密钥。
- LICENSE.txt – 包含 Apache 2.0 许可证的文本文件。
- NOTICE.txt – 版权声明。
mon-put-instance-data.pl
此脚本会收集当前系统的内存、交换和磁盘空间使用率数据。然后远程调用 Amazon CloudWatch,以自定义指标的形式报告收集到的数据。
参数详见另一篇
示例
以下示例假设您提供了一个 IAM 角色或 awscreds.conf 文件。否则,您必须使用 --aws-access-key-id 和 --aws-secret-key 参数为这些命令提供凭证。
以下示例执行简单的测试运行而不将数据发布到 CloudWatch。
./mon-put-instance-data.pl --mem-util --verify --verbose
以下示例收集所有可用内存指标并将其发送到 CloudWatch,将缓存和缓冲区内存计为“已用”
./mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --mem-used --mem-avail
以下示例收集 Auto Scaling 组的聚合指标并将其发送到 Amazon CloudWatch,但不报告单独的实例指标。
./mon-put-instance-data.pl --mem-util --mem-used --mem-avail --auto-scaling=only
以下示例收集实例类型、AMI ID 和区域的聚合指标并将其发送到 Amazon CloudWatch,但不报告单独的实例指标
./mon-put-instance-data.pl --mem-util --mem-used --mem-avail --aggregated=only
要为向 CloudWatch 报告的指标制定 cron 计划,请使用 crontab -e 命令开始编辑 crontab。添加下列命令,每五分钟将内存和磁盘空间使用率报告到 CloudWatch:
*/5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --disk-space-util --disk-path=/ --from-cron
如果脚本遇到错误,它会在系统日志中写下错误消息。
mon-get-instance-stats.pl
此脚本可在使用最近小时数提供的时间间隔内查询 CloudWatch 中有关内存、交换和磁盘空间指标的统计数据。将为对其执行此脚本的 Amazon EC2 实例提供该数据。
例
要获得最近 12 小时的使用率统计数据,请运行以下命令:
./mon-get-instance-stats.pl --recent-hours=12
以下为响应示例:
Instance metric statistics for the last 12 hours. CPU Utilization Average: 1.06%, Minimum: 0.00%, Maximum: 15.22% Memory Utilization Average: 6.84%, Minimum: 6.82%, Maximum: 6.89% Swap Utilization Average: N/A, Minimum: N/A, Maximum: N/A Disk Space Utilization on /dev/xvda1 mounted as / Average: 9.69%, Minimum: 9.69%, Maximum: 9.69%
在控制台中查看自定义指标
在成功运行 mon-put-instance-data.pl 脚本后,您可以在 Amazon CloudWatch 控制台中查看自定义指标。
要查看自定义指标
- 如前所述运行 mon-put-instance-data.pl。
- 通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/。
- 选择 View Metrics。
- 对于 Viewing,由脚本发布的自定义指标带有前缀 System/Linux。
故障排除
CloudWatchClient.pm 模块在本地缓存实例元数据。如果您从运行监控脚本的实例中创建 AMI,在缓存 TTL (默认值:6 小时;对于 Auto Scaling 组为 24 小时) 内从此 AMI 启动的任何实例都将使用原始实例的实例 ID 发送指标。缓存 TTL 时间段过后,脚本会检索新数据,监控脚本将使用当前实例的实例 ID。要立即更正此问题,请使用以下命令删除缓存数据:
rm /var/tmp/aws-mon/instance-id