【问题标题】:AWS CloudWatch Dimension Value ContainsAWS CloudWatch 维度值包含
【发布时间】:2017-04-05 20:52:06
【问题描述】:

假设我的 LoadBalancer 名称是 app/test123/123abc,其中 123abc 是唯一 ID。负载均衡器 ARN 到此结束。

我目前正在通过以下方式检索 Cloudwatch 统计信息:

GetMetricStatisticsRequest oRequest = new GetMetricStatisticsRequest()
            .withStartTime(startTime)
            .withNamespace("AWS/ApplicationELB")
            .withPeriod(oneHour)
            .withDimensions(new Dimension().withName("LoadBalancer").withValue("app/test123/123abc"))
            .withMetricName("HTTPCode_Backend_2XX")
            .withStatistics("Sum")
            .withEndTime(endTime);

我真正需要的是contains 规则...因为我想根据test123 查找我的负载均衡器,因此不包括 URL 的唯一部分。

这可能吗?

类似......

GetMetricStatisticsRequest oRequest = new GetMetricStatisticsRequest()
            .withStartTime(startTime)
            .withNamespace("AWS/ApplicationELB")
            .withPeriod(oneHour)
            .withDimensions(new Dimension().withName("LoadBalancer").withValue.contains("test123"))
            .withMetricName("HTTPCode_Backend_2XX")
            .withStatistics("Sum")
            .withEndTime(endTime);

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-elb amazon-cloudwatch elastic-load-balancer


    【解决方案1】:

    我认为没有直接的方法可以做到这一点。我能想到的一种解决方法:

    • 使用DescribeLoadBalancers API 获取您帐户中所有 ELB 的列表。
      • 由于响应是分页的,您可能需要多次调用,具体取决于您拥有的 ELB 数量。
      • 可以在here找到对应的CLI命令。
    • 从返回的LoadBalancers 中,使用LoadBalancerArn 字段过滤出所需的。您可以使用正则表达式或简单的字符串操作来实现这一点。
    • 致电GetMetricStatisticsRequest,如您的问题中最初提到的那样。

    【讨论】:

      【解决方案2】:

      解决方案:搜索 listMetrics 并找到您需要的,然后将其用作 .withDimensions(oDim) 过滤器。

      List<Metric> oMetricList = new ArrayList<Metric>();
      try
      {
          oMetricList = client.listMetrics().getMetrics();
      }
      catch (Exception e)
      {
          System.out.println(e.getMessage());
          return null;
      }
      
      for (Metric oMetric : oMetricList)
      {
          for (Dimension oDim : oMetric.getDimensions())
          {
              if (oDim.getName().contains(dimensionName) && oDimsgetValue().contains(lbName))
              {
                 return oDim; 
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-15
        • 2022-01-20
        • 1970-01-01
        • 1970-01-01
        • 2023-03-06
        • 1970-01-01
        相关资源
        最近更新 更多