我们如何使用cloudwatch监控流程

时间:2017-01-05 20:29:24

标签: amazon-web-services amazon-cloudwatch

我有一个在EC2上运行的Java进程我希望在进程停止或处于错误状态时在Cloudwatch中设置警报(例如,在过去10秒左右不向Cloudwatch发送心跳)。

最好的方法是什么?我认为我需要自定义指标,但没有找到专门监控流程的任何文档。

如果需要,我可以使用AWS SDK。

2 个答案:

答案 0 :(得分:2)

您可以使用psjps编写自定义脚本,并将该指标推送到Cloudwatch。 但是如果您正在寻找10秒粒度,那么Cloudwatch不是正确的解决方案,因为它的最小粒度为60秒。

来自:AWS Resource and Custom Metrics Monitoring

  

问:Amazon CloudWatch的数据的最小粒度是多少   收到并汇总?

     

CloudWatch支持的最小粒度为1分钟数据   点。在1分钟内收到并汇总了许多指标   间隔。有些是以3分钟或5分钟的间隔收到的。

虽然可以使用CLI和SDK创建警报,但我建议您使用AWS Cloudwatch仪表板。等待您的自定义指标显示在Cloudwatch信息中心中。在Cloudwatch中查看自定义指标后,单击CreateAlarm并选择指标。之后定义你的警报。 enter image description here 附加的图像显示应用程序作为指标。在您的情况下,它将是您选择称呼它的任何名称。在“操作”下,创建新通知并指定您的电子邮件。现在,如果计数在一段时间内低于1,您将收到警报。

答案 1 :(得分:0)

AWS自定义指标可用于发布程序的运行状况。

以下Java代码可用于发布心跳。使用自定义指标可以在CloudWatch中配置警报。

AmazonCloudWatch amazonCloudWatch = AmazonCloudWatchClientBuilder.standard().
                                            withEndpointConfiguration(new AwsClientBuilder.
                                                    EndpointConfiguration("monitoring.us-west-1.amazonaws.com","us-west-1")).build();
        PutMetricDataRequest putMetricDataRequest = new PutMetricDataRequest();
        putMetricDataRequest.setNamespace("CUSTOM/SQS");


        MetricDatum metricDatum1 = new MetricDatum().withMetricName("MessageCount").withDimensions(new Dimension().withName("Personalization").withValue("123"));
        metricDatum1.setValue(-1.00);
        metricDatum1.setUnit(StandardUnit.Count);
        putMetricDataRequest.getMetricData().add(metricDatum1);

        PutMetricDataResult result = amazonCloudWatch.putMetricData(putMetricDataRequest);