コード例 #1
0
        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)));
            }
        }
コード例 #2
0
        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));
                }
            }
        }