0

LoadBalancer 이름이 app/test123/123abc이고 123abc이 고유 한 ID라고 가정합니다. 이것이로드 밸런서 ARN의 끝입니다.AWS CloudWatch 치수 값 포함

나는 현재이 일을하여 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); 

답변

0

. 내가 생각할 수있는 한 가지 해결 방법 :

  • DescribeLoadBalancers API를 사용하여 계정에있는 모든 ELB를의 목록을 가져옵니다.
    • 응답에 페이지가 매겨져 있기 때문에 가지고있는 ELB의 수에 따라 여러 통화를해야 할 수도 있습니다.
    • 해당 CLI 명령은 here입니다.
  • 반환 된 LoadBalancer에서 LoadBalancerArn 필드를 사용하여 필요한 필터를 필터링합니다. 이것을 달성하기 위해 정규 표현식이나 간단한 문자열 조작을 사용할 수 있습니다.
  • 질문에 원래 언급 된대로 GetMetricStatisticsRequest으로 전화하십시오.
0

해결 방법 : 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; 
     } 
    } 
} 
관련 문제