2007-12-14

如何用通过OpenNMS监控Windows 服务器

OpenNMS可以监控可用性和性能参数。下面看看OpenNMS监控Windows服务器的三种情况。

第一种情况:
Windows机器上没有安装SNMP服务,在自动发现了这个节点后,它会被加入节点列表,之后它被定期的轮询。如果这个节点断网了,OpenNMS会报警;同时这个节点的可用性被计算。自动发现还会发现这个机器上的服务。ICMP是肯定会有的,还可能有http等其他的服务;这些服务也会被定时的轮询,如果某个服务停了,这个节点的整个的可用性受到影响。这种情况下该节点的所有服务的响应时间会被OpenNMS收集并保持历史数据。

第二种情况:
安装了SNMP服务。先说一下windows服务的安全性,默认情况下public是默认的只读密码;为了更加安全可以配置其他的只读密码,并指定某些特定的IP才能访问这个节点。这个策略在Windows的觉策略中很容易实现,或者说建议使用域控制器来管理这个策略,比较方便。假定OpenNMS能访问该节点的snmp服务的情况下。这些数据会增加:SNMP Attributes;在选择了资源图后,可以看到snmp的节点数据和接口数据。进入后可以看到,其实收集 的是一个tcp/ip接口上基本的信息:流量,连接数,丢包,错包等。个人认为流量是个最有用的数据,特别是对于一些简单的web/ftp服务器也就够用了。

第三种情况:
我们需要监控到操作系统的性能数据cpu/disk/RAM等。就需要安装一个snmp代理,这个代理可以提供这些信息,opennms才能通过snmp协议收集这些数据。需要到下面网址下载一个免费的snmp代理,当然这个产品也有收费版本:http://www.wtcs.org/informant/download.htm 这个代理很小需要在windows机器上安装一下。默认情况下OpenNMS的对windows采集模板中包含了对cpu/disk/ram等数据的采集,等到下一次OpenNMS在采集这个机器的时候相关数据就会被显示在节点snmp数据下面。

这里是通过这个免费的snmp代理能采集到的数据:
/Program Files/SNMP Informant/standard/mibs/informant-std-tree.txt
--standard(1.3.6.1.4.1.9600.1.1)
|
+--logicalDiskTable(1)
| |
| +--logicalDiskEntry(1) [lDiskInstance]
| |
| +-- r-n InstanceName lDiskInstance(1)
| +-- r-n Gauge32 lDiskPercentDiskReadTime(2)
| +-- r-n Gauge32 lDiskPercentDiskTime(3)
| +-- r-n Gauge32 lDiskPercentDiskWriteTime(4)
| +-- r-n Gauge32 lDiskPercentFreeSpace(5)
| +-- r-n Gauge32 lDiskPercentIdleTime(6)
| +-- r-n Gauge32 lDiskAvgDiskQueueLength(7)
| +-- r-n Gauge32 lDiskAvgDiskReadQueueLength(8)
| +-- r-n Gauge32 lDiskAvgDiskWriteQueueLength(9)
| +-- r-n Gauge32 lDiskAvgDiskSecPerRead(10)
| +-- r-n Gauge32 lDiskAvgDiskSecPerTransfer(11)
| +-- r-n Gauge32 lDiskAvgDiskSecPerWrite(12)
| +-- r-n Gauge32 lDiskCurrentDiskQueueLength(13)
| +-- r-n Gauge32 lDiskDiskBytesPerSec(14)
| +-- r-n Gauge32 lDiskDiskReadBytesPerSec(15)
| +-- r-n Gauge32 lDiskDiskReadsPerSec(16)
| +-- r-n Gauge32 lDiskDiskTransfersPerSec(17)
| +-- r-n Gauge32 lDiskDiskWriteBytesPerSec(18)
| +-- r-n Gauge32 lDiskDiskWritesPerSec(19)
| +-- r-n Gauge32 lDiskFreeMegabytes(20)
| +-- r-n Gauge32 lDiskSplitIOPerSec(21)
|
+--memory(2)
| |
| +-- r-n Gauge32 memoryAvailableBytes(1)
| +-- r-n Gauge32 memoryAvailableKBytes(2)
| +-- r-n Gauge32 memoryAvailableMBytes(3)
| +-- r-n Gauge32 memoryCommittedBytes(4)
| +-- r-n Gauge32 memoryCacheBytes(5)
| +-- r-n Gauge32 memoryCacheBytesPeak(6)
| +-- r-n Gauge32 memoryPageFaultsPerSec(7)
| +-- r-n Gauge32 memoryPagesInputPerSec(8)
| +-- r-n Gauge32 memoryPagesOutputPerSec(9)
| +-- r-n Gauge32 memoryPagesPerSec(10)
| +-- r-n Gauge32 memoryPoolNonpagedBytes(11)
| +-- r-n Gauge32 memoryPoolPagedBytes(12)
| +-- r-n Gauge32 memoryPoolPagedResidentBytes(13)
| +-- r-n Gauge32 memorySystemCacheResidentBytes(14)
| +-- r-n Gauge32 memorySystemCodeResidentBytes(15)
| +-- r-n Gauge32 memorySystemCodeTotalBytes(16)
| +-- r-n Gauge32 memorySystemDriverResidentBytes(17)
| +-- r-n Gauge32 memorySystemDriverTotalBytes(18)
|
+--networkInterfaceTable(3)
| |
| +--networkInterfaceEntry(1) [netInstance]
| |
| +-- r-n InstanceName netInstance(1)
| +-- r-n Gauge32 netBytesReceivedPerSec(2)
| +-- r-n Gauge32 netBytesSentPerSec(3)
| +-- r-n Gauge32 netBytesTotalPerSec(4)
| +-- r-n Gauge32 netCurrentBandwidth(5)
| +-- r-n Gauge32 netOutputQueueLength(6)
| +-- r-n Gauge32 netPacketsOutboundDiscarded(7)
| +-- r-n Gauge32 netPacketsOutboundErrors(8)
| +-- r-n Gauge32 netPacketsReceivedDiscarded(9)
| +-- r-n Gauge32 netPacketsReceivedErrors(10)
| +-- r-n Gauge32 netPacketsReceivedUnknown(11)
| +-- r-n Gauge32 netPacketsReceivedPerSec(12)
| +-- r-n Gauge32 netPacketsSentPerSec(13)
| +-- r-n Gauge32 netPacketsPerSec(14)
|
+--objects(4)
| |
| +-- r-n Gauge32 objectsProcesses(1)
| +-- r-n Gauge32 objectsThreads(2)
|
+--processorTable(5)
| |
| +--processorEntry(1) [cpuInstance]
| |
| +-- r-n InstanceName cpuInstance(1)
| +-- r-n Gauge32 cpuPercentDPCTime(2)
| +-- r-n Gauge32 cpuPercentInterruptTime(3)
| +-- r-n Gauge32 cpuPercentPrivilegedTime(4)
| +-- r-n Gauge32 cpuPercentProcessorTime(5)
| +-- r-n Gauge32 cpuPercentUserTime(6)
| +-- r-n Gauge32 cpuAPCBypassesPerSec(7)
| +-- r-n Gauge32 cpuDPCBypassesPerSec(8)
| +-- r-n Gauge32 cpuDPCRate(9)
| +-- r-n Gauge32 cpuDPCsQueuedPerSec(10)
| +-- r-n Gauge32 cpuInterruptsPerSec(11)
|
+--system(6)
|
+-- r-n Gauge32 systemSystemUpTime(1)



最后记得在看看这个许可证文件:
Program Files/SNMP Informant/standard/license.txt
LICENSE.TXT
-----------
FREE OF CHARGE SOFTWARE PROGRAM LICENSE AGREEMENT for
SNMP INFORMANT STANDARD EDITION (The Software)

------------------------------------------------------------------------------
Copyright(c) 2005, Informant Systems, Inc. (www.informant-systems.com), and
Copyright(c) 2003-2005, Williams Technology Consulting Services (www.wtcs.org)
------------------------------------------------------------------------------
Product names used in this document are trademarks of their respective owners.
* IMPORTANT-PLEASE READ CAREFULLY BEFORE INSTALLING THE SOFTWARE.
------------------------------------------------------------------------------
后面略....

在安装了snmp代理之后,我们可以看到OpenNMS可以帮助我们完成windows服务器的可用性和性能管理。

1 条评论:

  1. 第四种方式
    可以采用nsclient++
    可以采集 更多指标
    Documentation
    Information
    Commands/Modules
    CheckDisk
    CheckFileSize
    CheckDriveSize
    CheckFile
    CheckEventLog
    CheckSystem
    CheckCPU
    CheckUpTime
    CheckServiceState
    CheckProcState
    CheckMem
    CheckCounter
    CheckHelpers
    CheckAlwaysOK
    CheckAlwaysCRITICAL
    CheckAlwaysWARNING
    CheckMultiple
    FileLogger
    NRPEListener
    NSClientListener
    SysTray
    CheckWMI
    CheckWMIValue
    RemoteConfiguration
    CheckExternalScripts
    LUAScript
    Guide
    NSCAAgent
    Donate

    回复删除