0

我正在尝试使用 pingdom api 生成正常运行时间报告。

我正在使用以下公式。但不知何故,百分比并不准确,如他们的 UI 所示。

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

我做错什么了吗?

4

1 回答 1

1

这是执行此操作的正确方法。

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

希望这对某人有帮助。

于 2017-09-08T06:44:09.817 回答