Nagios配置詳解
1、nagios簡介
一、nagios基本介紹
官方網站:http://www.nagios.org/
Nagios是一款用於系統和網絡監控的應用程序。它能夠在你設定的條件下對主機和服務進行監控,在狀態變差和變好的時候給出告警信息。
二、Nagios更進一步的特徵
1.監控網絡服務(SMTP、POP三、HTTP、NNTP、PING等);
2.監控主機資源(處理器負荷、磁盤利用率等);
3.簡單地插件設計使得用戶能夠方便地擴展本身服務的檢測方法;
4.並行服務檢查機制;
5.具有定義網絡分層結構的能力,用"parent"主機定義來表達網絡主機間的關係,這種關係可被用來發現和明晰
6.當服務或主機問題產生與解決時將告警發送給聯繫人(經過EMail、短信、用戶定義方式);
7.具有定義事件句柄功能,它能夠在主機或服務的事件發生時獲取更
8.自動的日誌回滾;
9.能夠支持並實現對主機的冗餘監控;
10.可選的WEB界面用於查看當前的網絡狀態、通知和故障歷史、日誌文件等;
Nagios一般由一個主程序(Nagios)、一個插件程序(Nagios-plugins)和四個可選的ADDON(NRPE、NSCA、
NSClient++和NDOUtils)組成。Nagios的監控工做都是經過插件實現的,所以,Nagios和Nagios-plugins是服務
2、nagios監控部署
一、下載所需軟件包
Nagios主程序
1.nagios.3.2.0.tar.gz Nagios的主程序
[root@localhost~]#wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios.3.2.0.tar.gz
Nagios 的插件
[root@localhost~]#wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.13.tar.gz
Nagios代理檢測程序
[root@localhost~]#wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz
[root@UnixHot src]# ls
[root@UnixHot src]# ls
nagios-3.2.0.tar.gz nagios-plugins-1.4.13.tar.gz nrpe-2.12.tar.gz
安裝依賴包
[root@localhost~]#yum -y install httpd php gcc glibc glibc-common gd gd-devel
二、建立Nagios帳戶和組
[root@localhost~]# useradd -m nagios
[root@localhost~]#groupadd nagcmd
[root@localhost~]#usermod -a -G nagcmd nagios
[root@localhost~]#usermod -a -G nagcmd apache
三、編譯安裝Nagios
[root@localhost ~]# tar xvf nagios-3.2.0.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/nagios-3.2.0/
[root@localhost nagios-3.2.0]# ./configure --with-command-group=nagcmd --with-nagios-user=nagios --with-nagios-group=nagios
[root@localhost nagios-3.2.0]# make all
[root@localhost nagios-3.2.0]# make install
[root@localhost nagios-3.2.0]# make install-init (生成init啓動腳本)
[root@localhost nagios-3.2.0]# make install-config (生成init啓動腳本)
[root@localhost nagios-3.2.0]# make install-commandmode (設置相應的權限)
[root@localhost nagios-3.2.0]# make install-webconf (生成Apache配置文件nagios.conf)
四、爲Nagios設置web驗證密碼
[root@localhost nagios-3.2.0]# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
注:第一次添加用時要使用「-c」參數,之後再添加用戶就不需在使用「-c」。
五、設置Nagios開機啓動
[root@localhost nagios-3.2.0]# chkconfig --add nagios
[root@localhost nagios-3.2.0]# chkconfig nagios on
六、修改selinux設置
兩種方法:
(1) 直接關閉selinux
[root@localhost nagios-3.2.0]# cat /etc/sysconfig/selinux
SELINUX=disabled
[root@localhost nagios-3.2.0]# setenforce 0
(2)根據selinux提示的結果設置selinux
chcon -R -t httpd_sys_content_t /usr/local/nagios/share/
chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/
3、安裝Nagios插件Nagios-plugin
Nagios-plugin插件提供了不少監控的模版,也能夠本身手寫。
[root@localhost ~]# tar xvf nagios-plugins-1.4.14.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/nagios-plugins-1.4.14/
[root@localhost nagios-plugins-1.4.14]# ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios
[root@localhost nagios-plugins-1.4.14]# make && make install
4、安裝nrpe
第一部分是主機外監控,好比:主機是否存活,WEB服務是否正常,MySQL服務是否正常等內容,再主機外經過訪問
其端口便可得知。這些監控命令再安裝 nagios-plugins-1.4.13.tar.gz時已經生成了,再/usr/local/nagios/libexec
目錄下。
第二部分是主機內監控,好比:要監控服務器的進程、磁盤使用等功能。這些功能的實現要依靠nrpe了,nrpe的工
做模式是C/S模式,在被監控主機中,開啓nrpe監聽,當聽到監控服務器上所發出的命令,讓它檢查該服務器上的硬盤
使用信息時,它就會執行,並把信息傳回,監控服務器。
二、安裝nrpe
[root@localhost ~]# tar xvf nrpe-2.12.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/nrpe-2.12/
[root@localhost nrpe-2.12]# ./configure
[root@localhost nrpe-2.12]# make all
[root@localhost nrpe-2.12]# make install-plugin
[root@localhost nrpe-2.12]# make install-daemon
[root@localhost nrpe-2.12]# make install-daemon-config
[root@localhost nrpe-2.12]# make install-xinetd
三、配置nrpe
[root@localhost nrpe-2.12]# vim /etc/xinetd.d/nrpe
# default: on
# description: NRPE (Nagios Remote Plugin Executor)
service nrpe
{
flags = REUSE
socket_type = stream
port = 5666
wait = no
user = nagios
group = nagios
server = /usr/local/nagios/bin/nrpe
server_args = -c /usr/local/nagios/etc/nrpe.cfg --inetd
log_on_failure += USERID
disable = no
only_from = 127.0.0.1 192.168.0.10 192.168.0.9
}
在only_from 添加要監控的主機的IP地址,中間以空格隔開。
四、添加端口
[root@localhost nrpe-2.12]# vim /etc/services 最後
nrpe 5666/tcp #nrpe
五、從新啓動xinetd服務
[root@localhost nrpe-2.12]# service xinetd restart
[root@localhost nrpe-2.12]# netstat -anplt | grep 5666 | grep -v grep
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 23187/xinetd
六、修改配置文件commands.cfg加入對nrpe的支持
[root@UnixHot ~]# vi /usr/local/nagios/etc/objects/commands.cfg
#nrpe set
define command{
command_name check_nrpe
command_line /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
還可自行添加例如:
#ntp set
define command{
command_name check_ntp
command_line /usr/local/nagios/libexec/check_ntp -H $HOSTADDRESS
}
七、nrpe監控的模版
[root@localhost ~]# vim /usr/local/nagios/etc/nrpe.cfg
(默認有下面四個命令)
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
能夠添加,例如:
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
command[check_mem]=/usr/local/nagios/libexec/check_mem -w 80% -c 90%
command[check_gwapp_cm]=/usr/local/nagios/libexec/check_gwapp_cm
command[check_gwapp_cu]=/usr/local/nagios/libexec/check_gwapp_cu
command[check_gwapp_cnn]=/usr/local/nagios/libexec/check_gwapp_cnn
八、如何使用nrpe監控
在services.cfg裏面添加服務「check_command check_nrpe!check_load
」便可,例:
define service {
host_name Nagios-Server
service_description check_load
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_load
}
5、檢測主機是否存活
一、配置文件概述
若是安裝上面的步驟,安裝完成後,配置文件在安裝時放在了/usr/local/nagios/etc/目錄下
[root@localhost ~]# cd /usr/local/nagios/
[root@localhost nagios]#l1
-rw-rw-r-- 1 nagios nagios 11408 08-30 11:55 cgi.cfg (CGI配置文件)
-rw-r--r-- 1 root root 26 08-30 11:56 htpasswd.users (Apache的驗證密碼文件)
-rw-rw-r-- 1 nagios nagios 43776 08-30 11:55 nagios.cfg (主配置文件)
drwxrwxr-x 2 nagios nagios 4096 08-30 11:55 objects (對象定義文件目錄)
-rw-rw---- 1 nagios nagios 1340 08-30 11:55 resource.cfg (資源配置文件)
咱們修要修改的的是nagios.cfg 和 objects 目錄下的文件,來檢測主機是否存活。
二、主配置文件nagios.cfg的配置
主配置文件的內容不少,對於這個版本,咱們須要修改和添加的主要是對象配置文件,即:cfg_file=<file_name>
cfg_file=/usr/local/nagios/etc/objects/commands.cfg (命令定義文件)
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg (聯繫人信息定義文件)
cfg_file=/usr/local/nagios/etc/objects/contactgroups.cfg (添加此行 聯繫人組定義文件)
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg (添加此行 主機定義文件)
cfg_file=/usr/local/nagios/etc/objects/hostgroups.cfg (添加此行 主機組定義文件)
cfg_file=/usr/local/nagios/etc/objects/services.cfg (添加此行 服務定義文件)
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg (時間週期定義文件)
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
# Definitions for monitoring the local (Linux) host
#cfg_file=/usr/local/nagios/etc/objects/localhost.cfg (註釋掉此行)
三、主機定義文件的配置
[root@localhost etc]# vi objects/hosts.cfg
define host{
host_name Nagios-Server
alias Nagios Server
address 192.168.0.11
check_command check-host-alive
check_interval 5
retry_interval 1
max_check_attempts 5
check_period 24x7
process_perf_data 0
retain_nonstatus_information 0
contact_groups sagroup
notification_interval 30
notification_period 24x7
notification_options d,u,r
}
define host{
host_name Linux-Server
alias Test Server
address 192.168.0.10
check_command check-host-alive
check_interval 5
retry_interval 1
max_check_attempts 5
check_period 24x7
process_perf_data 0
retain_nonstatus_information 0
contact_groups sagroup
notification_interval 30
notification_period 24x7
notification_options d,u,r
}
define host{
host_name Win-Server
alias Test Server
address 192.168.0.9
check_command check-host-alive
check_interval 5
retry_interval 1
max_check_attempts 5
check_period 24x7
process_perf_data 0
retain_nonstatus_information 0
contact_groups sagroup
notification_interval 30
notification_period 24x7
notification_options d,u,r
}
四、主機組定義文件的配置
[root@localhost etc]# vi objects/hostgroups.cfg
define hostgroup {
hostgroup_name System-Admin
alias system Admin
members Nagios-Server,Linux-Server,Win-Server
}
在「members」後面添加以逗號分割。
五、服務定義文件的配置
[root@localhost etc]# vi objects/services.cfg
#--------------------------Nagios-Server----------------------------------#
define service {
host_name Nagios-Server
service_description check-host-alive
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check-host-alive
}
define service {
host_name Nagios-Server
service_description check-ssh
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_ssh
}
define service {
host_name Nagios-Server
service_description check_load
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_load
}
define service {
host_name Nagios-Server
service_description check_mem
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_mem
}
define service {
host_name Nagios-Server
service_description check_users
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_users
}
define service {
host_name Nagios-Server
service_description check_total_procs
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_total_procs
}
define service {
host_name Nagios-Server
service_description check_zombie_procs
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_zombie_procs
}
#--------------------------Linux-Server----------------------------------#
define service {
host_name Linux-Server
service_description check-host-alive
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check-host-alive
}
define service {
host_name Linux-Server
service_description check-ssh
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_ssh
}
define service {
host_name Linux-Server
service_description check_load
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_load
}
define service {
host_name Linux-Server
service_description check_mem
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_mem
}
define service {
host_name Linux-Server
service_description check_users
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_users
}
define service {
host_name Linux-Server
service_description check_total_procs
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_total_procs
}
define service {
host_name Linux-Server
service_description check_zombie_procs
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_zombie_procs
}
六、聯繫人定義文件配置
define contact{
contact_name nagiosadmin
use generic-contact
alias Nagios Admin
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-service-by-email 這個命令在command.cfg中定義
host_notification_commands notify-host-by-email 這個命令在command.cfg中定義
email 187101*****@139.com
}
七、聯繫組定義文件配置
[root@localhost etc]# vi objects/contactgroups.cfg
define contactgroup {
contactgroup_name sagroup
alias system administrator group
members nagiosadmin
}
八、修改目錄的全部者
[root@localhost etc]# chown -R nagios:nagios objects/
九、檢測配置文件是否正確
[root@localhost etc]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Total Warnings: 0
Total Errors: 0
若是都是0說明配置成功了,若是有錯誤,可根據提示信息查找相關錯誤。
十、啓動Nagios服務
[root@localhost etc]# service httpd start
[root@localhost etc]# service nagios start
6、Nagios監控Linux客戶端的配置
一、添加Nagios用戶
[root@localhost ~]# useradd -s /sbin/nologin nagios
二、安裝Nagios插件nagios-plugin
Nagios-plugin插件提供了不少監控的模版,也能夠本身手寫。
[root@localhost ~]# tar xvf nagios-plugins-1.4.14.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/nagios-plugins-1.4.14/
[root@localhost nagios-plugins-1.4.14]# ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios
[root@localhost nagios-plugins-1.4.14]# make && make install
三、安裝nrpe
[root@localhost ~]# tar xvf nrpe-2.12.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/nrpe-2.12/
[root@localhost nrpe-2.12]# ./configure
[root@localhost nrpe-2.12]# make all
[root@localhost nrpe-2.12]# make install-plugin
[root@localhost nrpe-2.12]# make install-daemon
[root@localhost nrpe-2.12]# make install-daemon-config
[root@localhost nrpe-2.12]# make install-xinetd
四、配置npre
[root@localhost nrpe-2.12]# vim /etc/xinetd.d/nrpe
# default: on
# description: NRPE (Nagios Remote Plugin Executor)
service nrpe
{
flags = REUSE
socket_type = stream
port = 5666
wait = no
user = nagios
group = nagios
server = /usr/local/nagios/bin/nrpe
server_args = -c /usr/local/nagios/etc/nrpe.cfg --inetd
log_on_failure += USERID
disable = no
only_from = 127.0.0.1 192.168.0.10 192.168.0.9
}
在only_from 添加監控服務器主機的IP地址。
五、添加端口
[root@localhost nrpe-2.12]# vim /etc/services 最後
nrpe 5666/tcp #nrpe
六、從新啓動xinetd服務
[root@localhost nrpe-2.12]# service xinetd restart
[root@localhost nrpe-2.12]# netstat -anplt | grep 5666 | grep -v grep
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 23187/xinetd
七、修改文件的全部者
[root@localhost ~]# chown -R nagios:nagios /usr/local/nagios
[root@localhost ~]# /etc/init.d/xinetd restart
7、Nagios監控Windows客戶端
一、監控服務器的配置
對與Nagios監控服務器不須要什麼其它的配置,添加services.cfg便可。
監控Windows 2003 Server的配置 例:
#-------------------------Win-Server----------------------------------------#
define service {
host_name Win-Server
service_description System Load
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nt!CPULOAD!-l 5,80,90
}
define service {
host_name Win-Server
service_description Memory Usage
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nt!MEMUSE!-w 80 -c 90
}
define service {
host_name Win-Server
service_description Disk-C Usage
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90
}
define service {
host_name Win-Server
service_description Disk-D Usage
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nt!USEDDISKSPACE!-l d -w 80 -c 90
}
二、監控客戶端的配置
安裝NSClient++
http://sourceforge.net/projects/nscplus/
下載後,雙擊運行便可,安裝時會提示輸入Nagios服務器的IP地址,安裝完成後選中啓動服務便可。
注:紅色方塊內填寫Nagios監控服務器的IP地址。
三、效果圖
8、nagios配置信息講解
一、Nagios主機配置
1.主機的配置:故名思議把須要監控的主機放在該文件裏,在Nagios的監控界面上就會存在這些主機,固然,還有一
些其它的設置:
define host{
host_name Nagios-Server #設置主機的名字,該名字會出如今hostgroups.cfg和services.cfg中。
alias Nagios Server #一個別名而已
address 192.168.0.11 #被監控主機的IP地址
check_command check-host-alive #檢查的命令
check_interval 1 #檢查的時間間隔
retry_interval 1
max_check_attempts 5
check_period 24x7 #檢查的時間段,通常的服務器都是7x24
process_perf_data 0
retain_nonstatus_information 0
contact_groups sagroup #設置聯繫人組,當該主機出現了報警信息,就發信息給這個組
notification_interval 10 #提醒的時間間隔,這個單位是分鐘哦,看過一些文檔寫是秒,用夠就知道了。
notification_period 24x7 #提醒的時間段
notification_options d,u,r
}
二、主機組的配置
分組是頗有必要的,能夠根據操做系統類型,功能、區域等等不少進行有效的分組,才能達到預期的目的。
define hostgroup {
hostgroup_name System-Admin #組名字,能夠根據應用調整
alias system Admin
members Nagios-Server,Linux-Server,Win-Server
}
#組成員用逗號隔開,這裏的組成員是hosts.cfg定義的「host_name」這個的值。
三、服務的配置
服務的配置是很重要的,也是配置最多的地方,對與每一個主機要監控的服務,都在這個文件中列出,
還好的是並不複雜,只需修改「host_name」、「service_description、check_command」等一些字段。
define service {
host_name Nagios-Server #主機名字,hosts.cfg中定義的
service_description check-host-alive #所監控服務的描述,至於怎麼描述合理,就只有發揮你的主
觀能動性了。
check_period 24x7 #檢查的時間段
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7 #提醒的時間段
notification_options w,u,c,r #在這四種狀況下,通知聯繫人。
check_command check-host-alive #檢查的命令,在command.cfg中定義
}
w—報警(warning)
u—未知(unkown)
c—嚴重(critical)
r—從異常狀況恢復正常
四、聯繫人的配置
聯繫人,顧名思義就是管理員了,根據值班的時間定義了。
define contact{
contact_name nagiosadmin #聯繫人的名字
alias Nagios Admin #別名
service_notification_period 24x7 #服務報警的時間段
host_notification_period 24x7 #主機報警的時間段
service_notification_options w,u,c,r #同上,就是在這四種狀況下報警。
host_notification_options d,u,r #同上。
service_notification_commands notify-service-by-email #服務報警發消息的命令,在command.cfg中定義。
host_notification_commands notify-host-by-email #主機報警發消息的命令,在command.cfg中定義。
email 187101*****@139.com #給誰發email呢。
}
五、聯繫人組配置
聯繫組,定義哪些聯繫人分爲一個組。
define contactgroup {
contactgroup_name sagroup #組名稱
alias system administrator group #組別名
members nagiosadmin #組成員
}