Cloudwatch自定义指标 - 内存利用率 - from-cron无效

时间:2017-01-18 23:08:45

标签: amazon-web-services memory amazon-ec2 cron amazon-cloudwatch

我设法按照列出here列出的所有步骤来设置aws脚本以获取系统中的内存使用情况并将其报告给cloudwatch。我遇到的问题是它没有被Cloudwatch控制台拿起。

当我这样做时

$ ~/aws-scripts-mon/mon-put-instance-data.pl --mem-util --verbose

该指标已成功发送至Cloudwatch。我在控制台中拿起它

但是当我尝试通过cron作业做同样的事情时,它并没有在Cloudwatch控制台中被选中。

要设置cron,我做了

$ sudo crontab -e

并添加了这一行

*/5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --mem-util --from-cron

保存并退出。当我检查/ var / log / syslog时,它表示该指标已成功发送,但出于某种原因,我没有在cloudwatch控制台中捕获它。我在这里缺少什么?

系统日志在下面以供参考(使用ip masked)

Jan 18 22:55:01 ip-xxx-xx-xx-xx CRON[22536]: (root) CMD (~/aws-scripts-mon/mon-put-instance-data.pl --mem-util  --from-cron)
Jan 18 22:55:01 ip-xxx-xx-xx-xx postfix/pickup[22530]: 7FF494449A: uid=0 from=<root>
Jan 18 22:55:01 ip-xxx-xx-xx-xx postfix/cleanup[22540]: 7FF494449A: message-id=<20170118225501.7FF494449A@ip-xxx-xx-xx-xx.localdomain>
Jan 18 22:55:01 ip-xxx-xx-xx-xx postfix/qmgr[21671]: 7FF494449A: from=<root@ip-xxx-xx-xx-xx.localdomain>, size=673, nrcpt=1 (queue active)
Jan 18 22:55:01 ip-xxx-xx-xx-xx postfix/local[22542]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
Jan 18 22:55:01 ip-xxx-xx-xx-xx postfix/local[22542]: 7FF494449A: to=<root@ip-xxx-xx-xx-xx.localdomain>, orig_to=<root>, relay=local, delay=0.03, delays=0.02/0/0/0, dsn=2.0.0, status=sent (delivered to mailbox)
Jan 18 22:55:01 ip-xxx-xx-xx-xx postfix/qmgr[21671]: 7FF494449A: removed

注意:cron作业中的绝对路径起到了作用。记录了各种打嗝here

1 个答案:

答案 0 :(得分:3)

Cron不使用登录shell的环境变量,因此~可能无法解析到当前用户的HOME目录,就像在手动测试中一样。尝试用绝对路径替换它(例如,/home/sarul/aws-script-mon/mon-put-instance-data.pl并查看它是否正确运行脚本。

如果您在用户环境或~/.aws/config而不是实例配置文件中使用本地AWS凭据,则可能需要在cron可访问的位置添加这些凭据。

另请注意,postfix syslog条目表示某种邮件正在排队 - 可能与cron调用的脚本报告的错误有关。