def new_chart(self, k): try: row = Charts() row.name = 'hp-' + '-'.join(str(i) for i in k) row.owner = '' row.cate_id = CATEGORY_ID row.ds_id = 0 row.ds_tbl_name = '' row.ext_info = '' row.followers = 0 row.createtime = datetime.datetime.now() self.sakuya_db.add(row) self.sakuya_db.commit() logging.info('Create chart %d - %s' % (row.id, row.name)) return row.id except Exception: self.sakuya_db.rollback() logging.exception('Fail to create chart %s' % str(k)) return None finally: try: f.close() except Exception: pass
def add_chart(cate_id, title, rule_type, host, api): if session.query(Charts).filter_by(name=title).count(): print title, 'exists' return # make rule rule = { 'datasource': 'access_log', 'logging': False, 'filters': [['host', 'equals', False, host], ['request_url', 'regex', False, '.*?%s.*' % api]] } if rule_type == 'count': rule['rule_type'] = 'count' rule['field'] = None elif rule_type == 'ninety': rule['rule_type'] = 'ninety' rule['field'] = 'upstream_response_time' else: assert False # make warn warn = [["00:00", "08:59", "RANGE", "200", "400", "30", "50", "60", "5"], ["09:00", "20:59", "RANGE", "200", "400", "30", "50", "5", "2"], ["21:00", "23:59", "RANGE", "200", "400", "30", "50", "60", "5"]] # add chart row = Charts() row.name = title row.cate_id = cate_id row.owner = 'mingshi' row.ext_info = json.dumps({'rule': rule}) row.alert_enable = 0 row.createtime = datetime.datetime.now() session.add(row) session.flush() rowid = row.id # add follow follow = Follows() follow.cid = rowid follow.follower = 19 follow.recv_warning = True session.add(follow) session.commit() # storm storm.set_rule(rowid, json.dumps(rule)) print title, 'added'
def add_chart(cate_id, title, rule_type, host, api): if session.query(Charts).filter_by(name=title).count(): print title, "exists" return # make rule rule = { "datasource": "access_log", "logging": False, "filters": [["host", "equals", False, host], ["request_url", "regex", False, ".*?%s.*" % api]], } if rule_type == "count": rule["rule_type"] = "count" rule["field"] = None elif rule_type == "ninety": rule["rule_type"] = "ninety" rule["field"] = "upstream_response_time" else: assert False # make warn warn = [ ["00:00", "08:59", "RANGE", "200", "400", "30", "50", "60", "5"], ["09:00", "20:59", "RANGE", "200", "400", "30", "50", "5", "2"], ["21:00", "23:59", "RANGE", "200", "400", "30", "50", "60", "5"], ] # add chart row = Charts() row.name = title row.cate_id = cate_id row.owner = "mingshi" row.ext_info = json.dumps({"rule": rule}) row.alert_enable = 0 row.createtime = datetime.datetime.now() session.add(row) session.flush() rowid = row.id # add follow follow = Follows() follow.cid = rowid follow.follower = 19 follow.recv_warning = True session.add(follow) session.commit() # storm storm.set_rule(rowid, json.dumps(rule)) print title, "added"
def add(sakuya_db): rule = None warn = None def error(msg): rt = _rt(sakuya_db) rt['forms'] = request.forms rt['forms']['rule'] = dump_rule(rule) rt['forms']['warn'] = dump_warn(warn) rt['error_msg'] = msg rt['warn_only'] = False rt['is_haopan'] = False return rt try: use_storm = request.forms['use_storm'] == '1' if use_storm: rule = make_rule() if not rule['datasource'] or not rule['filters']: raise ValueError alert_enable = request.forms['alert_enable'] == '1' warn = make_warn() if alert_enable and not warn: raise ValueError name = request.forms['name'] if not name: raise ValueError cid = int(request.forms['cid']) if not sakuya_db.\ query(Categories).\ filter_by(id=cid, is_parent=False).\ count(): raise ValueError owner = request.forms['owner'] if not sakuya_db.\ query(Users).\ filter_by(username=owner).\ count(): raise ValueError except Exception: return error('参数错误。') # add chart try: row = Charts() row.name = name row.owner = owner row.cate_id = cid row.root_category = get_parent_category(sakuya_db, cid) row.ds_id = 0 row.ds_tbl_name = '' row.ext_info = '' row.followers = 0 row.createtime = datetime.datetime.now() row.alert_enable = int(alert_enable) ext = {} if use_storm: ext['rule'] = rule row.ext_info = json.dumps(ext) sakuya_db.add(row) sakuya_db.flush() rowid = row.id sakuya_db.commit() except Exception: traceback.print_exc() sakuya_db.rollback() return error('图表添加失败。') process_warn_rules(sakuya_db, rowid, warn) if use_storm: storm.set_rule(rowid, json.dumps(rule)) redirect('/admin/category/%d' % cid) else: redirect('/admin/chart/success/%d' % rowid)
# make rule rule = { 'datasource': 'access_log', 'rule_type': rule_type } if rule_type == 'ninety': rule['field'] = 'upstream_response_time' else: rule['field'] = None rule['filters'] = [] for filter in filters: rule['filters'].append([filter[0], filter[1], False, filter[2]]) # add to database row = Charts() row.name = title row.owner = '系统' row.cate_id = SOLR_CATE_ID row.ext_info = json.dumps({'rule': rule}) row.createtime = datetime.datetime.now() sakuya_db.add(row) sakuya_db.flush() id = row.id sakuya_db.commit() # set storm storm.set_rule(id, json.dumps(rule)) # return id return util.output('ok', id=id)
except Exception, e: return util.output('error', msg='Invalid parameters.') # make rule rule = {'datasource': 'access_log', 'rule_type': rule_type} if rule_type == 'ninety': rule['field'] = 'upstream_response_time' else: rule['field'] = None rule['filters'] = [] for filter in filters: rule['filters'].append([filter[0], filter[1], False, filter[2]]) # add to database row = Charts() row.name = title row.owner = '系统' row.cate_id = SOLR_CATE_ID row.ext_info = json.dumps({'rule': rule}) row.createtime = datetime.datetime.now() sakuya_db.add(row) sakuya_db.flush() id = row.id sakuya_db.commit() # set storm storm.set_rule(id, json.dumps(rule)) # return id return util.output('ok', id=id)