• Nagios对Windows机器的监控 - [技术笔记]

    2009-04-08

    分类: 技术笔记

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://iyubo.blogbus.com/logs/37628541.html

    监控方法的选择
    其实Nagios对服务器的监控方法有很多,但大体上可以分为三种:
    1. 通过snmp协议编写脚本使用snmpwalk或snmpget等client程序对远程主机进行数据的抓取
    2. 走c/s方式,通过特定的客户端用他们自己的协议对服务器进行数据抓取,这一类需要在目标服务器上安装服务器端(即Listener),服务器端通过自己的程序对服务器上的数据进行收集(wmi,vbscript),最后再由nagios服务器上的客户端来取数据。这类的代表应用有NSClient++,pNSClient,nrpe_nt等等
    3. 还是走c/s方式,只不过这次nagios本机变成了服务器端,目标监控服务器上通过安装客户端向nagios服务器推送本机的相关数据。这类的代表应用有NSCA等

    鉴于我需要用到performance data来使用pnp进行绘图,而本人编程能力非常有限,再加上我是个非常懒的SA。所以,我选择了上面的第二类方式对我的所有Windows服务器进行监控,选择的应用是NSClient++。

    NSClient++
    NSClient++是针对Windows操作系统的一款简单但是功能强大又安全的监控服务器端,同时兼容了NSClient/NRPE/NSCA三种方式。它能监控cpu,内存,硬盘,进程,服务状态,性能计数器等等。NSClient++提供的CheckCommands

    服务器端配置
    安装NSClient++
    下载NSClient++
    将下载的压缩包解压到任意路径,这里举例解压到D盘根目录并重命名为NSClient。从命令行进行安装
    D:\>"NSClient\NSClient++.exe" -install
    安装成功会看到下面两行提示
    Service NSClientpp installed...
    l NSClient++.cpp(224) Service installed!

    修改配置文件
    编辑nsc.ini,只针对需要修改的地方

    [modules]
    FileLogger.dll
    CheckSystem.dll
    CheckDisk.dll
    NSClientListener.dll
    NRPEListener.dll
    CheckEventLog.dll
    CheckHelpers.dll
    CheckWMI.dll
    CheckExternalScripts.dll
    LUAScript.dll
    CheckTaskSched.dll

    [Settings]
    #允许访问的主机IP,多个主机用,分隔
    allowed_hosts=127.0.0.1/32
    #使用此ini文件作为配置文件
    use_file=1

    [log]
    file=nsclient.log
    date_mask=%Y-%m-%d %H:%M:%S
    root_folder=exe

    [NSClient]
    #允许访问的主机IP,多个主机用,分隔
    allowed_hosts=127.0.0.1/32

    #监听端口
    port=5666

    socket_timeout=30

    [NRPE]
    #监听端口
    port=5667

    command_timeout=60

    #不使用ssl,否则容易出错
    use_ssl=0

    #允许访问的主机IP,多个主机用,分隔
    allowed_hosts=127.0.0.1/32

    socket_timeout=30

    #启用performance_data(关键,就看着他画图呢)
    performance_data=1

    [NRPE Handlers]
    #定义NRPE的命令
    #监测内存
    check_mem=inject checkMem MaxWarn=80% MaxCrit=90% ShowAll=long type=physical

    编辑完成以后保存关闭,然后在Windows的服务里面找到新装的NSClientpp服务,启动它。

    客户端配置(即nagios监控机)
    修改commands.cfg,增加使用NSClient和NRPE收集数据的命令,因为NSClient监测到的内存大小都大于实际的物理内存(估计可能是总计),所以使用NRPE监测内存

    # 'check_remote_nt_disk' command definition,监测硬盘使用量
    define command{
            command_name    check_remote_nt_disk
            command_line    $USER1$/check_nt -H $ARG1$ -p $ARG2$ -v $ARG3$ -l $ARG4$ -w $ARG5$ -c $ARG6$
            }

    # 'check_remote_nt_cpu' command definition,监测cpu负载
    define command{
            command_name    check_remote_nt_cpu
            command_line    $USER1$/check_nt -H $ARG1$ -p $ARG2$ -v $ARG3$ -l $ARG4$
            }

    # 'check_nt_mem_nrpe' command definition,监测内存使用量
    define command{
            command_name    check_nt_mem_nrpe
            command_line    $USER1$/check_nrpe -H $ARG1$ -n -p $ARG2$ -c $ARG3$
            }

    # 'check_avg_disk_queue' command definition,监测硬盘读写队列
    define command{
            command_name    check_avg_disk_queue
            command_line    $USER1$/check_nt -H $ARG1$ -p $ARG2$ -v $ARG3$ -l $ARG4$ -d $ARG5$ -w $ARG6$ -c $ARG7$
            }

    修改localhost.cfg中service定义里面的check_command

    define service{
            use                             web-service,service-pnp
            host_name                       web1
            service_description             disk-d
            check_command                   check_remote_nt_disk!10.10.10.11!5666!USEDDISKSPACE!d!85!90
            }

    define service{
            use                             web-service,service-pnp
            host_name                       web1
            service_description             mem
            check_command                   check_nt_mem_nrpe!10.10.10.11!5667!check_mem
            }

    define service{
            use                             web-service,service-pnp
            host_name                       web4
            service_description             avg-disk-queue
            check_command                   check_avg_disk_queue!10.10.10.24!5666!COUNTER!"\\PhysicalDisk(_Total)\\Avg. Disk Queue Length","%.2f"!SHOWALL!14!28
            }

    修改完以后重新配置nagios使配置生效
    #/etc/init.d/nagios reload

    至此所有配置完成

    参考文档
    http://trac.nakednuns.org/nscp/wiki


    历史上的今天:


    收藏到:Del.icio.us