0
다른 애플리케이션에서 가져온 메트릭 맵이 있는데이를 AWSCloud watch에 쓰고 싶습니다.지도를 AWS 클라우드에 전달하는 방법
어떻게하면됩니까?
추신 : 전체지도를 구문 분석 한 후에 측정 항목 이름과 측정 항목 값을 사용하여 넣으려고했으나 좋은 접근 방식이 아닙니다.
감사합니다.
다른 애플리케이션에서 가져온 메트릭 맵이 있는데이를 AWSCloud watch에 쓰고 싶습니다.지도를 AWS 클라우드에 전달하는 방법
어떻게하면됩니까?
추신 : 전체지도를 구문 분석 한 후에 측정 항목 이름과 측정 항목 값을 사용하여 넣으려고했으나 좋은 접근 방식이 아닙니다.
감사합니다.
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());
답변 해 주셔서 감사합니다. 내 경우에는 데이터가 HashMap의 형태로 제공됩니다. 기본적으로 나는 다른 구독자 모드 (구름 시계 중 하나입니다)와 외관을했습니다. 지도가 Facade에 푸시 된 다음 다른 가입자가 사용할 수 있습니다. 따라서이 경우 나는 같은 hashmap을 얻고있다. MetricDatum 맵에서 변환하기 위해 hashmap의 모든 키와 값을 반복해야한다고 제안하고 있습니까? –
Lovey
@Lovey : Java8 스트림 API를 사용하면 매우 간단합니다. 작업을 보여주는 대답에 코드 샘플을 추가했습니다. –
여전히 동일합니다. 그러나 thats는 좋다. 여기서 결론을 내리는 중이 야. 감사. – Lovey