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)
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)
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 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 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 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()
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 ']}'
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 ']}'