0

다른 애플리케이션에서 가져온 메트릭 맵이 있는데이를 AWSCloud watch에 쓰고 싶습니다.지도를 AWS 클라우드에 전달하는 방법

어떻게하면됩니까?

추신 : 전체지도를 구문 분석 한 후에 측정 항목 이름과 측정 항목 값을 사용하여 넣으려고했으나 좋은 접근 방식이 아닙니다.

감사합니다.

답변

0

Cloudwatch는 메트릭 볼륨을 쉽게 따라갈 수 있어야하므로 소스 애플리케이션에서 들어오는 각 일괄 처리에 1 PutMetricDataRequest을 사용하고 Cloudwatch가 집계를 수행하도록합니다.

PutMetricDataRequest에서 보면 Collection<MetricDatum>이 필요합니다. 이는 단일 요청으로 소스 응용 프로그램에서 수신하는 모든 키를 수신하는 데 적합합니다.

Map<String, Object> metricMap = new HashMap<>(); 
metricMap.put("metricKey", 99); 

당신에게 :지도는 키 => 값 맵입니다 가정

다음 Java8이 API를 스트림으로 목록에 HashMap의 변환

====

은 매우 간단합니다 Java8 스트림 API를지도와 함께 사용하여 수집 할 수 있습니다.

List<MetricDatum> metrics = metricMap.entrySet().parallelStream() 
     .map(map -> new MetricDatum() 
       .withMetricName(map.getKey()) 
       .withUnit(StandardUnit.Count) 
       .withValue(Double.valueOf(map.getValue().toString())) 
     ).collect(Collectors.toList()); 
+0

답변 해 주셔서 감사합니다. 내 경우에는 데이터가 HashMap 의 형태로 제공됩니다. 기본적으로 나는 다른 구독자 모드 (구름 시계 중 하나입니다)와 외관을했습니다. 지도가 Facade에 푸시 된 다음 다른 가입자가 사용할 수 있습니다. 따라서이 경우 나는 같은 hashmap을 얻고있다. MetricDatum 맵에서 변환하기 위해 hashmap의 모든 키와 값을 반복해야한다고 제안하고 있습니까? – Lovey

+0

@Lovey : Java8 스트림 API를 사용하면 매우 간단합니다. 작업을 보여주는 대답에 코드 샘플을 추가했습니다. –

+0

여전히 동일합니다. 그러나 thats는 좋다. 여기서 결론을 내리는 중이 야. 감사. – Lovey

관련 문제