コード例 #1
0
 def build_alarm(self, name):
     """Build alarm json."""
     alarm = {}
     id = str(uuid.uuid4())
     alarm['id'] = id
     alarm['alarm_definition_id'] = self.alarm_definition['id']
     alarm['metrics'] = self.related_metrics[name]
     alarm['state'] = self.expr_data_queue[name]['state']
     alarm['reason'] = reasons[alarm['state']]
     alarm['reason_data'] = {}
     sub_alarms = []
     dt = self.expr_data_queue[name]['data']
     for expr in self.sub_expr_list:
         sub_alarms.append({
             'sub_alarm_expression':
                 self.sub_alarm_expr[expr.fmtd_sub_expr_str],
             'sub_alarm_state': dt[expr.fmtd_sub_expr_str]['state'],
             'current_values': dt[expr.fmtd_sub_expr_str]['values']
         })
     alarm['sub_alarms'] = sub_alarms
     ct = self.expr_data_queue[name]['create_timestamp']
     st = self.expr_data_queue[name]['state_update_timestamp']
     t = self.expr_data_queue[name]['update_timestamp']
     alarm['state_updated_timestamp'] = tu.iso8601_from_timestamp(st)
     alarm['updated_timestamp'] = tu.iso8601_from_timestamp(t)
     alarm['created_timestamp'] = tu.iso8601_from_timestamp(ct)
     return json.dumps(alarm)
コード例 #2
0
 def build_alarm(self, name):
     """Build alarm json."""
     alarm = {}
     id = str(uuid.uuid4())
     alarm['id'] = id
     alarm['alarm_definition'] = self.alarm_definition
     alarm['metrics'] = self.related_metrics[name]
     alarm['state'] = self.expr_data_queue[name]['state']
     alarm['reason'] = reasons[alarm['state']]
     alarm['reason_data'] = {}
     sub_alarms = []
     dt = self.expr_data_queue[name]['data']
     for expr in self.sub_expr_list:
         sub_alarms.append({
             'sub_alarm_expression':
             self.sub_alarm_expr[expr.fmtd_sub_expr_str],
             'sub_alarm_state':
             dt[expr.fmtd_sub_expr_str]['state'],
             'current_values':
             dt[expr.fmtd_sub_expr_str]['values']
         })
     alarm['sub_alarms'] = sub_alarms
     ct = self.expr_data_queue[name]['create_timestamp']
     st = self.expr_data_queue[name]['state_update_timestamp']
     t = self.expr_data_queue[name]['update_timestamp']
     alarm['state_updated_timestamp'] = tu.iso8601_from_timestamp(st)
     alarm['updated_timestamp'] = tu.iso8601_from_timestamp(t)
     alarm['created_timestamp'] = tu.iso8601_from_timestamp(ct)
     return json.dumps(alarm)
コード例 #3
0
 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
コード例 #4
0
 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
コード例 #5
0
 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
コード例 #6
0
 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
コード例 #7
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) + 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()
コード例 #8
0
ファイル: metrics.py プロジェクト: yihanwan/python-monasca
 def _render_metric(dim):
     source = dim['dimension']['hits']['hits'][0]['_source']
     yield '{"name":"' + source['name'] + '","dimensions":'
     yield json.dumps(source['dimensions'])
     yield ',"columns":["id","timestamp","value"],"measurements":['
     is_first = True
     for measure in dim['measures']['hits']['hits']:
         ss = measure['_source']
         m = ('["' + measure['_id'] + '","' +
              tu.iso8601_from_timestamp(ss['timestamp']) +
              '",' + str(ss['value']) + ']')
         if is_first:
             yield m
             is_first = False
         else:
             yield ',' + m
     yield ']}'
コード例 #9
0
 def _render_metric(dim):
     source = dim['dimension']['hits']['hits'][0]['_source']
     yield '{"name":"' + source['name'] + '","dimensions":'
     yield json.dumps(source['dimensions'])
     yield ',"columns":["id","timestamp","value"],"measurements":['
     is_first = True
     for measure in dim['measures']['hits']['hits']:
         ss = measure['_source']
         m = ('["' + measure['_id'] + '","' +
              tu.iso8601_from_timestamp(ss['timestamp']) +
              '",' + str(ss['value']) + ']')
         if is_first:
             yield m
             is_first = False
         else:
             yield ',' + m
     yield ']}'
コード例 #10
0
ファイル: metrics.py プロジェクト: yihanwan/python-monasca
 def _render_stats(dim):
     source = dim['dimension']['hits']['hits'][0]['_source']
     yield '{"name":"' + source['name'] + '","dimensions":'
     yield json.dumps(source['dimensions'])
     yield ',"columns":' + col_json + ',"statistics":['
     is_first = True
     for item in dim['periods']['buckets']:
         m = ('["' + tu.iso8601_from_timestamp(item['key']) +
              '"')
         for s in stats:
             m += ',' + str(item['statistics'][s])
         m += ']'
         if is_first:
             yield m
             is_first = False
         else:
             yield ',' + m
     yield ']}'
コード例 #11
0
 def _render_stats(dim):
     source = dim['dimension']['hits']['hits'][0]['_source']
     yield '{"name":"' + source['name'] + '","dimensions":'
     yield json.dumps(source['dimensions'])
     yield ',"columns":' + col_json + ',"statistics":['
     is_first = True
     for item in dim['periods']['buckets']:
         m = ('["' + tu.iso8601_from_timestamp(item['key']) +
              '"')
         for s in stats:
             m += ',' + str(item['statistics'][s])
         m += ']'
         if is_first:
             yield m
             is_first = False
         else:
             yield ',' + m
     yield ']}'