package com.alibaba.jstorm.metric; import backtype.storm.generated.MetricSnapshot; import com.alibaba.jstorm.common.metric.*; import com.alibaba.jstorm.utils.TimeUtils; import java.util.Date; /** * @author Cody (weiyue.wy@alibaba-inc.com) * @since 2.0.5 */ public class MetricDataConverter { public static CounterData toCounterData(MetricSnapshot snapshot, int win) { CounterData data = new CounterData(); convertBase(snapshot, data, win); data.setV(snapshot.get_longValue()); return data; } public static GaugeData toGaugeData(MetricSnapshot snapshot, int win) { GaugeData data = new GaugeData(); convertBase(snapshot, data, win); data.setV(snapshot.get_doubleValue()); return data; } public static MeterData toMeterData(MetricSnapshot snapshot, int win) { MeterData data = new MeterData(); convertBase(snapshot, data, win); data.setM1(snapshot.get_m1()); data.setM5(snapshot.get_m5()); data.setM15(snapshot.get_m15()); data.setMean(snapshot.get_mean()); return data; } public static HistogramData toHistogramData(MetricSnapshot snapshot, int win) { HistogramData data = new HistogramData(); convertBase(snapshot, data, win); data.setMin(snapshot.get_min()); data.setMax(snapshot.get_max()); data.setP50(snapshot.get_p50()); data.setP75(snapshot.get_p75()); data.setP95(snapshot.get_p95()); data.setP98(snapshot.get_p98()); data.setP99(snapshot.get_p99()); data.setP999(snapshot.get_p999()); data.setMean(snapshot.get_mean()); return data; } private static void convertBase(MetricSnapshot snapshot, MetricBaseData data, int win) { long newTs = TimeUtils.alignTimeToWin(snapshot.get_ts(), win); data.setWin(win); data.setMetricId(snapshot.get_metricId()); data.setTs(new Date(newTs)); } }