1. 程式人生 > >伺服器效能監控之WMI

伺服器效能監控之WMI

1.WMI簡介
WMI是英文Windows Management Instrumentation的簡寫,通過使用WMI,我們可以獲取本地或遠端伺服器的效能引數和程序執行情況,以及大部分硬體資訊,但前提是執行的使用者要有足夠的許可權,如administrator組使用者等。這也是做負載均衡所需要且比較方便快捷的途徑。

2.使用時首先新增System.Management.dll,然後引用

using System.Management; 3.定義遠端訪問  public class ManagementConnectPool
    ...{
        private static System.Management.ConnectionOptions Conn = new
 ConnectionOptions() ;
        private static ManagementObjectSearcher mos = new ManagementObjectSearcher();
        private string username = "";
        private string pwd = "";
        private string space="";
        private string server = "";

        public ManagementConnectPool(string mpusername,string
 mppwd , string mpspace ,string mpserver)
        ...{
            this.username = mpusername;
            this.pwd = mppwd;
            this.space = mpspace;
            this.server = mpserver;
            Conn.Username = mpusername;
            Conn.Password = mppwd;
            string scopestring ="//" + mpserver + mpspace;
            System.Management.ManagementScope Ms = new ManagementScope(scopestring);
            Ms.Connect();
            mos.Scope = Ms;
        }


        public ManagementObjectCollection getQueryResult(string queryString)
        ...{
            ObjectQuery oq = new ObjectQuery();
            oq.QueryString = queryString;
            mos.Query = oq;
            ManagementObjectCollection moc =mos.Get();
            return moc;
        }

    }

4.獲取CPU,記憶體,網路流量等資訊

public class Monitor
    ...
        private string username = "";
        private string pwd ="";
        private string ip = "";
        ManagementConnectPool mcp;
        WMSServerClass server;
        

        public Monitor(string username,string pwd,string ip)...{
            this.username = username;
            this.pwd = pwd ;
            this.ip = ip;
            mcp = new ManagementConnectPool(username,pwd,"/root/cimv2",ip);
            server = new WMSServerClass();
        }


        WMI方式獲取網絡卡流量#region WMI方式獲取網絡卡流量
        private void getNetWorkFlow()
        ...{
            ManagementObjectCollection moc = mcp.getQueryResult(@"select * from Win32_NetworkAdapter where macaddress<>null and manufacturer<>'Microsoft'");
            string[] list = new string[moc.Count] ;
            foreach(System.Management.ManagementObject mymac in moc) 
            ...
                string a =  mymac["Speed"].ToString();//null WMI未實現該屬性
                Console.WriteLine(a.ToString());
            }

        }

        #endregion
    
            
        WMI方式獲取CPU資訊#region WMI方式獲取CPU資訊
        private void getCpuInfo()
        ...{
            ManagementObjectCollection moc = mcp.getQueryResult("select * from Win32_Processor");
            string[] list = new string[moc.Count];
            int i = 0;
            foreach(ManagementObject mo  in moc)
            ...{    
                string total = mo.GetPropertyValue("LoadPercentage").ToString();
                list[i]=total;
                i++;
            }

        }

        #endregion


        WMI方式獲取記憶體使用率#region WMI方式獲取記憶體使用率
        public string getMemoryUsage()
        ...{
            ManagementObjectCollection moc = mcp.getQueryResult("select * from Win32_LogicalMemoryConfiguration");
            int totalm = 1; int avilablem = 1;
            foreach(ManagementObject mo  in moc)
            ...{
                string total = mo.GetPropertyValue("TotalPhysicalMemory").ToString();
                totalm = int.Parse(total);
            }

            moc = mcp.getQueryResult("select * from Win32_PerfRawData_PerfOS_Memory");
            foreach(ManagementObject mo  in moc)
            ...{
                string avilable = mo.GetPropertyValue("AvailableKBytes").ToString();
                avilablem = int.Parse(avilable);
            }

            int usedm = totalm - avilablem;
            double memoryusage = (double)usedm * (double)100 / (double)totalm ;
            return memoryusage.ToString();
        }

        #endregion

}

5.獲取本地機器資訊(WEB)

1.如何用WMI獲得指定磁碟的容量#region 1.如何用WMI獲得指定磁碟的容量
         private string DriveType(string type)
          ...{
             string rtntype="";
             switch (type)
              ...{
                 case "1":
                     rtntype="Not Type";
                     break;
                 case "2":
                     rtntype="Floppy disk";
                     break;
                 case "3":
                     rtntype="Hard disk";
                     break;
                 case "4":
                     rtntype="Removable drive or network drive";
                     break;
                 case "5":
                     rtntype="CD-ROM";
                     break;
                 case "6":
                     rtntype="RAM disk";
                     break;
                 default :
                     break;
             }

             return rtntype;
         }

 
         private void Button1_Click(object sender, System.EventArgs e)
          ...{
             SelectQuery query=new SelectQuery("Select * From Win32_LogicalDisk"); 
             ManagementObjectSearcher searcher=new ManagementObjectSearcher(query); 
             foreach(ManagementBaseObject disk in searcher.Get()) 
              ...
                 Response.Write(disk["Name"] +" "+DriveType(disk["DriveType"].ToString()) + " " + disk["VolumeName"]+"<br>"); 
             }

         }

         #endregion

 
          2.如何用WMI獲得指定磁碟的容量#region 2.如何用WMI獲得指定磁碟的容量
         private void Button2_Click(object sender, System.EventArgs e)
          ...{
             ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid="c:""); 
             disk.Get(); 
             Response.Write("Logical Disk Size = " + disk["Size"] + " bytes");             
         }

         #endregion

 
          3.如何列出機器中所有的共享資源#region 3.如何列出機器中所有的共享資源
         private void Button3_Click(object sender, System.EventArgs e)
          ...{
             ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_share"); 
             foreach (ManagementObject share in searcher.Get()) 
              ...
                 Response.Write(share.GetText(TextFormat.Mof)); 
             }
 
         }

         #endregion

 
          4.怎樣寫程控制讓系統中的某個資料夾共享或取消共享#region 4.怎樣寫程控制讓系統中的某個資料夾共享或取消共享
         private void Button4_Click(object sender, System.EventArgs e)
          ...{
              /**//*首先,這需要以有相應許可權的使用者登入系統才行
             將 
             object[] obj = {"C:/Temp","我的共享",0,10,"Dot Net 實現的共享",""}; 
             改為 
             object[] obj = {"C:/Temp","我的共享",0,null,"Dot Net 實現的共享",""}; 
             就可以實現授權給最多使用者了。
             
*/

             ManagementClass _class = new ManagementClass(new ManagementPath("Win32_Share"));
              object[] obj = ...{"C:/Temp","我的共享",0,10,"Dot Net 實現的共享",""};
             _class.InvokeMethod("create",obj); 
         }

         #endregion

 
          5.如何獲得系統服務的執行狀態#region 5.如何獲得系統服務的執行狀態
         private void Button5_Click(object sender, System.EventArgs e)
          ...{
             string[] lvData =  new string[4];            
             ManagementObjectSearcher searcher =new ManagementObjectSearcher("SELECT * FROM Win32_Service"); 
             foreach (ManagementObject mo in searcher.Get()) 
              ...
                 lvData[0] = mo["Name"].ToString(); 
                 lvData[1] = mo["StartMode"].ToString(); 
                 if (mo["Started"].Equals(true)) 
                     lvData[2] = "Started"; 
                 else 
                     lvData[2] = "Stop"; 
                 lvData[3] = mo["StartName"].ToString(); 
                 Response.Write(lvData[0]+lvData[1]+lvData[2]+lvData[3]);                    
             }
             
         }

         #endregion

 
          6.通過WMI修改IP,而實現不用重新啟動#region 6.通過WMI修改IP,而實現不用重新啟動
         private void Button6_Click(object sender, System.EventArgs e)
          ...{
             ReportIP(); 

相關推薦

伺服器效能監控WMI

1.WMI簡介 WMI是英文Windows Management Instrumentation的簡寫,通過使用WMI,我們可以獲取本地或遠端伺服器的效能引數和程序執行情況,以及大部分硬體資訊,但前提是執行的使用者要有足夠的許可權,如administrator組使用者等。這也是做負載均衡所需要且比較方便快

伺服器效能監控New Relic 入門教程

New Relic 是一個很強大的伺服器效能監控工具,New Relic目前專注於SaaS和App效能管理業務,它支援支援agen

效能監控Telegraf+InfluxDB+Grafana伺服器實時監控

文章目錄 引言 目標 解決方案 Telegraf 整體設計 Telegraf&InfluxDB整合 下載安裝 建立influxDB使用者和資料庫

【nmon】伺服器效能監控工具nmon安裝和使用

目錄 一、檢視linux系統伺服器版本資訊 ​二、nmon下載 三、nmon安裝 ​四、安裝成功校檢 五、測試監控 六、監控資料採集 一、檢視linux系統伺服器版本資訊 (Linux檢視版本當前作業系統核心資訊):uname -a (Linux檢視當

CentOS 7 開啟 SNMP 實現伺服器效能監控

1、檢測是否有 SNMP 服務 service snmpd status   2、若沒有則安裝 yum install -y net-snmp   3、編輯 SNMP 的配置檔案,設定安全的驗證方式 vi /etc/snmp/snmpd.co

惠普-UX伺服器效能監控使用命令

1,iostat the iostat command reports I/O statistics for each active disk on the system iostat -t x y x表示間隔的時間,y表示間隔顯示的次數 這個命令一般用於檢視的引數是bps、sps、

效能監控Telegraf+InfluxDB+Grafana NVIDIA GPU實時監控

文章目錄 什麼是GPU? 預備知識 window下如何使用NVIDIA-smi? Telegraf+InfluxDB+Grafana監控NVIDIA GPU 配置外掛 採集度量

效能監控JMeter分散式壓測輕量日誌解決方案

文章目錄 引言 背景 Filebeat Elasticsearch Kibana 整體架構 日誌採集架構 安裝及配置 下載及配置ElasticSearch

Tomcat效能監控Probe

 目前採用java進行開發的系統居多,這些系統執行在java容器中,通過對容器的監控可以瞭解到java程序的執行狀況,分析java程式問題。目前市面上流行的中介軟體有很多(Tomcat、jetty、jboss、weblogic、websphere等),基本原理相似,都遵循Servlet規範。對容器的監控,實際

LR監控Linux系統伺服器效能監控指標詳解

一、常用監控指標: 從LR-System Resource Graphs裡面右鍵add measurement,填寫linux機器的IP, 出現所有unix/linux的計數器,包括cpu的,mem的,disk,network的。 幾個常用的監控指標: aver

伺服器效能監控工具軟體Nmon和ServerAgent對比

  2018年01月08日 10:36:51 zwliu6 閱讀數:664 標籤: 伺服器效能監控對比 伺服器效能監控工具軟體Nmon和ServerAgent對比 軟體 Nmon+nmon_anal

5.11.6 jmeter元件-監聽器—伺服器效能監控PerfMon Metrics Collector

伺服器效能監控PerfMon Metrics Collector 在效能測試時,瞭解載入的伺服器的健康狀況是很重要的。使用.jp@gc - PerfMon Metrics Collector,你可以監視幾乎所有的平臺的CPU,記憶體,交換,磁碟I/O和網路I/O

C# 讀取windows效能計數器,實現伺服器效能監控

一、背景介紹 在.net平臺開發,網站部署環境都是windows+IIS,很想知道伺服器執行時,相關的各種引數。比如:CPU利用率,磁碟讀寫速度,網路頻寬佔用,網站連結數等等。能夠有圖表的方式顯示就更好了。 用過阿里雲的雲監控的童鞋,對下面這個介面肯定不會陌生:

阿里雲伺服器效能監控

我們把專案部署到伺服器後,我們關心一下伺服器的記憶體是否能撐起我們的專案,若專案部署完後記憶體都佔用90%以上,那就注意了,專案很容易被擠掉線。但我們怎麼檢視伺服器的效能呢,下面我們來說說。 開啟阿里雲控制檯 點選完成後進入例項詳情 可以清楚看到右邊會有各種

效能監控tomcat,jvisualvm遠端連線tomcat配置

在tomcat/bin 中編輯catalina.sh 新增入這樣一段程式碼 ,新增的位置在 cygwin=false darwin=false os400=false 上面,在 JAVA_HOME=/

Jmeter使用plugins外掛進行伺服器效能監控

效能測試時,我們的關注點有兩部分 1 服務本身:併發 響應時間 QPS 2 伺服器的資源使用情況:cpu memory I/O disk等 JMeter的plugins外掛可以實現對"2"的監控,具體操作步驟如下(主要記錄我的實踐過程): 說明:我的jmeter版本是3.1 一

JMeter對伺服器效能監控--結果檢視和plugins外掛詳解(2)

首先申明,此篇文章借鑑出處:https://www.jianshu.com/p/ea36fef0a96b 引言 我們對被測應用進行效能測試時,除了關注吞吐量、響應時間等應用自身的表現外,對應用執行所涉及的伺服器資源的使用情況,也是非常重要的方面,通過實時監控,可以準確

伺服器效能監控javamelody配置使用

Documentation of JavaMelody Table of contents Introduction The goal of JavaMelody is to monitor Java or Java EE applicati

JMeter對伺服器效能監控--結果檢視和plugins外掛詳解

引言我們對被測應用進行效能測試時,除了關注吞吐量、響應時間等應用自身的表現外,對應用執行所涉及的伺服器資源的使用情況,也是非常重要的方面,通過實時監控,可以準確的把握不同測試場景下伺服器資源消耗情況的變化,對於應用效能分析有著重要的作用,同時也是調整測試場景設計的重要依據。對於使用JMeter執行效能測試的朋

Prometheus——進行伺服器效能監控的一件法寶

最近一直在思考如何對線上服務做深度監控。基礎的服務可用性監控很簡單,定期Ping即可。但是怎樣才能監控伺服器的一些更加關鍵的資料呢?比如,每一個API Point的請求次數(QPS),最大響應時間,平均響應時間等。最終我希望實現的效果是有一個Dashboard,我可以清楚地看