1. 程式人生 > >nagios通過nrpe遠端執行linux指令碼,通過nsclient++遠端執行windows指令碼

nagios通過nrpe遠端執行linux指令碼,通過nsclient++遠端執行windows指令碼

    nagios可以作為遠端指令碼執行器,以下是現網環境中nagios通過nrpe遠端執行指令碼的一個示例。

前言:

1、web介面

狀態:
0、 1、 2、 3
ok、warn、critical、unknown

2、裝置資訊

1)192.168.62.119 nagios監控伺服器(或者稱為監控端)
2)192.168.62.120 linux被監控端(或者稱為客戶端)
3)192.168.62.57 windows被監控端(或者稱為客戶端

3、nagios效能資料

nagios將外掛輸出中”|”號後的內容作為效能資料。效能資料格式如下:(意思是:客戶端指令碼執行的結果必須是下面這種格式,然後客戶端將該結果傳給服務端,伺服器就可以web展示該結果

'label'=value[UOM];[warn];[crit];[min];[max]

4、注意:

  • 多個性能資料之間用空格分割
  • label 可以包含任何字元
  • 如果label中包含空格、等號、或者單引號,則label需要用單引號來括起來
  • warn/crit/min/max可以為null值
    value, min and max只能為負號“-” “0到9” 和小數點“.” 並且單位必須統一
    例如:cpu_user=0.5%;99.9;-9;
  • 如果UOM單位是%,則min和max不需要再指定
  • UOM單位可以是如下: 預設空,表示數量(用於使用者數、處理器數等)
    • s 表示秒(也可以用us,ms)
    • % 表示百分比
    • B 表示位元組(也可以用KB,MB,TB,GB)
    • c 一個連續的計數(如:介面傳輸的位元組數)

一、服務監控端

1、檔案commands.cfg裡面新增如下

[root ~]#vi /usr/local/nagios/etc/objects/commands.cfg
# 'check_nrpe' command definition
define command{
        command_name    check_nrpe         
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS
$ -c $ARG1$ }

2、檔案nagios.cfg裡面新增如下

注意:
1)192.168.62.120.cfg和192.168.62.57.cfg分別是2個客戶端的配置檔案
2)192.168.62.120.cfg的cfg字首不需要一定是ip,只是我為了管理方便,這麼命名而已。192.168.62.57.cfg也是為了方便命名而已

[root ~]# vi /usr/local/nagios/etc/nagios.cfg
/usr/local/nagios/etc/objects/192.168.62.120.cfg
/usr/local/nagios/etc/objects/192.168.62.57.cfg

3、配置客戶端的配置檔案

1)配置客戶端linux的配置檔案,其中”check_nrpe!check_memory“裡面的check_memory就是客戶端指令碼的命名名稱

[root ~]# vi /usr/local/nagios/etc/objects/192.168.62.120.cfg
define host{
        use                     linux-server                                                      
        host_name               IDCSV10-Splunk
        alias                   Splunk日誌伺服器
        address                 192.168.62.120
        }

define service{
        use                     generic-service
        host_name               IDCSV10-Splunk
        service_description     memory
        check_command           check_nrpe!check_memory
        }

2)配置客戶端windows的配置檔案,,其中”check_nrpe!check_time“裡面的check_time就是客戶端指令碼的命名名稱

[root ~]# vi /usr/local/nagios/etc/objects/192.168.62.57.cfg
define host{
        use                     windows-server                                                      
        host_name               IDCSV27_WSUS
        alias                   Windows 補丁伺服器
        address                 192.168.62.57
        }

define service{
        use                     generic-service
        host_name               IDCSV27_WSUS
        service_description     memory
        check_command           check_nrpe!check_time
        }

4、檢查配置是否正確

[root ~]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

5、
修改配置後需要重啟nagios

[root ~]# /etc/init.d/nagios restart
或者
[root ~]# /etc/init.d/nagios reload

二、被監控端(linux)

1、寫指令碼

在/usr/local/nagios/libexec/目錄下寫指令碼:check_memory.pl

2、命名指令碼check_memory.pl的名稱為”check_memory

[root ~]#vi   /usr/local/nagios/etc/nrpe.cfg 
command[check_memory]=/usr/local/nagios/libexec/check_memory.pl -u  -w 75  -c 90 

3、重啟nrpe

[root ~]# /etc/init.d/xinetd restart

4、測試

在監控端執行如下命令, 引數-H後面是客戶端的ip,引數-c後面是客戶端指令碼的命名名稱

[root ~]# /usr/local/nagios/libexec/check_nrpe -H 192.168.62.120 -c check_memory

三、被監控端(windows)

前言

    編輯NSClient配置檔案NSC.ini,去掉如下幾行前面的“;”號,使之生效

[modules]
NRPEListener.dll
script_dir=scripts\
CheckExternalScripts.dll
[Settings]
allowed_hosts=192.168.62.83,192.168.62.119

1、寫指令碼

在NSClient安裝目錄D:\Program Files\NSClient++\scripts\lib下寫指令碼:check_time.vbs

2、配置檔案NSC.ini,命名指令碼check_time.vbs的名稱為”check_time

[External Scripts]
check_time=cscript.exe //T:30 //NoLogo scripts\lib\check_time.vbs 192.168.10.22 5 10

3、重啟NSClient++ (從0.4.0開始,軟體程式碼大改動,並且nsclient++改名為nscp。此處所講是0.39版本)

4、測試

在監控端執行如下命令, 引數-H後面是客戶端的ip,引數-c後面是客戶端指令碼的命名名稱

[root ~]# /usr/local/nagios/libexec/check_nrpe -H 192.168.62.57 -c check_time