C#监控-机器资源监控:CPU、内存、C盘、D盘资源监控及邮件预警
针对CPU、内存、C盘、D盘资源监控及邮件预警,要实现在页面上配置资源监控选项,并且页面上能看到资源使用情况,超出阈值,邮件预警,效果图如下:
配置监控列表页
2. 配置监控详情页
3. 实时监控信息展示页
4. 监控信息图标展示
5. 超出阈值发送预警邮件
实现详情:
处于性能上的优化,每个监控都写成了个单例,并且通过多线程来取得各个监控数据
CPU监控
通过PerformanceCounter("Processor", "% Processor Time", "_Total")的NextValue()来获取获取cpu占用率,注意该Counter的第一个值是无效的0,要等一个时间片后方能取得有效值
CPUMonitor.cs
usingSystem;usingSystem.Collections.Generic;usingSystem.Diagnostics;usingSystem.Linq;usingSystem.Text;namespaceXXX.XXX.QA.Platform.Core.Monitor{publicsealedclassCPUMonitor{privatestaticreadonlyCPUMonitorinstance=newCPUMonitor();privatePerformanceCounterpcCpuLoad;privateCPUMonitor(){//初始化CPU计数器pcCpuLoad=newPerformanceCounter("Processor","%ProcessorTime","_Total");pcCpuLoad.MachineName=".";pcCpuLoad.NextValue();System.Threading.Thread.Sleep(1000);}publicstaticCPUMonitorgetMonitor(){returninstance;}publicstaticfloatgetValue(){returninstance.pcCpuLoad.NextValue();}}}
2. 核数
由于有些指标要除以核数,所以这边也把核数读下
ProcessorCountMonitor.cs
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespacexxx.xxx.QA.Platform.Core.Monitor{publicsealedclassProcessorCountMonitor{publicstaticreadonlyProcessorCountMonitorinstance=newProcessorCountMonitor();privateintm_ProcessorCount=0;//CPU个数privateProcessorCountMonitor(){//CPU个数m_ProcessorCount=Environment.ProcessorCount;}publicstaticProcessorCountMonitorgetMonitor(){returninstance;}publicstaticintgetValue(){returngetMonitor().m_ProcessorCount;}}}
3. 内存、C、D盘监控监控
MemoryInfo.cs
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Runtime.InteropServices;usingSystem.Text;namespacexxx.xxx.QA.Platform.Core.Monitor{[StructLayout(LayoutKind.Sequential)]publicstructMEMORY_INFO{publicuintdwLength;publicuintdwMemoryLoad;//内存占用比publicUInt64dwTotalPhys;//总的物理内存大小publicUInt64dwAvailPhys;//可用的物理内存大小publicUInt64dwTotalPageFile;publicUInt64dwAvailPageFile;//可用的页面文件大小publicUInt64dwTotalVirtual;//返回调用进程的用户模式部分的全部可用虚拟地址空间publicUInt64dwAvailVirtual;//返回调用进程的用户模式部分的实际自由可用的虚拟地址空间}[StructLayout(LayoutKind.Sequential)]publicstructMEMORYSTATUSEX{publicuintdwLength;publicuintdwMemoryLoad;publiculongullTotalPhys;publiculongullAvailPhys;publiculongullTotalPageFile;publiculongullAvailPageFile;publiculongullTotalVirtual;publiculongullAvailVirtual;publiculongullAvailExtendedVirtual;}///<summary>///存放内存信息///</summary>publicclassMemoryInfo{publicuintmemoryLoad{get;set;}//返回00形式publiculongtotalPhys{get;set;}//以Bite为单位publiculongavailPhys{get;set;}//以Bite为单位}publicclassMemoryMonitor{///<summary>///获取内存信息///</summary>///<paramname="meminfo"></param>[DllImport("kernel32")]publicstaticexternvoidGlobalMemoryStatus(refMEMORY_INFOmeminfo);[DllImport("kernel32")]publicstaticexternboolGlobalMemoryStatusEx(refMEMORYSTATUSEXstat);///<summary>///获取内存信息///</summary>///<returns></returns>publicstaticMemoryInfogetMemoryInfo(){MEMORY_INFOmemInfo=newMEMORY_INFO();MEMORYSTATUSEXmemEx=newMEMORYSTATUSEX();memEx.dwLength=(uint)Marshal.SizeOf(typeof(MEMORYSTATUSEX));GlobalMemoryStatusEx(refmemEx);GlobalMemoryStatus(refmemInfo);MemoryInfomemoryInfo=newMemoryInfo();memoryInfo.memoryLoad=memInfo.dwMemoryLoad;memoryInfo.availPhys=memInfo.dwAvailPhys;memoryInfo.totalPhys=memInfo.dwTotalPhys;returnmemoryInfo;}///<summary>///获取内存占用率///</summary>///<returns></returns>publicstaticuintGetMenoryLoad(){MEMORY_INFOmemInfo=newMEMORY_INFO();MEMORYSTATUSEXmemEx=newMEMORYSTATUSEX();memEx.dwLength=(uint)Marshal.SizeOf(typeof(MEMORYSTATUSEX));GlobalMemoryStatusEx(refmemEx);GlobalMemoryStatus(refmemInfo);returnmemInfo.dwMemoryLoad;}///<summary>///获取指定驱动器的空间总大小(单位为B)///</summary>///<paramname="str_HardDiskName">只需输入代表驱动器的字母即可(大写)</param>///<returns></returns>publicstaticlongGetHardDiskSpace(stringstr_HardDiskName){longtotalSize=newlong();str_HardDiskName=str_HardDiskName+":\\";System.IO.DriveInfo[]drives=System.IO.DriveInfo.GetDrives();foreach(System.IO.DriveInfodriveindrives){if(drive.Name==str_HardDiskName){totalSize=drive.TotalSize;}}returntotalSize;}///<summary>///获取指定驱动器的剩余空间总大小(单位为B)///</summary>///<paramname="str_HardDiskName">只需输入代表驱动器的字母即可</param>///<returns></returns>publicstaticlongGetHardDiskFreeSpace(stringstr_HardDiskName){longfreeSpace=newlong();str_HardDiskName=str_HardDiskName+":\\";System.IO.DriveInfo[]drives=System.IO.DriveInfo.GetDrives();foreach(System.IO.DriveInfodriveindrives){if(drive.Name==str_HardDiskName){freeSpace=drive.TotalFreeSpace;}}returnfreeSpace;}}}
4. 把所有这些监控指标放入一个Util中
MonitorUtil.cs
usingNLog;usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading;namespacexxx.xxx.QA.Platform.Core.Monitor{publicclassMonitorUtil{privatestaticreadonlyLoggerLogger=LogManager.GetCurrentClassLogger();publicstaticMachineMonitorInfoGetMachineMonitorInfo(){MachineMonitorInfoinfo=newMachineMonitorInfo();ArrayListlistThread=newArrayList();//获取CPU占用比Threadthread1=newThread(delegate(){GetCpu(refinfo);});thread1.Start();listThread.Add(thread1);//获取CPU核数Threadthread2=newThread(delegate(){GetCpuCount(refinfo);});thread2.Start();listThread.Add(thread2);//获取可用内存Threadthread3=newThread(delegate(){GetMenoryAvaliable(refinfo);});thread3.Start();listThread.Add(thread3);//获取总内存Threadthread4=newThread(delegate(){GetMenoryTotal(refinfo);});thread4.Start();listThread.Add(thread4);//获取C盘可用空间Threadthread5=newThread(delegate(){GetCAvaliable(refinfo);});thread5.Start();listThread.Add(thread5);//获取C盘总空间Threadthread6=newThread(delegate(){GetCTotal(refinfo);});thread6.Start();listThread.Add(thread6);//获取D盘可用空间Threadthread7=newThread(delegate(){GetDAvaliable(refinfo);});thread7.Start();listThread.Add(thread7);//获取D盘总空间Threadthread8=newThread(delegate(){GetDTotal(refinfo);});thread8.Start();listThread.Add(thread8);foreach(ThreadthreadinlistThread){thread.Join();}returninfo;}publicstaticvoidGetCpu(refMachineMonitorInfoinfo){lock(info){info.CpuUsage=CPUMonitor.getValue();}}publicstaticvoidGetCpuCount(refMachineMonitorInfoinfo){lock(info){info.CoreNumber=ProcessorCountMonitor.getValue();}}publicstaticvoidGetMenoryAvaliable(refMachineMonitorInfoinfo){lock(info){info.MemoryAvailable=(MemoryMonitor.getMemoryInfo().availPhys/(1024*1024));}}publicstaticvoidGetMenoryTotal(refMachineMonitorInfoinfo){lock(info){info.PhysicalMemory=(MemoryMonitor.getMemoryInfo().totalPhys/(1024*1024));}}publicstaticvoidGetCAvaliable(refMachineMonitorInfoinfo){lock(info){info.CHardDiskFreeSpace=(MemoryMonitor.GetHardDiskFreeSpace("C")/(1024*1024));}}publicstaticvoidGetCTotal(refMachineMonitorInfoinfo){lock(info){info.CHardDiskSpace=(MemoryMonitor.GetHardDiskSpace("C")/(1024*1024));}}publicstaticvoidGetDAvaliable(refMachineMonitorInfoinfo){lock(info){info.DHardDiskFreeSpace=(MemoryMonitor.GetHardDiskFreeSpace("D")/(1024*1024));}}publicstaticvoidGetDTotal(refMachineMonitorInfoinfo){lock(info){info.DHardDiskSpace=(MemoryMonitor.GetHardDiskSpace("D")/(1024*1024));}}}[Serializable]publicclassMachineMonitorInfo{publicfloatCpuUsage{get;set;}publicintCoreNumber{get;set;}publicfloatMemoryAvailable{get;set;}publicfloatPhysicalMemory{get;set;}publicfloatCHardDiskFreeSpace{get;set;}publicfloatDHardDiskFreeSpace{get;set;}publicfloatCHardDiskSpace{get;set;}publicfloatDHardDiskSpace{get;set;}}}
5. 新建个定时触发的task来监控
MonitorTask.cs
usingFluentScheduler;usingNLog;usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;namespacexxx.xxx.QA.Platform.EnvAgent.Services.Tasks{publicclassMonitorTask:ITask{privatestaticreadonlyobjectLocker=newobject();privatestaticbool_isRunning;privatestaticreadonlyLoggerLogger=LogManager.GetCurrentClassLogger();publicvoidExecute(){if(_isRunning){return;}ChangeState(true);try{Logger.Info("Monitorstart");EnvMachineenvMachine=EnvMachineBiz.GetCurrentMachine();#region机器监控EnvMachineMonitorConfigmonitorConfig=EnvMachineMonitorConfigBiz.GetCurrentMachineMonitorConfig();//判断监控开启if(monitorConfig!=null&&monitorConfig.Turnon==1){//Logger.Info("监控开始时间:"+DateTime.Now.ToLocalTime());//获取机器实时监控信息MachineMonitorInfoinfo=MonitorUtil.GetMachineMonitorInfo();intcpu=(int)info.CpuUsage;intmemory=(int)((info.MemoryAvailable/info.PhysicalMemory)*100);intc=(int)(((info.CHardDiskSpace-info.CHardDiskFreeSpace)/info.CHardDiskSpace)*100);intd=(int)(((info.DHardDiskSpace-info.DHardDiskFreeSpace)/info.DHardDiskSpace)*100);DateTimetime=DateTime.Now.ToLocalTime();//实时监控信息插入数据库Logger.Info("AddMachineMonitorinfo("+envMachine.Id+","+cpu+","+memory+","+time+")");EnvMachineMonitornewInfo=EnvMachineMonitorBiz.AddMachineMonitorInfo(envMachine.Id,cpu,memory,c,d,time);//Logger.Info("Result:success,returnEnvMachineMonitoridis"+newInfo.Id);#region机器预警if(monitorConfig.Issendmail==1){DateTimedn=DateTime.Now.ToLocalTime();//Logger.Info("现在时间:"+dn.ToLocalTime());//Logger.Info("时间器时间:"+EmailSendTime.GetTime().ToLocalTime());//Logger.Info("时间差:"+EmailSendTime.GetTimeSpanSecond(dn).ToString()+"s");if(EmailSendTime.GetTimeSpanSecond(dn)>15){stringreciever=monitorConfig.Recievers;//未设置情况默认为该账户if(reciever==null||reciever.Equals("")){reciever="chenjz@Ctrip.com";}boolflag=false;stringbody=envMachine.IP+"<br/><h4>时间</h4>"+time;//CPU占用率过高报警:邮件告知if(monitorConfig.Cpu!=null&&cpu>monitorConfig.Cpu||cpu>95){body+="<h4>CPU占用率超标</h4>CPU占用率:"+cpu+"(阈值:"+monitorConfig.Cpu+")<br/><br/>";flag=true;}//内存占用率过高报警:邮件告知if(memory>monitorConfig.Memery||memory>95){body+="<h4>内存占用率超标</h4>内存占用率:"+memory+"(阈值:"+monitorConfig.Memery+")<br/><br/>";flag=true;}//C盘占用率过高报警:邮件告知if(c>monitorConfig.C||c>95){body+="<h4>C盘占用率超标</h4>C盘占用率:"+c+"(阈值:"+monitorConfig.C+")<br/><br/>";flag=true;}//D盘占用率过高报警:邮件告知if(d>monitorConfig.D||d>95){body+="<h4>D盘占用率超标</h4>D盘占用率:"+d+"(阈值:"+monitorConfig.D+")<br/><br/>";flag=true;}if(flag){Mail.SendMailWithHtml2(reciever,"机器预警:"+envMachine.Name,body,"xxx@Ctrip.com");Logger.Info("Send机器预警mail:"+body);EmailSendTime.SetTime(dn);//Logger.Info("时间器时间设为:"+EmailSendTime.GetTime().ToLocalTime());//Logger.Info("监控结束时间:"+DateTime.Now.ToLocalTime());}}}#endregion}#endregion}catch(Exceptionex){Logger.Error("MonitorTask异常信息:"+ex.ToString());}finally{ChangeState(false);}}privatevoidChangeState(boolrunning){lock(Locker){_isRunning=running;}}}publicclassAppPoolMonitorInfo{publicstringname{get;set;}publicstringturnOn{get;set;}}}
6. 注册下task
publicclassTaskRegistry:Registry{privatestaticreadonlyLoggerLogger=LogManager.GetCurrentClassLogger();publicTaskRegistry(){Logger.Info("每1分钟执行下机器监控");Schedule<MonitorTask>().ToRunNow().AndEvery(1).Minutes();}}
存数据基本完成了,所用表如下:
配置表:
监控数据表:
前端展示:
用的引用有:
@Styles.Render("~/Content/themes/metro/css")
@Styles.Render("~/Content/themes/custom/chcore.css")
@Styles.Render("~/Content/themes/fakeloader/fakeloader.css")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/Scripts/jquery.mousewheel.js")
@Scripts.Render("~/Scripts/jquery.widget.min.1.9.1.js")
@Scripts.Render("~/Scripts/highcharts4.1.8/highcharts.js")
@Scripts.Render("~/Scripts/highcharts4.1.8/exporting.js")
@Scripts.Render("~/Scripts/jquery.datatables.js")
@Scripts.Render("~/Scripts/custom/chcoreui.js")
@Scripts.Render("~/Scripts/custom/Chart.js")
@Scripts.Render("~/Scripts/pages/envhomepage.js")
@Scripts.Render("~/Scripts/control/fakeloader/fakeloader.min.js")
@*@Scripts.Render("~/Scripts/combined/envhome.min.js")*@
@Scripts.Render("~/Scripts/metro.min.js")
显示页面js
图标用highcharts4.1.8实现
///Machine-Infomation///varinformationpage={render:function(){varmainContainer=$(pageid.mainContent);mainContainer.empty();//toolbarmainContainer.append('<divid="iistoolbarsub"class="margin20no-margin-top"><buttonclass="info"id="btnloadMachineMonitorInfo">载入机器监控信息</button><divid="iiscontent"><divid="machinemonitor"></div></div></div>');//#region注册载入机器监控信息按钮事件$('#btnloadMachineMonitorInfo').click(function(){informationpage.getMachineMonitorInfo();});},IISReset:function(id){varmachine=pagefind.currentMachine();varsender=$("#"+id);varip=machine.IP;iisresetpage.postReset(ip,sender);},getMachineMonitorInfo:function(){varcontainer=$("#machinemonitor");varmachine=pagefind.currentMachine();container.empty();if(machine==null){$.note(null,'请先选择环境&机器','error');return;}container.append('<divid="container1"></div><divid="container2"></div>');varcontainer1=$("#container1");varcontainer2=$("#container2");chcoreui.attachLoader(container1,pageid.loader,410,100);varurl='http://'+machine.IP+':8167/MachineMonitor/GetMachineMonitorInfo';varpack=newObject();pack.Token=$.readCookie('accessToken');varsubmitData=JSON.stringify(pack);$.ajax({type:"POST",url:url,data:submitData,dataType:"json",contentType:"application/json",crossDomain:true,success:function(results){if(results.StateCode==0){varbodyContent='';varmemoryvalue=((results.Data.PhysicalMemory-results.Data.MemoryAvailable)/results.Data.PhysicalMemory).toFixed(4)*100;varcvalue=(1-results.Data.CHardDiskFreeSpace/results.Data.CHardDiskSpace).toFixed(4)*100;vardvalue=(1-results.Data.DHardDiskFreeSpace/results.Data.DHardDiskSpace).toFixed(4)*100;bodyContent+='<tr><td>CPU</td><td><divclass="progressbar_3"><divclass="text">'+results.Data.CpuUsage+'%</div><divclass="bar"></div></div></div></td><td>'+results.Data.CoreNumber+'核</td><td></td><td><buttonclass="warning"id="IISRestBtn"onclick="informationpage.IISReset(id)">IISReset</button></td></tr>';bodyContent+='<tr><td>内存</td><td><divclass="progressbar_3"><divclass="text">'+memoryvalue+'%</div><divclass="bar"></div></div></div></td><td>'+results.Data.PhysicalMemory+'MB</td><td>'+results.Data.MemoryAvailable+'MB</td><td><!--<buttonclass="warning"id="enlargeMenory">申请扩充内存</button>--></td></tr>';bodyContent+='<tr><td>C盘</td><td><divclass="progressbar_3"><divclass="text">'+cvalue+'%</div><divclass="bar"></div></div></div></td><td>'+results.Data.CHardDiskSpace+'MB</td><td>'+results.Data.CHardDiskFreeSpace+'MB</td><td><!--<buttonclass="warning"id="enlargeMenory">申请扩充C盘</button>--></td></tr>';bodyContent+='<tr><td>D盘</td><td><divclass="progressbar_3"><divclass="text">'+dvalue+'%</div><divclass="bar"></div></div></div></td><td>'+results.Data.DHardDiskSpace+'MB</td><td>'+results.Data.DHardDiskFreeSpace+'MB</td><td><!--<buttonclass="warning"id="enlargeMenory">申请扩充D盘</button>--></td></tr>';container1.html('<tableclass="tableborderedstripedhovereddataTable"cellspacing="0"id="machineMonitortable"><thead><tr><th>Name</th><th>占用百分比</th><th>总数</th><th>可用</th><th>Action</th></tr></thead><tbody>'+bodyContent+'</tbody></table>');$('#machineMonitortable').dataTable({"paging":false,"searching":true,"ordering":false,"info":false,"striped":false,//"scrollY":"450px","scrollCollapse":true});$('#machineMonitortable').removeClass("striped");//$(".progress-bar").onShow();}},error:function(xhr,status,error){$.note('Error','获取机器监控信息失败,请联系管理员(qyli).','error');}});chcoreui.attachLoader(container2,pageid.loader,410,100);varurl2='/MachineMonitor/GetMonitorInfos?ip='+machine.IP;varpack=newObject();pack.Token=$.readCookie('accessToken');varsubmitData=JSON.stringify(pack);$.ajax({type:"POST",url:url2,data:submitData,dataType:"json",contentType:"application/json",crossDomain:true,success:function(results){if(results.StateCode==0){$.cpuandmemorychart(container2,results.Data);}else{$.note('获取数据库中机器监控信息失败.'+results.Message,'error');}},error:function(xhr,status,error){$.note('Error','获取数据库中机器监控信息失败','error');}});},};
图标显示js
(function($){$.cpuandmemorychart=function(container,monitorinfo){vartime=newArray();varcpu=newArray();varmemory=newArray();varc=newArray();vard=newArray();vari=0;$.each(monitorinfo,function(name,value){time[i]=$.convertToDateStr(value.Time);cpu[i]=value.Cpu;memory[i]=value.Memory;c[i]=value.C;d[i]=value.D;i++;});container.highcharts({title:{text:'机器资源监控',x:-20//center},subtitle:{text:'CPU、内存、C盘、D盘占用率',x:-20},xAxis:{categories:time},yAxis:{title:{text:'百分比(%)'},plotLines:[{value:0,width:1,color:'#808080'}]},tooltip:{valueSuffix:'%'},legend:{layout:'vertical',align:'right',verticalAlign:'middle',borderWidth:0},series:[{name:'CPU',data:cpu},{name:'内存',data:memory},{name:'C盘',data:c},{name:'D盘',data:d}]});}})(jQuery);
2. 配置页面js
varmonitorconfigpage={render:function(){varcontainer=$(pageid.mainContent);container.empty();chcoreui.attachLoader(container,pageid.loader,410,100);varurl='/MachineMonitor/MonitorConfig';$.getJSON('/MachineMonitor/MonitorConfig',function(results){if(results.StateCode==0){//成功varbodyContent='';$.each(results.Data,function(idx,item){bodyContent+='<tr><td><buttonclass="linkinvokebtn"><iclass="icon-play"></i></button></td><td>'+item.MachineName+'</td><td>'+item.IPAddress+'</td><td>'+item.DomainName+'</td><td><divclass="progressbar_3"><divclass="text">'+item.Cpu+'%</div><divclass="bar"></div></div></div></td><td><divclass="progressbar_3"><divclass="text">'+item.Memory+'%</div><divclass="bar"></div></div></div></td><td><inputclass="turnonckbox"id="'+item.MachineName+'"type="checkbox"';if(item.Turnon==true){bodyContent+="checked"}bodyContent+='data-size="mini"data-on-color="success"></td><td><buttonclass="linkmonitorconfigbtn"id="'+item.MachineName+'"><spanclass="mif-loop2"></span>配置</button> <buttonclass="iisresetbtnwarning"><iclass="icon-playon-left"></i>IISRESET</button><!--<buttonclass="linkmonitormachinedetailbtn"id="'+item.MachineName+'"><spanclass="mif-loop2"></span>查看机器详情</button><buttonclass="linkmonitorapppooldetailbtn"id="'+item.MachineName+'"><spanclass="mif-loop2"></span>查看程序池详情</button>--></td></tr>';});container.empty();container.html('<div><buttonclass="refreshbtnsuccess"><iclass="icon-cycleon-left"></i>刷新</button></div><tableclass="tableborderedstripedhovereddataTable"cellspacing="0"id="apppooltable"><thead><tr><th><buttonclass="invokeallbtnwarning"><iclass="icon-playon-left"></i>唤醒监控</button></th><th>机器名</th><th>IP地址</th><th>环境名称</th><th>CPU占用比</th><th>内存占用比</th><th>开启监控</th><th>Actions</th></tr></thead><tbody>'+bodyContent+'</tbody></table>');$('#apppooltable').dataTable({"paging":false,"searching":true,"ordering":true,"info":"程序池信息表",//"scrollY":"450px","scrollCollapse":true,"dom":'<"tool1bar">fr1tip'});$(".turnonckbox").change(function(){varname=this.id;if($('#'+name+'').is(':checked')){monitorconfigpage.postTurnOn(name);}else{monitorconfigpage.postTurnOff(name);}});$(".refreshbtn").click(function(){monitorconfigpage.render();});$(".iisresetbtn").click(function(){varparentobj=$(this).parent();varip=parentobj.parent().prev().prev().prev().prev().prev().text();iisresetpage.postReset(ip,$(this))});$(".invokebtn").click(function(){monitorconfigpage.startInvoke($(this));});$(".invokeallbtn").click(function(){if(!$(this).hasClass('disabled')){varsyncbtns=$('.invokebtn');$(this).addClass('disabled');$.each(syncbtns,function(idx,item){item.click();});}});$(".monitorconfigbtn").click(function(){varname=this.id;monitorconfigpage.getConfigDialog(name);});}});},getConfigDialog:function(name){$.setting("settingDiv","高级配置:"+name,"900px","400px");chcoreui.attachLoader($("#settingDiv"),pageid.loader,410,100);$.getJSON('/MachineMonitor/GetMonitorSetting?name='+name,null,function(data){if(data){$("#settingDiv").empty();$("#MonitorSettingTemplate").tmpl(data.Data).appendTo("#settingDiv");if(data.Data.Issendmail==1){$("#issendmail").attr("checked",true);}else{$("#issendmail").attr("checked",false);}if(data.Data.Isdownloadpdump==1){$("#isdownloadpdump").attr("checked",true);}else{$("#isdownloadpdump").attr("checked",false);}if(data.Data.Isdownloadadump==1){$("#isdownloadadump").attr("checked",true);}else{$("#isdownloadadump").attr("checked",false);}$("#recievers").val(data.Data.Recievers);}$('#comitSettingBtn').click(function(){monitorconfigpage.commitMonitorConfig(name);$.Dialog.close();});$('#cancelCommitBtn').click(function(){monitorconfigpage.getConfigDialog(name);});$('#closeCommitBtn').click(function(){$.Dialog.close();});});},commitMonitorConfig:function(name){varurl='/MachineMonitor/CommitMonitorConfig';varpack=newObject();pack.Token=$.readCookie('accessToken');pack.machineName=name;varconfig=newObject();config.cpu=$("#cpu").val();config.memery=$("#memery").val();config.c=$("#c").val();config.d=$("#d").val();if($("#issendmail").is(':checked')){config.issendmail="1";}else{config.issendmail="0";}config.recievers=$("#recievers").val();if($("#isdownloadpdump").is(':checked')){config.isdownloadpdump=1;}else{config.isdownloadpdump=0;}config.pcpu=$("#pcpu").val();if($("#isdownloadadump").is(':checked')){config.isdownloadadump=1;}else{config.isdownloadadump=0;}config.acpu=$("#acpu").val();pack.config=config;varsubmitData=JSON.stringify(pack);$.ajax({type:"POST",url:url,data:submitData,dataType:"json",contentType:"application/json",crossDomain:true,success:function(results){if(results.data=="0"){$.note(null,"修改"+name+"监控配置成功!");}else{$.note(error,"修改"+name+"监控配置失败!");}},error:function(xhr,status,error){$.note(error,"发送修改"+name+"监控配置请求失败!");}});},postTurnOn:function(name){token=$.readCookie('accessToken');$.post("/MachineMonitor/TurnOnMonitor",{"name":name,"alis":token},function(data){if(data.StateCode==0){$.note(null,'开启监控'+name+'成功.');}else{$.note(null,'开启监控'+name+'失败.');}});},postTurnOff:function(name){token=$.readCookie('accessToken');$.post("/MachineMonitor/TurnOffMonitor",{"name":name,"alis":token},function(data){if(data.StateCode==0){$.note(null,'关闭监控'+name+'成功.');}else{$.note(null,'关闭监控'+name+'失败.');}});},startInvoke:function(sender){varparentObj=sender.parent();parentObj.empty();parentObj.append('<imgsrc="../img/loading.jpg"id="iloader"/>');varip=parentObj.next().next().text();varurl='http://'+ip+':8167/Monitor/Ping';$.ajax({type:"POST",url:url,data:null,dataType:"json",contentType:"application/json",crossDomain:true,success:function(results){parentObj.empty();varreg=/\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2}/;if(reg.test(results)){$.note(null,'唤醒'+ip+'监控成功!');parentObj.append('<buttonclass="linkinvokesuccessbtn"><iclass="icon-checkmarkfg-green"></i></button>');$('.invokesuccessbtn').click(function(){monitorconfigpage.startInvoke($(this));});}else{$.note('Error','唤醒'+ip+'失败!','error');parentObj.append('<buttonclass="linkinvokefailbtn"><iclass="icon-cancel-2fg-red"></i></button>');$('.invokefailbtn').click(function(){monitorconfigpage.startInvoke($(this));});}},error:function(xhr,status,error){$.note('Error','唤醒'+ip+'失败!'+error,'error');parentObj.empty();parentObj.append('<buttonclass="linkinvokefailbtn"><iclass="icon-cancel-2fg-red"></i></button>');$('.invokefailbtn').click(function(){monitorconfigpage.startInvoke($(this));});}});}}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。