Example of a script that uses baselines

The following is an example of a script that includes multiple monitors and baselines:

Manifest = {
    'Name': 'single_interface_tx_rx_stats_monitor',
    'Description': 'Policy to monitor tx/rx packets stats of a interface',
    'Version': '2.0',
    'Author': 'Aruba Networks'
}

ParameterDefinitions = {
    'interface_id': {
        'Name': 'Interface Id',
        'Description': 'Interface to be monitored',
        'Type': 'string',
        'Default': '1/1/1'
    }
}


class Agent(NAE):

    def __init__(self):
        # algorithm for dynamic Threshold calculation
        self.alg = MaxAlgorithm(continuous_learning_window="10m")

        # rx packets
        uri1 = '/rest/v1/system/interfaces/{}?attributes=statistics.rx_packets'
        rate_m1 = Rate(uri1, "10 seconds", [self.params['interface_id']])
        self.m1 = Monitor(
            rate_m1,
            'Rx Packets (packets per second)')
        self.r1 = Rule('Rule for Monitor Interface rx Packets')
        title1 = Title("Baseline for Interface rx Packets")
        self.baseline1 = Baseline(self.m1, algorithm=self.alg, title=title1,
                                  high_threshold_factor=2,
                                  low_threshold_factor=1.2,
                                  initial_learning_time='1d')
        self.r1.condition('{} > {}', [self.m1, self.baseline1])
        self.r1.clear_condition('{} < {}', [self.m1, self.baseline1])
        self.r1.action("ALERT_LEVEL", AlertLevel.CRITICAL)
        self.r1.clear_action("ALERT_LEVEL", AlertLevel.NONE)

        # rx packets dropped
        uri2 = '/rest/v1/system/interfaces/{}?attributes=statistics.rx_dropped'
        self.m2 = Monitor(
            uri2,
            'Rx Packets Dropped (packets)',
            [self.params['interface_id']])

        # tx packets
        uri3 = '/rest/v1/system/interfaces/{}?attributes=statistics.tx_packets'
        rate_m3 = Rate(uri3, "10 seconds", [self.params['interface_id']])
        self.m3 = Monitor(
            rate_m3,
            'Tx Packets (packets per second)')
        self.r3 = Rule('Rule for Monitor Interface tx Packets')
        title3 = Title("Baseline for Interface tx Packets")
        self.baseline3 = Baseline(self.m3, algorithm=self.alg, title=title3,
                                  high_threshold_factor=2,
                                  low_threshold_factor=1.2,
                                  initial_learning_time='1d')
        self.r3.condition('{} > {}', [self.m3, self.baseline3])
        self.r3.clear_condition('{} < {}', [self.m3, self.baseline3])
        self.r3.action("ALERT_LEVEL", AlertLevel.CRITICAL)
        self.r3.clear_action("ALERT_LEVEL", AlertLevel.NONE)

        # tx packets dropped
        uri4 = '/rest/v1/system/interfaces/{}?attributes=statistics.tx_dropped'
        self.m4 = Monitor(
            uri4,
            'Tx Packets Dropped (packets)',
            [self.params['interface_id']])