def get_metric_not_match(self):
     list = []
     metrics = {
         "name": "biz",
         "dimensions": {"hostname": "h1", "key2": "value2"},
         "timestamp": tu.iso8601_from_timestamp(tu.utcnow_ts()),
         "value": 1300,
     }
     list.append(json.dumps(metrics))
     metrics = {
         "name": "biz",
         "dimensions": {"hostname": "h1", "key1": "value1", "key3": "value3"},
         "value": 15000,
         "timestamp": tu.iso8601_from_timestamp(tu.utcnow_ts()),
     }
     list.append(json.dumps(metrics))
     metrics = {
         "name": "biz",
         "dimensions": {"hostname": "h1", "key2": "value1", "key3": "value3"},
         "value": 15000,
         "timestamp": tu.iso8601_from_timestamp(tu.utcnow_ts()),
     }
     list.append(json.dumps(metrics))
     metrics = {
         "name": "biz",
         "dimensions": {"key2": "value1", "key3": "value3"},
         "value": 15000,
         "timestamp": tu.iso8601_from_timestamp(tu.utcnow_ts()),
     }
     list.append(json.dumps(metrics))
     return list
 def update_data():
     # inherit previous stored metrics values
     for name in self.expr_data_queue:
         ts = tu.utcnow_ts()
         new_expr_data_queue[name] = {
             'data': {},
             'state':
             'UNDETERMINED',
             'create_timestamp':
             self.expr_data_queue[name]['create_timestamp'],
             'update_timestamp':
             ts,
             'state_update_timestamp':
             self.expr_data_queue[name]['state_update_timestamp']
         }
         for i in range(0, len(new_sub_expr_list), 1):
             expr_old = self.sub_expr_list[i].fmtd_sub_expr_str
             expr_new = new_sub_expr_list[i].fmtd_sub_expr_str
             new_expr_data_queue[name]['data'][expr_new] = {
                 'state':
                 'UNDETERMINED',
                 'metrics': (self.expr_data_queue[name]['data']
                             [expr_old]['metrics']),
                 'values': []
             }
 def get_metric2_2(self):
     list = []
     for i in range(0, 10, 1):
         metrics = {
             "name": "foo",
             "dimensions": {"key1": "value1", "key2": "value2"},
             "timestamp": tu.iso8601_from_timestamp(tu.utcnow_ts() + i * 20 - 140),
             "value": i * 10 + 200,
         }
         list.append(json.dumps(metrics))
     return list
    def update_state(self, expr_data):
        """Update the state of each alarm under this alarm definition."""
        def _calc_state(operand):
            if operand.logic_operator:
                subs = []
                for o in operand.sub_expr_list:
                    subs.append(_calc_state(o))
                return calculator.calc_logic(operand.logic_operator, subs)
            else:
                return expr_data['data'][operand.fmtd_sub_expr_str]['state']

        for sub_expr in self.sub_expr_list:
            self.update_sub_expr_state(sub_expr, expr_data)
        state_new = _calc_state(self.parse_result)
        if state_new != expr_data['state']:
            expr_data['state_update_timestamp'] = tu.utcnow_ts()
            expr_data['update_timestamp'] = tu.utcnow_ts()
            expr_data['state'] = state_new
            return True
        else:
            return False
    def update_state(self, expr_data):
        """Update the state of each alarm under this alarm definition."""
        def _calc_state(operand):
            if operand.logic_operator:
                subs = []
                for o in operand.sub_expr_list:
                    subs.append(_calc_state(o))
                return calculator.calc_logic(operand.logic_operator, subs)
            else:
                return expr_data['data'][operand.fmtd_sub_expr_str]['state']

        for sub_expr in self.sub_expr_list:
            self.update_sub_expr_state(sub_expr, expr_data)
        state_new = _calc_state(self.parse_result)
        if state_new != expr_data['state']:
            expr_data['state_update_timestamp'] = tu.utcnow_ts()
            expr_data['update_timestamp'] = tu.utcnow_ts()
            expr_data['state'] = state_new
            return True
        else:
            return False
 def get_metric0(self):
     list = []
     metrics = {
         "name": "baz",
         "dimensions": {"घोड़ा": "馬", "dn2": "dv2", "千幸福的笑脸घ": "千幸福的笑脸घ"},
         "timestamp": tu.iso8601_from_timestamp(tu.utcnow_ts()),
         "value": 1500,
     }
     list.append(json.dumps(metrics))
     metrics = {
         "name": "-_.千幸福的笑脸",
         "dimensions": {"घोड़ा": "馬", "dn2": "dv2", "千幸福的笑脸घ": "千幸福的笑脸घ"},
         "timestamp": tu.iso8601_from_timestamp(tu.utcnow_ts()),
         "value": 1500,
     }
     list.append(json.dumps(metrics))
     metrics = {
         "name": "ເຮືອນ",
         "dimensions": {"dn3": "dv3", "家": "дом"},
         "timestamp": tu.iso8601_from_timestamp(tu.utcnow_ts()),
         "value": 5,
     }
     list.append(json.dumps(metrics))
     metrics = {
         "name": "biz",
         "dimensions": {"dn5": "dv58"},
         "timestamp": tu.iso8601_from_timestamp(tu.utcnow_ts()),
         "value": 5,
     }
     list.append(json.dumps(metrics))
     metrics = {
         "name": "biz",
         "dimensions": {"dn5": "dv58"},
         "timestamp": tu.iso8601_from_timestamp(tu.utcnow_ts()),
         "value": 95,
     }
     list.append(json.dumps(metrics))
     return list
 def get_metric5(self):
     list = []
     metrics = {
         "name": "biz",
         "dimensions": {"hostname": "h1", "key2": "value2"},
         "timestamp": tu.iso8601_from_timestamp(tu.utcnow_ts()),
         "value": 2000,
     }
     list.append(json.dumps(metrics))
     metrics = {
         "name": "biz",
         "dimensions": {"hostname": "h1", "system": "windows", "key2": "value2"},
         "timestamp": tu.iso8601_from_timestamp(tu.utcnow_ts()),
         "value": 1300,
     }
     list.append(json.dumps(metrics))
     metrics = {
         "name": "biz",
         "dimensions": {"hostname": "h1", "system": "linux", "key2": "value2"},
         "timestamp": tu.iso8601_from_timestamp(tu.utcnow_ts() - 30),
         "value": 1200,
     }
     list.append(json.dumps(metrics))
     metrics = {
         "name": "biz",
         "dimensions": {"hostname": "h1", "system": "windows", "key1": "value1", "key2": "value2", "key3": "value3"},
         "timestamp": tu.iso8601_from_timestamp(tu.utcnow_ts()),
         "value": 1601,
     }
     list.append(json.dumps(metrics))
     metrics = {
         "name": "biz",
         "dimensions": {"hostname": "h2", "system": "linux", "key1": "value1", "key2": "value2", "key3": "value3"},
         "timestamp": tu.iso8601_from_timestamp(tu.utcnow_ts()),
         "value": 1601,
     }
     list.append(json.dumps(metrics))
     return list
 def create_data_item(self, name):
     """If new match_up tuple, create new entry to store metrics value."""
     ts = tu.utcnow_ts()
     self.expr_data_queue[name] = {
         'data': {},
         'state': 'UNDETERMINED',
         'create_timestamp': ts,
         'update_timestamp': ts,
         'state_update_timestamp': ts}
     for expr in self.sub_expr_list:
         self.expr_data_queue[name]['data'][expr.fmtd_sub_expr_str] = {
             'state': 'UNDETERMINED',
             'metrics': collections.deque(),
             'values': []}
    def update_sub_expr_state(self, expr, expr_data):
        def _update_metrics():
            """Delete metrics not in period."""
            data_list = expr_data['data'][expr.fmtd_sub_expr_str]['metrics']
            start_time = t_now - (float(expr.period) + 2) * int(expr.periods)
            while (len(data_list) != 0
                   and data_list[0]['timestamp'] < start_time):
                data_list.popleft()

        def _update_state():
            """Update state of a sub expr."""
            data_sub = expr_data['data'][expr.fmtd_sub_expr_str]
            data_list = data_sub['metrics']
            if len(data_list) == 0:
                data_sub['state'] = 'UNDETERMINED'
            else:
                period = float(expr.period)
                periods = int(expr.periods)
                right = t_now
                left = right - period
                temp_data = []
                value_in_periods = []
                for i in range(len(data_list) - 1, -1, -1):
                    if data_list[i]['timestamp'] >= left:
                        temp_data.append(float(data_list[i]['value']))
                    else:
                        value = calculator.calc_value(
                            expr.normalized_func, temp_data)
                        value_in_periods.append(value)
                        right = left
                        left = right - period
                        temp_data = []
                value = calculator.calc_value(
                    expr.normalized_func, temp_data)
                value_in_periods.append(value)
                for i in range(len(value_in_periods), periods, 1):
                    value_in_periods.append(None)
                expr_data['data'][expr.fmtd_sub_expr_str]['values'] = (
                    value_in_periods)
                expr_data['data'][expr.fmtd_sub_expr_str]['state'] = (
                    calculator.compare_thresh(
                        value_in_periods,
                        expr.normalized_operator,
                        float(expr.threshold)))

        t_now = tu.iso8601_from_timestamp(tu.utcnow_ts())
        t_now = tu.parse_isotime(t_now).timetuple()
        t_now = time.mktime(t_now)
        _update_metrics()
        _update_state()
Esempio n. 10
0
    def update_sub_expr_state(self, expr, expr_data):
        def _update_metrics():
            """Delete metrics not in period."""
            data_list = expr_data['data'][expr.fmtd_sub_expr_str]['metrics']
            start_time = t_now - (float(expr.period)) * int(expr.periods)
            while (len(data_list) != 0
                   and data_list[0]['timestamp'] < start_time):
                data_list.popleft()

        def _update_state():
            """Update state of a sub expr."""
            data_sub = expr_data['data'][expr.fmtd_sub_expr_str]
            data_list = data_sub['metrics']
            period = float(expr.period)
            periods = int(expr.periods)
            right = t_now
            left = right - period
            temp_data = []
            value_in_periods = []
            i = len(data_list) - 1
            while i >= 0:
                if data_list[i]['timestamp'] >= left:
                    temp_data.append(float(data_list[i]['value']))
                else:
                    value = calculator.calc_value(
                        expr.normalized_func, temp_data)
                    value_in_periods.append(value)
                    right = left
                    left = right - period
                    temp_data = []
                    i += 1
                i -= 1
            value = calculator.calc_value(
                expr.normalized_func, temp_data)
            value_in_periods.append(value)
            for i in range(len(value_in_periods), periods, 1):
                value_in_periods.append(
                    calculator.calc_value(expr.normalized_func, []))
            expr_data['data'][expr.fmtd_sub_expr_str]['values'] = (
                value_in_periods)
            expr_data['data'][expr.fmtd_sub_expr_str]['state'] = (
                calculator.compare_thresh(
                    value_in_periods,
                    expr.normalized_operator,
                    float(expr.threshold)))

        t_now = tu.utcnow_ts()
        _update_metrics()
        _update_state()
Esempio n. 11
0
 def create_data_item(self, name):
     """If new match_up tuple, create new entry to store metrics value."""
     ts = tu.utcnow_ts()
     self.expr_data_queue[name] = {
         'data': {},
         'state': 'UNDETERMINED',
         'create_timestamp': ts,
         'update_timestamp': ts,
         'state_update_timestamp': ts
     }
     for expr in self.sub_expr_list:
         self.expr_data_queue[name]['data'][expr.fmtd_sub_expr_str] = {
             'state': 'UNDETERMINED',
             'metrics': collections.deque(),
             'values': []
         }
Esempio n. 12
0
    def update_sub_expr_state(self, expr, expr_data):
        def _update_metrics():
            """Delete metrics not in period."""
            data_list = expr_data['data'][expr.fmtd_sub_expr_str]['metrics']
            start_time = t_now - (float(expr.period)) * int(expr.periods)
            while (len(data_list) != 0
                   and data_list[0]['timestamp'] < start_time):
                data_list.popleft()

        def _update_state():
            """Update state of a sub expr."""
            data_sub = expr_data['data'][expr.fmtd_sub_expr_str]
            data_list = data_sub['metrics']
            period = float(expr.period)
            periods = int(expr.periods)
            right = t_now
            left = right - period
            temp_data = []
            value_in_periods = []
            i = len(data_list) - 1
            while i >= 0:
                if data_list[i]['timestamp'] >= left:
                    temp_data.append(float(data_list[i]['value']))
                else:
                    value = calculator.calc_value(expr.normalized_func,
                                                  temp_data)
                    value_in_periods.append(value)
                    right = left
                    left = right - period
                    temp_data = []
                    i += 1
                i -= 1
            value = calculator.calc_value(expr.normalized_func, temp_data)
            value_in_periods.append(value)
            for i in range(len(value_in_periods), periods, 1):
                value_in_periods.append(
                    calculator.calc_value(expr.normalized_func, []))
            expr_data['data'][expr.fmtd_sub_expr_str]['values'] = (
                value_in_periods)
            expr_data['data'][expr.fmtd_sub_expr_str]['state'] = (
                calculator.compare_thresh(value_in_periods,
                                          expr.normalized_operator,
                                          float(expr.threshold)))

        t_now = tu.utcnow_ts()
        _update_metrics()
        _update_state()
Esempio n. 13
0
 def _add_metrics():
     temp = None
     if self.match_by:
         q_name = self.get_matched_data_queue_name(data)
         if q_name:
             temp = self.expr_data_queue[q_name]
     else:
         if None not in self.expr_data_queue:
             self.create_data_item(None)
         temp = self.expr_data_queue[None]
     if temp:
         data_list = temp['data'][expr.fmtd_sub_expr_str]
         data_list['metrics'].append(
             {'value': float(data['value']),
              'timestamp': tu.utcnow_ts()})
         return True
     else:
         return False
Esempio n. 14
0
 def _add_metrics():
     temp = None
     if self.match_by:
         q_name = self.get_matched_data_queue_name(data)
         if q_name:
             temp = self.expr_data_queue[q_name]
     else:
         if None not in self.expr_data_queue:
             self.create_data_item(None)
         temp = self.expr_data_queue[None]
     if temp:
         data_list = temp['data'][expr.fmtd_sub_expr_str]
         data_list['metrics'].append({
             'value': float(data['value']),
             'timestamp': tu.utcnow_ts()
         })
         return True
     else:
         return False
Esempio n. 15
0
 def update_data():
     # inherit previous stored metrics values
     for name in self.expr_data_queue:
         ts = tu.utcnow_ts()
         new_expr_data_queue[name] = {
             'data': {},
             'state': 'UNDETERMINED',
             'create_timestamp':
                 self.expr_data_queue[name]['create_timestamp'],
             'update_timestamp': ts,
             'state_update_timestamp':
                 self.expr_data_queue[name]['state_update_timestamp']
         }
         for i in range(0, len(new_sub_expr_list), 1):
             expr_old = self.sub_expr_list[i].fmtd_sub_expr_str
             expr_new = new_sub_expr_list[i].fmtd_sub_expr_str
             new_expr_data_queue[name]['data'][expr_new] = {
                 'state': 'UNDETERMINED',
                 'metrics':
                     (self.expr_data_queue[name]
                      ['data'][expr_old]['metrics']),
                 'values': []}
Esempio n. 16
0
 def get_metrics(self, name):
     ts = self.test_cases["metrics"][name]
     for t in ts:
         o = t["time_offset"]
         t["timestamp"] = tu.utcnow_ts() + o
         yield json.dumps(t)