WANG 5 years ago
parent
commit
c6031a6255

+ 16 - 7
src/main/java/cn/com/qmth/examcloud/web/actuator/ApiStatusEndpoint.java

@@ -15,6 +15,7 @@ import org.springframework.http.MediaType;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Maps;
 
 
+import cn.com.qmth.examcloud.commons.util.Calculator;
 import cn.com.qmth.examcloud.commons.util.FreeMarkerUtil;
 import cn.com.qmth.examcloud.commons.util.FreeMarkerUtil;
 import cn.com.qmth.examcloud.commons.util.ResourceLoader;
 import cn.com.qmth.examcloud.commons.util.ResourceLoader;
 import cn.com.qmth.examcloud.web.support.ApiInfo;
 import cn.com.qmth.examcloud.web.support.ApiInfo;
@@ -132,15 +133,16 @@ public class ApiStatusEndpoint {
 				apiStatusInfo.setExceptionFiveMinuteRate(meterInfo.getFiveMinuteRate());
 				apiStatusInfo.setExceptionFiveMinuteRate(meterInfo.getFiveMinuteRate());
 				apiStatusInfo.setExceptionFifteenMinuteRate(meterInfo.getFifteenMinuteRate());
 				apiStatusInfo.setExceptionFifteenMinuteRate(meterInfo.getFifteenMinuteRate());
 
 
-				apiStatusInfo.setExceptionPercent(meterInfo.getCount() / timerInfo.getCount());
-				apiStatusInfo
-						.setExceptionMeanPercent(meterInfo.getMeanRate() / timerInfo.getMeanRate());
+				apiStatusInfo.setExceptionPercent(
+						getPercent(meterInfo.getCount(), timerInfo.getCount()));
+				apiStatusInfo.setExceptionMeanPercent(
+						getPercent(meterInfo.getMeanRate(), timerInfo.getMeanRate()));
 				apiStatusInfo.setExceptionOneMinutePercent(
 				apiStatusInfo.setExceptionOneMinutePercent(
-						meterInfo.getOneMinuteRate() / timerInfo.getOneMinuteRate());
+						getPercent(meterInfo.getOneMinuteRate(), timerInfo.getOneMinuteRate()));
 				apiStatusInfo.setExceptionFiveMinutePercent(
 				apiStatusInfo.setExceptionFiveMinutePercent(
-						meterInfo.getFiveMinuteRate() / timerInfo.getFiveMinuteRate());
-				apiStatusInfo.setExceptionFifteenMinutePercent(
-						meterInfo.getFifteenMinuteRate() / timerInfo.getFifteenMinuteRate());
+						getPercent(meterInfo.getFiveMinuteRate(), timerInfo.getFiveMinuteRate()));
+				apiStatusInfo.setExceptionFifteenMinutePercent(getPercent(
+						meterInfo.getFifteenMinuteRate(), timerInfo.getFifteenMinuteRate()));
 			}
 			}
 
 
 		}
 		}
@@ -179,4 +181,11 @@ public class ApiStatusEndpoint {
 		return ret;
 		return ret;
 	}
 	}
 
 
+	private Double getPercent(double v1, double v2) {
+		if (0 == v1 || 0 == v2) {
+			return 0d;
+		}
+		return Calculator.divide(v1, v2, 3);
+	}
+
 }
 }

+ 4 - 4
src/main/resources/api-status.html

@@ -59,10 +59,10 @@
 			<td>${cur.p98?string("#.##")}</td>
 			<td>${cur.p98?string("#.##")}</td>
 			<td>${cur.p99?string("#.##")}</td>
 			<td>${cur.p99?string("#.##")}</td>
 			<td>${cur.exceptionCount?c}</td>
 			<td>${cur.exceptionCount?c}</td>
-			<td>${cur.exceptionMeanPercent?string("#.##")}</td>
-			<td>${cur.exceptionOneMinutePercent?string("#.##")}</td>
-			<td>${cur.exceptionFiveMinutePercent?string("#.##")}</td>
-			<td>${cur.exceptionFifteenMinutePercent?string("#.##")}</td>
+			<td>${cur.exceptionMeanPercent?string.percent}</td>
+			<td>${cur.exceptionOneMinutePercent?string.percent}</td>
+			<td>${cur.exceptionFiveMinutePercent?string.percent}</td>
+			<td>${cur.exceptionFifteenMinutePercent?string.percent}</td>
 		</tr>
 		</tr>
 		</#list>
 		</#list>
 	</table>
 	</table>