def search_host(request): client = get_client_by_request(request) param = json.loads(request.body) if param.get('ip'): param['ip'] = param['ip'].split('\n') result = CcApiAdapter.search_host(client, **param) monitor_list = MonitorHost.objects.all() result_list = [] if result['result']: for host in result['data']['info']: result_list.append({ 'ip': host['host']['bk_host_innerip'], 'os_name': host['host']['bk_os_name'], 'host_name': host['host']['bk_host_name'], 'bk_cloud_id': host['host']['bk_cloud_id'][0]['id'], 'bk_cloud_name': host['host']['bk_cloud_id'][0]['bk_inst_name'], 'bk_biz_id': host['biz'][0]['bk_biz_id'], 'is_monitor': host['host']['bk_host_innerip'] in [item.ip for item in monitor_list] }) return my_render_json(result_list)
def get_file_data(request): id = request.GET.get('id') if id: client = get_client_by_request(request) instance = MonitorHost.objects.get(id=id) execute_param = { 'bk_biz_id': instance.bk_biz_id, 'ip_list': [{ 'ip': instance.ip, 'bk_cloud_id': instance.bk_cloud_id, }], 'job_id': 3, } is_success, log_dict = execute_job_and_get_log(client, **execute_param) if not is_success: return render_json({'result': False, 'message': '查询执行日志失败'}) result_list = [] key_list = ['file_sys', 'total', 'use', 'no_use', 'syl', 'gzd'] key = host_key(instance.ip, instance.bk_cloud_id) rows = log_dict[key]['log_content'].split('\n')[1:] for row in rows: row_data_list = row.split() row_data = {} for i in xrange(len(key_list)): row_data[key_list[i]] = row_data_list[i] result_list.append(row_data) return my_render_json(result_list)
def list_host(request): # param = request.GET result_list = [] for item in MonitorHost.objects.all(): result_list.append(model_to_dict(item)) return my_render_json(result_list)
def search_sys_data(request): client = get_client_by_request(request) param = json.loads(request.body) script_content = '''MEMORY=$(free -m | awk 'NR==2{printf "%.2f%%", $3*100/$2 }') DISK=$(df -h | awk '$NF=="/"{printf "%s", $5}') CPU=$(top -bn1 | grep load | awk '{printf "%.2f%%", $(NF-2)}') DATE=$(date "+%Y-%m-%d %H:%M:%S") echo -e "$DATE|$MEMORY|$DISK|$CPU"''' is_success, log_dict = execute_script_and_get_log(client, param['bk_biz_id'], param['ip_list'], script_content) if is_success: log_info = {} for log in log_dict.values(): log_info = log metrics = log_info['log_content'].split('|') return my_render_json({ 'mem': metrics[1][:-1], 'disk': metrics[2][:-1], 'cpu': metrics[3][:-1], }) else: return render_json({'reuslt': False, 'message': '查询失败'})
def execute_job(request): # 存记录到表里 # 执行job client = get_client_by_request(request) param = json.loads(request.body) hosts = param.pop('hosts') ip_list = [{ 'ip': h['bk_host_innerip'], 'bk_cloud_id': h['bk_cloud_id'] } for h in hosts] param['ip_list'] = ip_list execute_job_result = JobApiAdapter.execute_job(client, **param) if not execute_job_result['result']: return render_json({ 'result': False, 'message': execute_job_result['message'] }) job_record = { 'bk_biz_id': param['bk_biz_id'], 'job_id': param['bk_job_id'], 'job_instance_id': execute_job_result['data']['job_instance_id'], 'ips': ','.join([h['ip'] for h in ip_list]), 'create_user': request.user.username, 'update_user': request.user.username, } JobRecord.objects.create(**job_record) return my_render_json()
def get_mem_data(request): id = request.GET.get('id') if id: client = get_client_by_request(request) instance = MonitorHost.objects.get(id=id) execute_param = { 'bk_biz_id': instance.bk_biz_id, 'ip_list': [{ 'ip': instance.ip, 'bk_cloud_id': instance.bk_cloud_id, }], 'job_id': 2, } is_success, log_dict = execute_job_and_get_log(client, **execute_param) if not is_success: return render_json({'result': False, 'message': '查询执行日志失败'}) key = host_key(instance.ip, instance.bk_cloud_id) rows = log_dict[key]['log_content'].split('\n') data = rows[1][4:] mem_nums = data.split() total, use = float(mem_nums[0]), float(mem_nums[1]) not_use = total - use return my_render_json({ 'title': '', 'series': [{ 'value': use, 'name': '使用' }, { 'value': not_use, 'name': '剩余' }] })
def get_estand_data(request): id = int(request.GET.get('id')) param = request.GET start_time = param['startTime'] end_time = param['endTime'] item = MonitorHost.objects.get(id=id) t = datetime.datetime.now() + datetime.timedelta(hours=-1) performance_data = HostLoadData.objects.filter(host=item, create_time__gte=t) xAxis = [] loads = [] for data in performance_data: xAxis.append(str(data.create_time)) loads.append(data.load) return my_render_json({ "xAxis": xAxis, "series": [{ "name": "load", "type": "line", "data": loads }] })
def get_monitor_host_list(request): ip = request.GET.get('ip', '') if ip: host_list = MonitorHost.objects.filter(ip=request.GET.get('ip', '')) else: host_list = MonitorHost.objects.all() result_list = [] for item in host_list: result_list.append(model_to_dict(item)) return my_render_json(result_list)
def remove_monitor(request): param = json.loads(request.body) host = { 'ip': param['ip'], 'bk_cloud_id': param['bk_cloud_id'], 'bk_biz_id': param['bk_biz_id'], } try: instance = MonitorHost.objects.get(**host) except MonitorHost.DoesNotExist: pass else: instance.is_deleted = True instance.save() return my_render_json()
def add_monitor(request): param = json.loads(request.body) host = { 'ip': param['ip'], 'bk_cloud_id': param['bk_cloud_id'], 'bk_biz_id': param['bk_biz_id'], } try: MonitorHost.objects.get(is_deleted=False, **host) except MonitorHost.DoesNotExist: host.update({ 'create_user': request.user.username, 'update_user': request.user.username }) MonitorHost.objects.create(**host) return my_render_json()
def search_record(request): param = request.GET record_list = JobRecord.objects.filter(bk_biz_id=param['bk_biz_id']) if param.get('ip'): record_list = record_list.filter(ips__contains=param['ip']) result_list = [] for item in record_list: item_dict = model_to_dict(item) item_dict['status'] = item.get_status_display() item_dict['create_time'] = str(item.create_time) if item.log_content: item_dict['log_content'] = json.loads(item.log_content) else: item_dict['log_content'] = '' result_list.append(item_dict) return my_render_json(result_list)
def render_chart(request): param = request.GET try: instance = MonitorHost.objects.get(id=param['id']) except (MonitorHost.DoesNotExist, MonitorHost.MultipleObjectsReturned) as e: return render_json({'result': False, 'message': '该主机数据异常'}) t = datetime.datetime.now() + datetime.timedelta(hours=-1) data_list = HostData.objects.filter(host=instance, create_time__gte=t) xAxis = [] cpu_series = {'name': 'cpu', 'type': 'line', 'data': []} mem_series = {'name': 'mem', 'type': 'line', 'data': []} disk_series = {'name': 'disk', 'type': 'line', 'data': []} for data in data_list: xAxis.append(str(data.create_time)) cpu_series['data'].append(float(data.cpu)) mem_series['data'].append(float(data.mem)) disk_series['data'].append(float(data.disk)) return my_render_json({ 'xAxis': xAxis, 'series': [cpu_series, mem_series, disk_series] })
def delete_monitor_host(request): param = json.loads(request.body) obj = MonitorHost.objects.get(**param) obj.delete() return my_render_json()
def modify_description(request): param = json.loads(request.body) MonitorHost.objects.filter(id=param['id']).update( update_user=request.user.username, description=param['description']) return my_render_json()