Develop > Service Health > Service Health Rules API > Examples - API Sample Rule > Example - Average Performance Rule

Example - Average Performance Rule

The following rule calculates average performance in seconds, based on the dResponseTime and u_iStatus sample fields.

Only samples with a u_iStatus value of 0 (available samples) are used in the calculation. The rule logic is: sum(dResponseTime) / available samples.

// This rule uses the u_iStatus and dResponseTime sample field.
def sampleFields = ["u_iStatus", "dResponseTime"];
public void calculateKPI(CI ci, KPI kpi, List<Sample> samples) {
    // Create a variable to count available samples.
    def availableSamples = 0;
    // Create a variable to sum response times of available samples.
    def totalResponseTime = 0;
    /**
     * Go over the given samples. If a sample's u_iStatus is equal to 0,
     * the sample is considered available.
     */
    samples.each {Sample currentSample ->
        if (currentSample.u_iStatus == 0) {
            // Increase the count of available samples.
            availableSamples++;
            // Add the current sample's dResponseTime value to totalResponseTime.
            totalResponseTime += currentSample.dResponseTime
        }
    }
    if (availableSamples > 0) {
        // Set KPI value, converted to percentage.
        kpi.setValue((totalResponseTime / availableSamples))
    }
}


Parent topic: Examples - API Sample Rule