我正在尝试使用 pingdom api 生成正常运行时间报告。
我正在使用以下公式。但不知何故,百分比并不准确,如他们的 UI 所示。
( ( number_of_days_in_the_months * 86400 ) / 100 ) * uptime_percentage = uptime_in_seconds
我做错什么了吗?
这是执行此操作的正确方法。
使用summary.outage api 获取结果,然后执行以下操作
SummaryOutage summaryOutage = new ObjectMapper().readValue(response, SummaryOutage.class);
double uptime = 0d;
double downtime = 0d;
double unknown = 0d;
for(SummaryOutage.Summary.State state :summaryOutage.summary.states){
if(state.status.equals("up")){
uptime = uptime + (state.timeto - state.timefrom);
}else if (state.status.equals("down")){
downtime = downtime + (state.timeto - state.timefrom);
}else if (state.status.equals("unknown")){
unknown = unknown + (state.timeto - state.timefrom);
}
}
double totalTime = uptime + downtime + unknown;
if(totalTime > 0) {
DecimalFormat decimalFormat = new DecimalFormat("#.00");
String numberAsString = decimalFormat.format(100 *( (uptime + unknown) / totalTime));
return numberAsString;
}
这对我来说很完美。您可以根据您的专业知识增强 Java 代码。
希望这对某人有帮助。