使用cloudwatch确定linux服务是否正在运行

min*_*iao 6 service amazon-web-services amazon-cloudwatch

假设我有一个/etc/init/my_service.conf带内容服务的ec2实例

script
    exec my_exec
end script
Run Code Online (Sandbox Code Playgroud)

How can I monitor that ec2 instance such that if my_service stopped running I can act on it?

Bes*_*ces 16

您可以以"心跳"的形式将自定义指标发布到CloudWatch.

  • 通过服务器上的cron运行一个小脚本,检查进程列表以查看my_service是否正在运行,如果是,则put-metric-data调用CloudWatch.
  • 该指标可以像在CloudWatch中将数字"1"推送到您的自定义指标一样简单.
  • 设置CloudWatch警报,如果指标的平均值低于1,则会触发该警报
  • 使警报的周期> = cron运行的时间段,例如cron每5分钟运行一次,如果两个5分钟的时间段内平均值低于1,则发出警报警报.
  • 确保您还处理未公布度量标准的情况(例如,cron无法运行或整个机器死亡).如果缺少指标,您可能需要设置警报.(参见此处:AWS Cloudwatch心跳警报)
  • 请注意,自定义指标会为您的AWS账单增加50c的额外成本(对于一个指标而言不是很大 - 但如果您想推送数百/数千个指标,那么等式会发生巨大变化 - 即知道它不是免费的人们会期待)

请参阅此处了解如何发布自定义指标:http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/publishingMetrics.html