package org.skywalking.apm.collector.worker.noderef.analysis; import org.skywalking.apm.collector.actor.ClusterWorkerContext; import org.skywalking.apm.collector.actor.LocalWorkerContext; import org.skywalking.apm.collector.actor.Role; import org.skywalking.apm.collector.worker.MetricAnalysisMember; import org.skywalking.apm.collector.worker.noderef.NodeRefResSumIndex; import org.skywalking.apm.collector.worker.storage.AbstractTimeSlice; /** * @author pengys5 */ abstract class AbstractNodeRefResSumAnalysis extends MetricAnalysisMember { AbstractNodeRefResSumAnalysis(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) { super(role, clusterContext, selfContext); } final void analyseResSum(NodeRefResRecord nodeRefRes) throws Exception { long startTime = nodeRefRes.startTime; long endTime = nodeRefRes.endTime; boolean isError = nodeRefRes.isError; long cost = endTime - startTime; set(nodeRefRes.nodeRefId, NodeRefResSumIndex.ONE_SECOND_LESS, 0L); set(nodeRefRes.nodeRefId, NodeRefResSumIndex.THREE_SECOND_LESS, 0L); set(nodeRefRes.nodeRefId, NodeRefResSumIndex.FIVE_SECOND_LESS, 0L); set(nodeRefRes.nodeRefId, NodeRefResSumIndex.FIVE_SECOND_GREATER, 0L); set(nodeRefRes.nodeRefId, NodeRefResSumIndex.ERROR, 0L); if (cost <= 1000 && !isError) { set(nodeRefRes.nodeRefId, NodeRefResSumIndex.ONE_SECOND_LESS, 1L); } else if (1000 < cost && cost <= 3000 && !isError) { set(nodeRefRes.nodeRefId, NodeRefResSumIndex.THREE_SECOND_LESS, 1L); } else if (3000 < cost && cost <= 5000 && !isError) { set(nodeRefRes.nodeRefId, NodeRefResSumIndex.FIVE_SECOND_LESS, 1L); } else if (5000 < cost && !isError) { set(nodeRefRes.nodeRefId, NodeRefResSumIndex.FIVE_SECOND_GREATER, 1L); } else { set(nodeRefRes.nodeRefId, NodeRefResSumIndex.ERROR, 1L); } set(nodeRefRes.nodeRefId, NodeRefResSumIndex.SUMMARY, 1L); } public static class NodeRefResRecord extends AbstractTimeSlice { private String nodeRefId; private long startTime; private long endTime; private Boolean isError; NodeRefResRecord(long minute, long hour, long day, int second) { super(minute, hour, day, second); } void setNodeRefId(String nodeRefId) { this.nodeRefId = nodeRefId; } void setStartTime(long startTime) { this.startTime = startTime; } void setEndTime(long endTime) { this.endTime = endTime; } void setError(Boolean error) { isError = error; } String getNodeRefId() { return nodeRefId; } } }