星期六, 8月 07, 2010

Nagios 網路監控主機架設

Lab: Nagios 網路監控主機架設

Server
OS: openSUSE 11.3
IP: 192.168.3.128

Linux Client: 192.168.3.130
Windows Client: 192.168.3.129

Part I: Nagios伺服器的建置

Server:
1. 安裝Nagios 套件
server 上面使用 one-click install 安裝 Nagios 套件

Nagios
http://software.opensuse.org/ymp/openSUSE:11.3/standard/nagios.ymp

Nagios Plugins
http://software.opensuse.org/ymp/openSUSE:11.3/standard/nagios-plugins.ymp

Nagios Addons Extras
http://software.opensuse.org/ymp/openSUSE:11.3/standard/nagios-plugins-extras.ymp

2.建立nagiosadmin 密碼
第一次建立密碼的時候 請加上 -c 選項,
新增第二個使用者, 則不需要加上 -c ( 會清空現有的密碼)
請於server 上面
#htpasswd2   -c   /etc/nagios/htpasswd.users   nagiosadmin
輸入密碼
再次輸入

3.建立nagiosuser 密碼
請於server 上面
#htpasswd2   /etc/nagios/htpasswd.users   nagiosuser
輸入密碼
再次輸入

4.檢視並設定開機啟動nagios
#chkconfig  nagios  --list
#chkconfig  nagios  on
#chkconfig  nagios  --list

5.重新啟動.apache2 並設定開機啟動
#rcapache2  restart
#chkconfig   apache2   --list
#chkconfig   apache2   on
#chkconfig   apache2   --list

6.啟動Nagios
#rcnagios   start

7.測試Nagios 主機運作
開啟瀏覽器 於 URL上面輸入 http://127.0.0.1/nagios/
會出現需要授權的視窗
請輸入
使用者名稱 nagiosadmin
密碼 之前設定的密碼



這個時候應該會出現 Nagios 的相關畫面

如下圖所示
可以觀察相關服務狀況
此時會發現 HTTP 呈現警告狀態
原因為 Apache2 有啟動但是沒有預設的網頁
要解除這個情形可以 建立一個預設網頁
#vi   /srv/www/htdocs/index.html
加入
<html> It works ! </html>


受監控的相關主機都會被紀錄在 /etc/nagios/nagios.cfg
Linux 的本機的監控設定也是設定於 /etc/nagios/nagios.cfg 內的
# Definitions for monitoring the local (Linux) host
cfg_file=/etc/nagios/objects/localhost.cfg

故可以得知之後要監控的主機,
相關的設定檔都要放在 /etc/nagios/objects 資料夾內,
且於/etc/nagios/nagios.cfg 要有cfg_file=xxxx.cfg的設定


另外如果要檢視 Nagios 設定有沒有問題
可以使用
#nagios  -v   /etc/nagios/nagios.cfg

來觀察匯入那些設定檔, 以及有沒有問題
更多的文件也可以參考這邊

http://wiki.nagios.org/index.php/Main_Page

**修改通知 e-mail **
# vi /etc/nagios/objects/contacts.cfg
修改預設的  e-mail
define contact{
       contact_name    nagiosadmi    ; Short name of user
       use    generic-contact         ; Inherit default values from generic-contact template (defined above)
       alias       Nagios Admin            ; Full name of user
       email  sakana@study-area.org ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
       }

檢視 Nagios 設定有沒有問題
#nagios  -v   /etc/nagios/nagios.cfg

重新啟動 Nagios
#rcnagios   restart

**以上 Nagios 伺服器建置完成**


Part II: Nagios 用戶端-- Linux 伺服器用戶端建置

1.安裝 nagios-nrpe套件

請於Client端啟動 YaST 軟體管理

#yast2  sw_single

並搜尋 nrpe 應該就會看到
nagios-nrpe 套件
nagios-plugins-nrpe 套件
→ 安裝 → 套用
( 或是考慮使用 #yast  -i  nagios-nrpe  nagios-plugins-nrpe)
(根據官方的說法是 相較於 check_by_ssh 的方式比較省資源)

2.設定nagios-nrpe 套件
(另外最好去確認 /etc/services 有沒有 nrpe 5666/tcp # nagios nrpe 的設定)
#grep  5666  /etc/services

修改設定檔 允許 Nagios 伺服器連線
# vi  /etc/nagios/nrpe.cfg

allowed_hosts=127.0.0.1,192.168.3.128

這邊要注意 127.0.0.1後面要加上 逗點 , 然後主機 IP 不能有空格
不然會出現沒有辦法建立 SSL HandShake
(這個部份可以解釋, 如果nrpe是使用 SystemV 的形式啟動後面都會出現不能建立SSL Handshake ,但是以Xinetd 就不會)

#rcnrpe   start


4.測試nagios-nrpe
設定完成之後 可以於本機及遠端測試

請於Client
執行 check_nrpe 測試, 成功應該會出現 NRPE的版本
# /usr/lib/nagios/plugins/check_nrpe   -H   localhost
NRPE v2.12

*************************************************************
請於 Server
安裝 nagios-nrpe 套件
#yast  -i  nagios-nrpe
#yast  -i  nagios-plugins-nrpe

針對 nagios client 測試 nagios-nrpe 成功應該會出現 NRPE的版本
#/usr/lib/nagios/plugins/check_nrpe  -H  192.168.3.130
NRPE v2.12

*************************************************************
接下來來測試本機相關資訊
請於 Client
執行相關測試
線上使用者人數
#/usr/lib/nagios/plugins/check_nrpe -H localhost -c check_users

平均負載
#/usr/lib/nagios/plugins/check_nrpe -H localhost -c check_load

目前使用的process
#/usr/lib/nagios/plugins/check_nrpe -H localhost -c check_total_procs

Zombie Process
#/usr/lib/nagios/plugins/check_nrpe -H localhost -c check_zombie_procs

磁碟狀況
#/usr/lib/nagios/plugins/check_nrpe -H localhost -c check_hda1
(這個部份command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/hda1
因為現在 IDE的硬碟以及使用 Kernel 2.6.20 以前的主機越來越少, 所以應該是對應到 /dev/sda1)
故可以修改 /etc/nagios/nrpe.cfg 內的 command 對應
(複製原來的 hda1 改為要監控的 Partition)

#vi   /etc/nagios/nrpe.cfg
#command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/hda1
command[check_sda2]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sda2
command[check_sda3]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sda3
command[check_ssh]=/usr/lib/nagios/plugins/check_ssh   localhost
command[check_smtp]=/usr/lib/nagios/plugins/check_smtp  localhost

(針對想要加入的指令 可以參考 /usr/lib/nagios/plugins 目錄)

重新啟動 nrpe 服務( 修改完 /etc/nagios/nrpe.cfg 請記得重新啟動服務)
#rcnrpe  restart

再次測試
# /usr/lib/nagios/plugins/check_nrpe -H localhost -c check_sda2
# /usr/lib/nagios/plugins/check_nrpe -H localhost -c check_sda3

另外於 Server端測試 相關的指令
#/usr/lib/nagios/plugins/check_nrpe  -H  192.168.3.130   -c  check_sda3
#/usr/lib/nagios/plugins/check_nrpe  -H  192.168.3.130   -c  check_sda3


Part III: linux 伺服器(Nagios Client)加入到 Nagios監控範圍

*************************************************************

請於Server上面

複製 windows 的設定檔 來當成 linux server的設定檔
# cp  /etc/nagios/objects/windows.cfg   /etc/nagios/objects/linux.cfg

修改 /etc/nagios/objects/linux.cfg 內的設定 加上主機名稱修改為Client IP

#vi   /etc/nagios/objects/linux.cfg
將原來的
define host{
use windows-server ; Inherit default values from a template
host_name winserver ; The name we're giving to this host
alias My Windows Server ; A longer name associated with the host
address 192.168.1.2 ; IP address of the host
}

改為 (定義遠端Linux主機的名稱及IP)

define host{
use   linux-server ; 這邊的名稱要參照 template 內的名稱,故不能亂取
host_name   suseserver130 ; The name we're giving to this host 主機名稱(簡稱)
alias penSUSE Server2 ; A longer name associated with the host 主機名稱()
address 192.168.3.130 ; IP address of the host
}

接下來處理服務的部份, 因為所有要監控的服務都會認主機名稱
使用 :%s/winserver/suseserver130/gc define service{ } 內的
host_name winserver
改為
host_name suseserver130

接下來定義群組
將原來的
define hostgroup{
hostgroup_name windows-servers ; The name of the hostgroup
alias Windows Servers ; Long name of the group
}

改為
define hostgroup{
hostgroup_name suse-servers ; The name of the hostgroup 可自行定義的群組名稱()
alias SUSE Servers ; Long name of the group 可自行定義的群組名稱()
members   suseserver130 ;群組內的主機, 故要把相關的host_name寫入
}

設定要監控的服務
define service{ } 內的 service_description check_command
修改(check_nt 改為check_nrpe)

define service{
use generic-service
host_name suseserver130
service_description NSClient++ Version
check_command check_nt!CLIENTVERSION
}

改為(以線上使用者為例)
define service{
use generic-service
host_name suseserver130
service_description Online Users
check_command check_nrpe!check_users
}

define service{
       use                     generic-service
       host_name               suseserver130
       service_description     Check /
       check_command           check_nrpe!check_sda2
       }

define service{
       use                     generic-service
       host_name               suseserver130
       service_description     Check /home
       check_command           check_nrpe!check_sda3
       }

define service{
       use                     generic-service
       host_name               suseserver130
       service_description     Check Load
       check_command           check_nrpe!check_load
       }

define service{
       use                     generic-service
       host_name               suseserver130
       service_description     Total_Procs
       check_command           check_nrpe!check_total_procs
       }

define service{
       use                     generic-service
       host_name               suseserver130
       service_description     Check SSH
       check_command           check_nrpe!check_ssh
       }

define service{
       use                     generic-service
       host_name               suseserver130
       service_description     Check SMTP
       check_command           check_nrpe!check_smtp
       }

請注意主機名稱需對應 define host { } 區段內的 host_name


整理一下對應關係
Server:
  • /etc/nagios/object/linux.cfg

Client:
  • /etc/nagios/nrpe.cfg




**設定 NRPE 指令對應**
修改 /etc/nagios/objects/commands.cfg 加入 check_nrpe 的指令對應

# vi   /etc/nagios/objects/commands.cfg
加入
# 'check_nrpe' command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}


**設定 Nagios 載入 linux.cfg **
最後修改 /etc/nagios/nagios.cfg 內的設定 讓 linux.cfg 設定載入, 可以監控nagios Clinet

#vi   /etc/nagios/nagios.cfg
加入
#Definitions for monitoring the Linux server
cfg_file=/etc/nagios/objects/linux.cfg

確認設定檔是否無誤
# nagios   -v   /etc/nagios/nagios.cfg

重新啟動 nagios 使其生效
#rcnagios   restart

(: 重新啟動之後不會馬上偵測, 會過幾分鐘才偵測)



Part IV: Nagios 用戶端-- Windows 伺服器/ Windows PC用戶端建置

1.安裝 NSClient++ 軟體
請於 Window 伺服器 或是用戶端

開啟瀏覽器 連線至 NSClient++ 的專案網頁下載軟體
http://sourceforge.net/projects/nscplus/

依造機器的平台 x86 or x86_64 下載軟體 這邊以0.3.8-Win32 為例
http://downloads.sourceforge.net/project/nscplus/nscplus/NSClient%2B%2B%200.3.8/NSClient%2B%2B-0.3.8-Win32.msi?use_mirror=ncu&ts=1280992189&r=http://sourceforge.net/projects/nscplus/files/

出現安裝精靈
請按 Next

接下來 End-User License Agreement
請勾選 ' I accept the terms in the License Agreement' → Next

接下來Custom Setup
請按 Next

NSClient 會偵測是否有舊的設定檔
由於是新的安裝 請按 Next


這個部份是最重要的部份
Allow hosts: 輸入 Nagios ServerIP (只允許這台機器連線)
針對要載入的模組 勾選Next


開始安裝
點選 Install


安裝完成後
勾選 Start service → Finish


Part V: Windows 伺服器/PC (Nagios Client)加入到 Nagios監控範圍

請於Server上面

複製 windows.cfg  Windows 伺服器或是PC 使用

這邊設定檔的名稱 假定為 windows129.cfg
(這邊個人處理方式目前以 IP命名)

# cp  /etc/nagios/objects/windows.cfg   /etc/nagios/objects/windows129.cfg

修改相關設定

# vi   /etc/nagios/objects/windows129.cfg

Step1:
請將文件內 主機名稱(host_name) winserver 改為Windows 主機名稱
例如 winpc129
    • 可以利用 vi 的取代功能 :%s/winserver/winpc129/gc


Step 2:
請將預設 IP 修改為 正確的 IP 位址


define host{
use windows-server ; 需參考template不可以自己亂取名稱
host_name winserver ; The name we're giving to this host 主機名稱
alias My Windows Server ; A longer name associated with the host 主機名稱()
address 192.168.1.2 ; IP address of the host 用戶端IP位址
}

改為
define host{
use windows-server ; Inherit default values from a template
host_name winpc129 ; The name we're giving to this host
alias Windows PC 192.168.3.129 ; A longer name associated with the host
address 192.168.3.129 ; IP address of the host
}

另外確認所有的 define service 內的設定 host_name都是新的主機名稱(winpc129)

define service{
use generic-service
host_name winpc129
service_description NSClient++ Version
check_command check_nt!CLIENTVERSION
}

另外一般的 PC 不會開 網頁伺服器 故註解 W3SVC

#define service{
#        use                     generic-service
#        host_name               winpc129
#        service_description     W3SVC
#        check_command           check_nt!SERVICESTATE!-d SHOWALL -l W3SVC
#        }



最後修改 /etc/nagios/nagios.cfg 內的設定
windows129.cfg 設定載入, 可以監控nagios Clinet

#vi   /etc/nagios/nagios.cfg
加入
cfg_file=/etc/nagios/objects/windows129.cfg

確認設定檔是否無誤
# nagios  -v  /etc/nagios/nagios.cfg

重新啟動 nagios 使其生效
#rcnagios   restart

(: 重新啟動之後不會馬上偵測, 會過幾分鐘才偵測)
這樣第一份 Windows 機器的設定檔就設定完成


如果要加入第二台 Windows 機器設定
可以複製 原來的Windows 設定, 例如
# cp   /etc/nagios/objects/windows129.cfg   /etc/nagios/objects/windows131.cfg

但是要注意的是 主機群組只能定義一次, 也是說第二台PC 以後的 windowsxxx.cfg 內的主機群組定義
都要註解起來, 才不會發生錯誤!!
故請將 第二台的設定檔內的

define hostgroup{
hostgroup_name windows-servers ; The name of the hostgroup
alias Windows Servers ; Long name of the group
}

註解起來

#define hostgroup{
# hostgroup_name windows-servers ; The name of the hostgroup
# alias Windows Servers ; Long name of the group
# }

以上 ^__^ 大功告成


相關畫面如下



Lab: 建立新的範本 windows-pc

在上面的練習, 是使用  windows-servers 的範本
但是如果要自訂 監控的時間或是 預設的群組
舉例來說 一般的 workstation 不會 24 小時開機, 只會在上班時間開機
所以接下來練習建立, windows-pc 的範本,針對一般的 PC, 指定 上班時間監控.

Nagios 範本設定檔 /etc/nagios/objects/templates.cfg
Nagios 時間範本設定檔   /etc/nagios/objects/timeperiods.cfg

修改 Nagios 的範本檔, 將 windows-servers 複製一份改為 windows-pc
並修改 檢查時間為 workhours

#vi  /etc/nagios/objects/templates.cfg

# Windows host definition template - This is NOT a real host, just a template!

define host{
       name                    windows-pc      ; The name of this host template 範本的名稱
       use                     generic-host    ; Inherit default values from the generic-host template
       check_period      workhours    ; 檢查的時間範圍
       check_interval          5               ; Actively check the server every 5 minutes
       retry_interval          1               ; Schedule host check retries at 1 minute intervals
       max_check_attempts      10              ; Check each server 10 times (max)
       check_command           check-host-alive; Default command to check if servers are "alive"
       notification_period     workhours            ; Send notification out at any time - day or night
       notification_interval   30              ; Resend notifications every 30 minutes
       notification_options    d,r             ; Only send notifications for specific host states
       contact_groups          admins          ; Notifications get sent to the admins by default
       hostgroups           windows-pc    ; window-pc 主機預設會歸屬的群組
       register                0               ; DONT REGISTER THIS - ITS JUST A TEMPLATE
       }

workhours 的檢查時間為 早上 9:00 到 下午 5:00

可以 參考  /etc/nagios/objects/timeperiods.cfg
設定內容如下
# 'workhours' timeperiod definition
define timeperiod{
       timeperiod_name workhours
       alias           Normal Work Hours
       monday          09:00-17:00
       tuesday         09:00-17:00
       wednesday       09:00-17:00
       thursday        09:00-17:00
       friday          09:00-17:00
       }


修改剛剛 windows129 的設定檔
# vi   /etc/nagios/objects/windows129.cfg
修改以下內容 定義群組名稱 windows-pc

define hostgroup{
       hostgroup_name  windows-pc      ; The name of the hostgroup
       alias           Windows pc      ; Long name of the group
       }

修改以下內容 修改套用 windows-pc 的範本

define host{
       use             windows-pc      ; Inherit default values from a template
       host_name       winpc129        ; The name we're giving to this host
       alias           Windows PC 192.168.3.129; A longer name associated with the host
       address         192.168.3.129   ; IP address of the host
       }

確認設定檔是否無誤
# nagios  -v  /etc/nagios/nagios.cfg

重新啟動 nagios 使其生效
#rcnagios   restart

(: 重新啟動之後不會馬上偵測, 會過幾分鐘才偵測)


請重新觀察 Nagios



Lab: 透過 即時通訊 軟體來通知
以上預設的通知方式是透過 e-mail 來傳送通知
如果希望使用更即時的通知方式, 也可以透過 即時通訊軟體來通知管理者

這邊建議使用  Jabber 的方式來通知管理者 ( 也就是透過 Google Talk )
設定的方式可以參考 
http://www.gridpp.ac.uk/wiki/Nagios_jabber_notification

但是要使用 Jabber ( Google talk's XMPP ) 的服務要安裝相關套件
這邊我們使用 zypper ( openSUSE Linux 的文字介面套件管理指令) 的方式來安裝套件

先查詢相關套件
# zypper   search   perl-Net*
正在載入套件庫資料...
讀取已安裝的套件...

S | 名稱                               | 摘要                                                | 類型
--+------------------------------------+-----------------------------------------------------+-----
 | perl-Net-CIDR-Lite                 | Perl extension for merging IPv4 or IPv6 CIDR addr-> | 套件
 | perl-Net-DBus                      | Perl extension for the DBus message system          | 套件
 | perl-Net-DNS                       | Perl interface to the DNS resolver                  | 套件
 | perl-Net-DNS-Resolver-Programmable | Programmable DNS resolver class for offline emula-> | 套件
i | perl-Net-Daemon                    | Net::Daemon - Perl extension for portable daemons   | 套件
 | perl-Net-HTTPServer                | A simple perl Http Server                           | 套件
 | perl-Net-IP                        | allow easy manipulation of IPv4 and IPv6 addresses  | 套件
 | perl-Net-IPv4Addr                  | Net::IPv4Addr Module for Perl                       | 套件
 | perl-Net-Ident                     | Lookup the username on the remote end of a TCP/IP-> | 套件
 | perl-Net-Jabber                    | Jabber Perl Library                                 | 套件
 | perl-Net-Libproxy                  | Perl bindings for libproxy                          | 套件
 | perl-Net-Netmask                   | Parse, manipulate and lookup IP network blocks      | 套件
i | perl-Net-SNMP                      | Net::SNMP Perl Module                               | 套件
 | perl-Net-SSLGlue                   | Add/extend SSL support for common perl modules      | 套件
 | perl-Net-SSLeay                    | Net::SSLeay Perl Module                             | 套件
 | perl-Net-Server                    | Net::Server - Extensible, general Perl server eng-> | 套件
 | perl-Net-Telnet                    | Net::Telnet - interact with TELNET port or other -> | 套件
 | perl-Net-Whois-RIPE                | Perl module for implementation of RIPE Whois        | 套件
 | perl-Net-XMPP                      | Collection of Perl Modules for Accessing the XMPP-> | 套件
 | perl-Net-ext                       | Network extension modules for Perl                  | 套件
 | perl-NetAddr-IP                    | Manages IPv4 and IPv6 addresses and subnets         | 套件
i | perl-NetxAP                        | Interface to the protocol family IMAP, IMSP, ACAP-> | 套件


這邊我們需要 perl-Net-Jabber 以及 perl-Net-XMPP  兩個套件

# zypper   install  perl-Net-Jabber   perl-Net-XMPP
正在載入套件庫資料...
讀取已安裝的套件...
正在解決套件相依性...

將會安裝下列新的套件:
 perl-Authen-SASL perl-IO-Socket-SSL perl-Net-Jabber perl-Net-SSLeay perl-Net-XMPP
 perl-Unicode-String perl-XML-Stream

7  新套件將被安裝.
全部下載大小: 702.0 KiB。 完成操作後,將增加 2.8 MiB 的使用。
要繼續嗎? [y/n/?] (y):   Y


將網頁上的 程式儲存為  notify_via_jabber 並修改自己的 google 帳號以及google密碼 
# vi   /usr/local/bin/notify_via_jabber

#!/usr/bin/perl -w
#
# script for nagios notify via Jabber / Google Talk Instant Messaging
#   using XMPP protocol and SASL PLAIN authentication.
#
# author: Andrew Elwell <A.Elwell@physics.gla.ac.uk>
# based on work by Thus0 <Thus0@free.fr> and  David Cox
#
# released under the terms of the GNU General Public License v2
# Copyright 2007 Andrew Elwell.

use strict;
use Net::XMPP;

## Configuration
my $username = "填入你的google.username";
my $password = "填入你的google.password";
my $resource = "nagios";
## End of configuration


my $len = scalar @ARGV;
if ($len ne 2) {
   die "Usage...\n $0 [jabberid] [message]\n";
}
my @field=split(/,/,$ARGV[0]);
#------------------------------------

# Google Talk & Jabber parameters :

my $hostname = 'talk.google.com';
my $port = 5222;
my $componentname = 'gmail.com';
my $connectiontype = 'tcpip';
my $tls = 1;

#------------------------------------

my $Connection = new Net::XMPP::Client();

# Connect to talk.google.com
my $status = $Connection->Connect(
       hostname => $hostname, port => $port,
       componentname => $componentname,
       connectiontype => $connectiontype, tls => $tls);

if (!(defined($status))) {
   print "ERROR:  XMPP connection failed.\n";
   print "        ($!)\n";
   exit(0);
}

# Change hostname
my $sid = $Connection->{SESSION}->{id};
$Connection->{STREAM}->{SIDS}->{$sid}->{hostname} = $componentname;

# Authenticate
my @result = $Connection->AuthSend(
       username => $username, password => $password,
       resource => $resource);

if ($result[0] ne "ok") {
   print "ERROR: Authorization failed: $result[0] - $result[1]\n";
   exit(0);
}

# Send messages
foreach ( @field ) {
$Connection->MessageSend(
        to       => "$_\@$componentname", 
        resource => $resource,
        subject  => "Notification",
        type     => "chat",
        body     => $ARGV[1]);
}


測試 一下傳送訊息
#perl  /usr/local/bin/notify_via_jabber  自己的google帳號  "testmesg"

接下來修改相關設定
將 notify-by-jabber 以及 host-notify-by-jabber  加入到/etc/nagios/objects/commands.cfg


# vi   /etc/nagios/objects/commands.cfg
加入 請複製參考網頁上面的設定
( 請注意 -Info: 需在同一行, 複製貼上會斷行, 另外 $SERVICEDESC$  也 會中斷)

# 'host-notify-by-jabber' command definition
define command{        command_name    
host-notify-by-jabber
       command_line   
 /usr/local/bin/notify_via_jabber $CONTACTPAGER$ "Host '$HOSTALIAS$' is $HOSTSTATE$ - Info: $HOSTOUTPUT$"
       } # 'notify-by-jabber' command definition define command{        command_name    
notify-by-jabber
       command_line    
/usr/local/bin/notify_via_jabber $CONTACTPAGER$ "$NOTIFICATIONTYPE$ $HOSTNAME$ $SERVICEDESC$ $SERVICESTATE$ $SERVICEOUTPUT$ $LONGDATETIME$"
       }


由上面的指令可以看出 notify_via_jabber 後面傳送的 Google 帳號是由 $CONTACTPAGER$ 來指定

所以我們要新增 聯絡人的 PAGER, 也就是 google 帳號

# vi  /etc/nagios/objects/contacts.cfg
請加入 pager 的設定, 就是要傳送的 google 帳號
define contact{
       contact_name                    nagiosadmin             ; Short name of user
       use                             generic-contact         ; Inherit default values from generic-contact template (defined above)
       alias                           Nagios Admin            ; Full name of user
       email                           sakana@study-area.org   
       pager                           要傳送的google帳號
       }





故我們接下來修改範本設定檔  /etc/nagios/objects/templetes.cfg

# vi /etc/nagios/objects/templates.cfg
修改 generic-contact 內容, 加入 jabber 的設定

define contact{
       name                            generic-contact         ; The name of this contact template
       service_notification_period     24x7                    ; service notifications can be sent anytime
       host_notification_period        24x7                    ; host notifications can be sent anytime
       service_notification_options    w,u,c,r,f,s             ; send notifications for all service statesents
       host_notification_options       d,u,r,f,s               ; send notifications for all host states
       service_notification_commands   notify-service-by-email,notify-by-jabber ; 加入設定
       host_notification_commands      notify-host-by-email,host-notify-by-jabber    ; 加入設定
       register                        0                       ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL CONTACT, JUST A TEMPLATE!
       }


確認設定檔是否無誤
# nagios  -v  /etc/nagios/nagios.cfg

重新啟動 nagios 使其生效
#rcnagios   restart




 

2 則留言:

匿名 提到...

您好,我有關於Nagios的問題想請教您,不知道是否可以聯絡您呢?
如果可以,這是我的E-mail:Support@twnfi.com
因為實在不知道該如何聯絡您所以才在這裡留言,如果造成您的困擾深感抱歉。

初學者 提到...

請問我要查詢各server 目前監控狀況跟設定的條件現狀, 要去那裡做查詢?有指令能叫出來嗎?感謝