Windows系统监控

来源:互联网 发布:php逗号分割字符串 编辑:程序博客网 时间:2024/06/05 10:53

Windows系统监控

一、      应用框架的选取与介绍

         该监控系统使用J-Interop开源框架调用WMI来实现。Windows管理规范(WMI)是微软对来自分布式管理任务组(DMTF)基于Web的企业管理(WBEM)和通用信息模型(CIM)标准的实现。WMI用于访问Windows系统,应用,网络,设备等组件,并管理他们,可以实现对本地或远程操作系统的监控,比较流行的Java调用WMI开源框架有J-Interop,JACOB-Project和J-Integra,而J-Interop是完全免费开源的API,并且它提供了没有任何依赖的纯DCOM桥,完全使用Java编写的没有任何的JNI代码。

二、      环境准备

1.        Windows要开启Remote Registry,Remote Procedure Call(RPC)和Windows Management Instrumentation服务,如下图:


图:开启服务

2.        修改安全策略

         通过cmd命令行键入secpol.msc来开启本地安全策略,本地安全策略-->安全选项找到网络访问:本地账户的共享和安全模型,将它的安全设置更改为经典。如下图:


图:修改本地安全策略

3.        禁用防火墙

4.        WindowsServer 2008和高版本的系统需注册表越狱

         找到注册表HKEY_CLASSES_ROOT\CLSID\下面的注册表并更改管理员完全控制

{76A64158-CB41-11D1-8B02-00600806D9B6}的控制权。Windows Server 2008不再给Administrators完全控制权。只能通过SetACL.exe来更改。

a)下载SetACL.exe,下载地址:

https://files.helgeklein.com/downloads/SetACL/current/SetACL%20(executable%20version).zip

b)解压安装,cmd命令行cd到SetACL.exe目录之下,以管理员的身份运行如下代码:


图:注册表越狱

修改成功后管理员的权限显示如下图:


图:修改管理员权限

三、      程序代码

      程序代码地址:https://xxsrd.f3322.org/svn/HDZX/Android/DOC/Server

    创建WmiService类,如下图

:

图:创建WmiService类

        

 

 

 

         建立和服务器的连接获取IJIDispatch对像


图:获取IJIDispatch对像

         查询部分:


图:查询代码

四、      运行结果

1.        cpu使用的情况:

a) WmiService.query("select * fromWin32_PerfFormattedData_PerfOS_Processor");查

 

询结果如下图:


b) WmiService.query("select * fromWin32_ Processor");(Windows server 2003服务器不适用)

 

2.        逻辑磁盘可用空间:WmiService.query("select * from Win32_LogicalDisk");


3.        系统服务:WmiService.query("select * from Win32_Service");


4.        
物理内存:WmiService.query("select *from Win32_ PhysicalMemory");


5.        可用物理内存:WmiService.query("select * from Win32_OperatingSystem");

               

6.        网卡信息:WmiService.query("select * from Win32_NetworkAdapter");


7.        进程信息:WmiService.query("select * from Win32_Process");


8.        网络流量:

WmiService.query("select * from Win32_ PerfRawData_Tcpip_NetworkInterface");


五、      注意事项

1.        使用Windows2008 R2,Server 2012 R1和R2及Windows7时需要对注册表进行越狱操作。

2.        Windows2003服务器对select * from Win32_Processor查询不支持,可替换为:

select * from Win32_PerfFormattedData_PerfOS_Processor

3.        Windows7上启动远程注册表访问

默认情况下,即使启动了远程注册表服务,Windows7任将拒绝远程注册表。解决办法,在计算机上以管理员的身份运行powershell执行Enable-PSRenoting,重启计算机。

4.        防火墙必须允许开启TCP和UDP的端口号

1)        TCP端口135(DEC、RPC定位器服务)

2)        TCP端口139(NetBIOS会话服务)

3)        TCP端口445(Windows共享)

4)        C:\WINDOWS\System32\dllhost.exe(随机端口)

5)        C:\WINDOWS\System32\javaw.exe(随机端口)

六、      常见错误

1.        错误码:0xC0000034

启动控制面板,打开"管理工具",打开"服务"。在列表中找到Remote Registry(远程注册表服务),启动此项服务。

2.        
错误码: 0x8001FFFF

1)关闭防火墙

2)修改编辑注册表HEKY_LOCAL_MACHINE\System\CurrentControlSet\COntrol\Lsa找到或创建注册表LMCompatibilityLevel的值为2,关闭注册表重启计算机。

3)服务器版本过低,对有些查询语句不支持。

3.        
错误码:0xC000006D

1)禁用防火墙

2)当端口139(NetBIOS会话服务)和445(Windows共享)不可用会出现该错

3)启动控制面板,进入“管理工具”,然后点击“本地安全策略”。这将打开

本地安全设置”窗,转到“本地策略”->“安全选项”->“网络访问:本地

 账户的共享和安全模型”。更改为“经典”。

4.        错误码:0x00000005

1)        禁用防火墙

2)        更改注册表HEKY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Pollices\System,创建或修改32位DWORD:LocalAccountTokenFilterPolicy的值为1。

3)        
Windows2008 R2,Server 2012R1,Win7,Win8,修改默认注册表的权限,请参考本文环境准备中的第四项。

5.        错误码:0x800706BA

1)        关闭防火墙

2)        启动Remote Procedure Call(RCP)服务。