Beispiel #1
0
        public static MemoryCpu GetCPU()
        {
            MemoryCpu  model = new MemoryCpu();
            SimpleSnmp snmp  = new SimpleSnmp("192.168.1.200", "public");

            try
            {
                //获取运行内存
                double TotalMemory = 0.0;                                                                                                   //内存总大小
                double UseMemory   = 0.0;                                                                                                   //内存使用大小
                Dictionary <SnmpSharpNet.Oid, AsnType> TotalMemorys = snmp.Get(SnmpVersion.Ver2, new string[] { ".1.3.6.1.2.1.25.2.2.0" }); ////获取总内存大小
                Dictionary <SnmpSharpNet.Oid, AsnType> UseMemorys   = snmp.Walk(SnmpVersion.Ver2, ".1.3.6.1.2.1.25.2.3.1.6");               //使用内存大小
                foreach (var item in TotalMemorys)
                {
                    TotalMemory += double.Parse(item.Value.ToString());
                }
                foreach (var item in UseMemorys)
                {
                    UseMemory += double.Parse(item.Value.ToString());
                }
                UseMemory = UseMemory / TotalMemory;
                //获取cpu负载
                double TotalCPU = 0;
                Dictionary <SnmpSharpNet.Oid, AsnType> result = snmp.Walk(SnmpVersion.Ver2, ".1.3.6.1.2.1.25.3.3.1.2"); //查找内容大小.这个编号我是用mib browser查出来的
                foreach (var item in result)
                {
                    TotalCPU += double.Parse(item.Value.ToString());
                }
                double RatioCPU = TotalCPU / result.Count;//获取比率
                model.Cpu    = RatioCPU.ToString() + "%";
                model.Memory = (UseMemory * 100).ToString("F2") + "%";
            }
            catch (Exception ee)
            {
            }
            return(model);
        }
        public ActionResult GetCPU()
        {
            MessageInfo memory = new MessageInfo();
            MemoryCpu model = SNMP_BLL.GetCPU();
            #region 内存
            //double capacity = 0.00;
            //double available = 0.00;
            ////获取总物理内存大小
            //ManagementClass cimobject1 = new ManagementClass("Win32_PhysicalMemory");
            //ManagementObjectCollection moc1 = cimobject1.GetInstances();
            //foreach (ManagementObject mo1 in moc1)
            //{
            //    capacity += Math.Round(Int64.Parse(mo1.Properties["Capacity"].Value.ToString()) / 1024 / 1024.0, 1);
            //    memory.CompanyFax = capacity.ToString();
            //}
            //moc1.Dispose();
            //cimobject1.Dispose();
            ////获取内存可用大小
            //ManagementClass cimobject2 = new ManagementClass("Win32_PerfFormattedData_PerfOS_Memory");
            //ManagementObjectCollection moc2 = cimobject2.GetInstances();
            //foreach (ManagementObject mo2 in moc2)
            //{
            //    available += Math.Round(Int64.Parse(mo2.Properties["AvailableMBytes"].Value.ToString()) / 1.0, 1);
            //    memory.CompanyName = available.ToString();
            //}
            //moc2.Dispose();
            //cimobject2.Dispose();
            //memory.CompanyQQ = (Math.Round((capacity-available) / capacity, 2) * 100).ToString() + "%";
            //#endregion

            //#region CPU
            //PerformanceCounter _oPerformanceCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total");
            //memory.ContactEmail = Math.Round(_oPerformanceCounter.NextValue(), 2).ToString() + "%";
            #endregion
            return Json(new { data = model }, JsonRequestBehavior.AllowGet);
        }