public ResponseBase <EmptyResponse> AddPerformance(AddPerformanceRequest req) { try { int nodeId = req.NodeId; if (nodeId > 0) { var node = noderepository.FindSingle(x => x.id == nodeId); if (node == null) { return(ResponseToClient <EmptyResponse>(ResponesStatus.Failed, "当前节点" + req.NodeId + "不存在库中!")); } } performancerepository.Add(new tb_performance() { cpu = double.Parse(req.Cpu), installdirsize = double.Parse(req.InstallDirsize), lastupdatetime = Convert.ToDateTime(req.Lastupdatetime), memory = double.Parse(req.Memory), nodeid = req.NodeId, taskid = req.TaskId }); return(ResponseToClient <EmptyResponse>(ResponesStatus.Success, "")); } catch (Exception ex) { return(ResponseToClient <EmptyResponse>(ResponesStatus.Exception, JsonConvert.SerializeObject(ex))); } }
protected override void Run() { var res = NodeProxy.PostToServer <EmptyResponse, UpdateNodeMonitorRequest>(ProxyUrl.UpdateNodeMonitorRequest_Url, new UpdateNodeMonitorRequest() { MonitorClassName = this.GetType().Name, MonitorStatus = (int)MonitorStatus.Monitoring, NodeId = GlobalNodeConfig.NodeID, Source = Source.Node }); if (res.Status != ResponesStatus.Success) { LogProxy.AddNodeErrorLog(this.GetType().Name + "监控组件上报监控信息失败,请求地址:" + ProxyUrl.UpdateNodeMonitorRequest_Url + ",返回结果:" + JsonConvert.SerializeObject(res)); } foreach (var taskruntimeinfo in TaskPoolManager.CreateInstance().GetList()) { try { if (taskruntimeinfo == null) { continue; } string fileinstallpath = AppDomain.CurrentDomain.BaseDirectory.TrimEnd('\\') + "\\" + GlobalNodeConfig.TaskDllDir + @"\" + taskruntimeinfo.TaskModel.id; double dirsizeM = -1; if (System.IO.Directory.Exists(fileinstallpath)) { long dirsize = IOHelper.DirSize(new DirectoryInfo(fileinstallpath)); dirsizeM = (double)dirsize / 1024 / 1024; } try { if (taskruntimeinfo.Domain != null) { //上报性能 AddPerformanceRequest addperformance = new AddPerformanceRequest() { NodeId = GlobalNodeConfig.NodeID, Cpu = taskruntimeinfo.Domain.MonitoringTotalProcessorTime.TotalSeconds.ToString(), Memory = ((double)taskruntimeinfo.Domain.MonitoringSurvivedMemorySize / 1024 / 1024).ToString(),//AppDomain当前正在使用的字节数(只保证在上一次垃圾回收时是准确的) InstallDirsize = dirsizeM.ToString(), TaskId = taskruntimeinfo.TaskModel.id, Lastupdatetime = (DateTime.Now).ToString(), Source = Source.Node, }; var r = NodeProxy.PostToServer <EmptyResponse, AddPerformanceRequest>(ProxyUrl.AddPerformance_Url, addperformance); if (r.Status != ResponesStatus.Success) { LogProxy.AddTaskErrorLog("任务性能上报出错,请求地址:" + ProxyUrl.AddPerformance_Url + ",请求内容:" + JsonConvert.SerializeObject(addperformance) + ",返回结果:" + JsonConvert.SerializeObject(r), taskruntimeinfo.TaskModel.id); } } } catch (Exception ex) { LogProxy.AddTaskErrorLog("任务性能监控时出错:taskid=" + taskruntimeinfo.TaskModel.id + ",异常信息:" + JsonConvert.SerializeObject(ex), taskruntimeinfo.TaskModel.id); } } catch (Exception exp) { LogProxy.AddNodeErrorLog("任务性能监控异常,异常信息:" + JsonConvert.SerializeObject(exp)); } } }