使用 Java API 从 AWS Cloudwatch 获取指标:

问题描述 投票:0回答:2

我正在尝试使用 Java SDK 从 Amazon CloudWatch 获取指标。 我可以找到列出指标的示例。但只是找不到任何完整的示例来说明如何检索给定时间段内指标的值。

任何指点将不胜感激。

谢谢

amazon-web-services amazon-cloudwatch
2个回答
1
投票

您看过 GetMetricDataRequest 文档吗?

应该是直截了当的。沿着这些思路。 (注意,我还没有测试代码)。

        final GetMetricDataRequest getMetricDataRequest = new GetMetricDataRequest();
        final MetricDataQuery metricDataQuery = new MetricDataQuery();
        metricDataQuery.setId("METRIC_ID");
        final MetricStat metricStat = new MetricStat();
        final Metric metric = new Metric();
        final Dimension dimension = new Dimension();
        nodeCountMetric.setNamespace(namespace);
        dimension.setName("DIMENSION_KEY");
        dimension.setValue("value");


        metric.setDimensions(Collections.singletonList(dimension));
        metric.setMetricName(metricName);
        metricStat.setMetric(metric);
        metricStat.setPeriod(SECONDS_60);
        metricStat.setStat(SAMPLE_COUNT_STATISTIC);
        metricDataQuery.setMetricStat(metricStat);
        getMetricDataRequest.setMetricDataQueries(Collections.singletonList(metricDataQuery));
        final Date endTime = new Date();
        getMetricDataRequest.setEndTime(endTime);
        getMetricDataRequest.setStartTime(new Date(endTime.getTime() - HOURS_3));

        final AmazonCloudWatch cw =
    AmazonCloudWatchClientBuilder.defaultClient();

        GetMetricDataResult metricData = cw.getMetricData(metricDataRequest);

0
投票
List<MetricDataQuery> metricDataQueries = new ArrayList<>();

String uuid = UUID.randomUUID().toString();
int period = 5;
String unit = "bytes/sec"
String metricName = "DiskWriteOps"

uuid = uuid.toLowerCase().replace("-", "_");
MetricStat metStat = MetricStat.builder()
        .stat("Average")
        .period(period)
        .unit(unit)
        .metric(metricName)
        .build();

MetricDataQuery mdq = MetricDataQuery.builder()
        .metricStat(metStat)
        .id(uuid)
        .returnData(true)
        .build();

metricDataQueries.add(mdq);


String uuid2 = UUID.randomUUID().toString();
int period2 = 5;
String unit2 = "bytes/sec"
String metricName2 = "DiskReadOps"

uuid2 = uuid2.toLowerCase().replace("-", "_");
MetricStat metStat2 = MetricStat.builder()
        .stat("Average")
        .period(period2)
        .unit(unit2)
        .metric(metricName2)
        .build();

MetricDataQuery mdq2 = MetricDataQuery.builder()
        .metricStat(metStat2)
        .id(uuid2)
        .returnData(true)
        .build();

metricDataQueries.add(mdq2);



GetMetricDataRequest getMetReq = GetMetricDataRequest.builder()
                                .scanBy(ScanBy.TIMESTAMP_DESCENDING)
                                .startTime(<StartTime>)
                                .endTime(<EndTime>)
                                .metricDataQueries(metricDataQueries)
                                .build();
Future<GetMetricDataResponse> future = <CloudwatchAsyncClient>.getMetricData(getMetReq);

....
...
© www.soinside.com 2019 - 2024. All rights reserved.