2017-08-24 79 views
0

我正在尝试使用pingdom apis生成正常运行时间报告。Pingdom正常运行时间计算公式

我正在使用以下公式。但不知怎的,百分比并不像他们的用户界面中显示的那样精确。

((number_of_days_in_the_months * 86400)/100) * uptime_percentage = uptime_in_seconds 

我做错了什么?

+0

你的价值是什么?它与UI中显示的百分比有什么不同? – david

+0

用户界面显示99.99,我得到99.72 – Yahiya

回答

0

这是正确的做法。

使用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代码。

希望这对某人有帮助。